Did¶
Calls¶
add_key_agreement_key¶
See [Pallet::add_key_agreement_key
].
Attributes¶
Name | Type |
---|---|
new_key | DidEncryptionKey |
Python¶
call = substrate.compose_call(
'Did', 'add_key_agreement_key', {'new_key': {'X25519': '[u8; 32]'}}
)
add_service_endpoint¶
See [Pallet::add_service_endpoint
].
Attributes¶
Name | Type |
---|---|
service_endpoint | DidEndpoint<T> |
Python¶
call = substrate.compose_call(
'Did', 'add_service_endpoint', {
'service_endpoint': {
'id': 'Bytes',
'service_types': ['Bytes'],
'urls': ['Bytes'],
},
}
)
change_deposit_owner¶
See [Pallet::change_deposit_owner
].
Attributes¶
No attributes
Python¶
call = substrate.compose_call(
'Did', 'change_deposit_owner', {}
)
create¶
See [Pallet::create
].
Attributes¶
Name | Type |
---|---|
details | Box<DidCreationDetailsOf<T>> |
signature | DidSignature |
Python¶
call = substrate.compose_call(
'Did', 'create', {
'details': {
'did': 'AccountId',
'new_attestation_key': (
None,
{
'Account': 'AccountId',
'Ecdsa': '[u8; 33]',
'Ed25519': '[u8; 32]',
'Sr25519': '[u8; 32]',
},
),
'new_delegation_key': (
None,
{
'Account': 'AccountId',
'Ecdsa': '[u8; 33]',
'Ed25519': '[u8; 32]',
'Sr25519': '[u8; 32]',
},
),
'new_key_agreement_keys': 'scale_info::328',
'new_service_details': [
{
'id': 'Bytes',
'service_types': [
'Bytes',
],
'urls': ['Bytes'],
},
],
'submitter': 'AccountId',
},
'signature': {
'Ecdsa': '[u8; 65]',
'Ed25519': '[u8; 64]',
'Sr25519': '[u8; 64]',
},
}
)
create_from_account¶
See [Pallet::create_from_account
].
Attributes¶
Name | Type |
---|---|
authentication_key | DidVerificationKey<AccountIdOf<T>> |
Python¶
call = substrate.compose_call(
'Did', 'create_from_account', {
'authentication_key': {
'Account': 'AccountId',
'Ecdsa': '[u8; 33]',
'Ed25519': '[u8; 32]',
'Sr25519': '[u8; 32]',
},
}
)
delete¶
See [Pallet::delete
].
Attributes¶
Name | Type |
---|---|
endpoints_to_remove | u32 |
Python¶
call = substrate.compose_call(
'Did', 'delete', {'endpoints_to_remove': 'u32'}
)
dispatch_as¶
See [Pallet::dispatch_as
].
Attributes¶
Name | Type |
---|---|
did_identifier | DidIdentifierOf<T> |
call | Box<DidCallableOf<T>> |
Python¶
call = substrate.compose_call(
'Did', 'dispatch_as', {
'call': 'Call',
'did_identifier': 'AccountId',
}
)
reclaim_deposit¶
See [Pallet::reclaim_deposit
].
Attributes¶
Name | Type |
---|---|
did_subject | DidIdentifierOf<T> |
endpoints_to_remove | u32 |
Python¶
call = substrate.compose_call(
'Did', 'reclaim_deposit', {
'did_subject': 'AccountId',
'endpoints_to_remove': 'u32',
}
)
remove_attestation_key¶
See [Pallet::remove_attestation_key
].
Attributes¶
No attributes
Python¶
call = substrate.compose_call(
'Did', 'remove_attestation_key', {}
)
remove_delegation_key¶
See [Pallet::remove_delegation_key
].
Attributes¶
No attributes
Python¶
call = substrate.compose_call(
'Did', 'remove_delegation_key', {}
)
remove_key_agreement_key¶
See [Pallet::remove_key_agreement_key
].
Attributes¶
Name | Type |
---|---|
key_id | KeyIdOf<T> |
Python¶
call = substrate.compose_call(
'Did', 'remove_key_agreement_key', {'key_id': 'scale_info::12'}
)
remove_service_endpoint¶
See [Pallet::remove_service_endpoint
].
Attributes¶
Name | Type |
---|---|
service_id | ServiceEndpointId<T> |
Python¶
call = substrate.compose_call(
'Did', 'remove_service_endpoint', {'service_id': 'Bytes'}
)
set_attestation_key¶
See [Pallet::set_attestation_key
].
Attributes¶
Name | Type |
---|---|
new_key | DidVerificationKey<AccountIdOf<T>> |
Python¶
call = substrate.compose_call(
'Did', 'set_attestation_key', {
'new_key': {
'Account': 'AccountId',
'Ecdsa': '[u8; 33]',
'Ed25519': '[u8; 32]',
'Sr25519': '[u8; 32]',
},
}
)
set_authentication_key¶
See [Pallet::set_authentication_key
].
Attributes¶
Name | Type |
---|---|
new_key | DidVerificationKey<AccountIdOf<T>> |
Python¶
call = substrate.compose_call(
'Did', 'set_authentication_key', {
'new_key': {
'Account': 'AccountId',
'Ecdsa': '[u8; 33]',
'Ed25519': '[u8; 32]',
'Sr25519': '[u8; 32]',
},
}
)
set_delegation_key¶
See [Pallet::set_delegation_key
].
Attributes¶
Name | Type |
---|---|
new_key | DidVerificationKey<AccountIdOf<T>> |
Python¶
call = substrate.compose_call(
'Did', 'set_delegation_key', {
'new_key': {
'Account': 'AccountId',
'Ecdsa': '[u8; 33]',
'Ed25519': '[u8; 32]',
'Sr25519': '[u8; 32]',
},
}
)
submit_did_call¶
See [Pallet::submit_did_call
].
Attributes¶
Name | Type |
---|---|
did_call | Box<DidAuthorizedCallOperationOf<T>> |
signature | DidSignature |
Python¶
call = substrate.compose_call(
'Did', 'submit_did_call', {
'did_call': {
'block_number': 'u64',
'call': 'Call',
'did': 'AccountId',
'submitter': 'AccountId',
'tx_counter': 'u64',
},
'signature': {
'Ecdsa': '[u8; 65]',
'Ed25519': '[u8; 64]',
'Sr25519': '[u8; 64]',
},
}
)
update_deposit¶
See [Pallet::update_deposit
].
Attributes¶
Name | Type |
---|---|
did | DidIdentifierOf<T> |
Python¶
call = substrate.compose_call(
'Did', 'update_deposit', {'did': 'AccountId'}
)
Events¶
DidCallDispatched¶
A DID-authorised call has been executed. [DID caller, dispatch result]
Attributes¶
Name | Type | Composition |
---|---|---|
None | DidIdentifierOf<T> |
AccountId |
None | DispatchResult |
{'Ok': (), 'Err': {'Other': None, 'CannotLookup': None, 'BadOrigin': None, 'Module': {'index': 'u8', 'error': '[u8; 4]'}, 'ConsumerRemaining': None, 'NoProviders': None, 'TooManyConsumers': None, 'Token': ('FundsUnavailable', 'OnlyProvider', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported', 'CannotCreateHold', 'NotExpendable', 'Blocked'), 'Arithmetic': ('Underflow', 'Overflow', 'DivisionByZero'), 'Transactional': ('LimitReached', 'NoLayer'), 'Exhausted': None, 'Corruption': None, 'Unavailable': None, 'RootNotAllowed': None}} |
DidCreated¶
A new DID has been created. [transaction signer, DID identifier]
Attributes¶
Name | Type | Composition |
---|---|---|
None | AccountIdOf<T> |
AccountId |
None | DidIdentifierOf<T> |
AccountId |
DidDeleted¶
A DID has been deleted. [DID identifier]
Attributes¶
Name | Type | Composition |
---|---|---|
None | DidIdentifierOf<T> |
AccountId |
DidUpdated¶
A DID has been updated. [DID identifier]
Attributes¶
Name | Type | Composition |
---|---|---|
None | DidIdentifierOf<T> |
AccountId |
Storage functions¶
Did¶
DIDs stored on chain.
It maps from a DID identifier to the DID details.
Python¶
result = substrate.query(
'Did', 'Did', ['AccountId']
)
Return value¶
{
'attestation_key': (None, 'scale_info::12'),
'authentication_key': 'scale_info::12',
'delegation_key': (None, 'scale_info::12'),
'deposit': {'amount': 'u128', 'owner': 'AccountId'},
'key_agreement_keys': 'scale_info::460',
'last_tx_counter': 'u64',
'public_keys': 'scale_info::468',
}
DidBlacklist¶
The set of DIDs that have been deleted and cannot therefore be created again for security reasons.
It maps from a DID identifier to a unit tuple, for the sake of tracking DID identifiers.
Python¶
result = substrate.query(
'Did', 'DidBlacklist', ['AccountId']
)
Return value¶
()
DidEndpointsCount¶
Counter of service endpoints for each DID.
It maps from (DID identifier) to a 32-bit counter.
Python¶
result = substrate.query(
'Did', 'DidEndpointsCount', ['AccountId']
)
Return value¶
'u32'
ServiceEndpoints¶
Service endpoints associated with DIDs.
It maps from (DID identifier, service ID) to the service details.
Python¶
result = substrate.query(
'Did', 'ServiceEndpoints', ['AccountId', 'Bytes']
)
Return value¶
{'id': 'Bytes', 'service_types': ['Bytes'], 'urls': ['Bytes']}
Constants¶
BaseDeposit¶
The amount of balance that will be taken for each DID as a deposit to incentivise fair use of the on chain storage. The deposits increase by the amount of used keys and service endpoints. The deposit can be reclaimed when the DID is deleted.
Value¶
2000000000000000
Python¶
constant = substrate.get_constant('Did', 'BaseDeposit')
Fee¶
The amount of balance that will be taken for each DID as a fee to incentivise fair use of the on chain storage. The fee will not get refunded when the DID is deleted.
Value¶
50000000000000
Python¶
constant = substrate.get_constant('Did', 'Fee')
KeyDeposit¶
The amount of balance that will be taken for each added key as a deposit to incentivise fair use of the on chain storage.
Value¶
1750000000000
Python¶
constant = substrate.get_constant('Did', 'KeyDeposit')
MaxBlocksTxValidity¶
The maximum number of blocks a DID-authorized operation is considered valid after its creation.
Value¶
300
Python¶
constant = substrate.get_constant('Did', 'MaxBlocksTxValidity')
MaxNewKeyAgreementKeys¶
Maximum number of key agreement keys that can be added in a creation operation.
Value¶
10
Python¶
constant = substrate.get_constant('Did', 'MaxNewKeyAgreementKeys')
MaxNumberOfServicesPerDid¶
The maximum number of services that can be stored under a DID.
Value¶
25
Python¶
constant = substrate.get_constant('Did', 'MaxNumberOfServicesPerDid')
MaxNumberOfTypesPerService¶
The maximum number of a types description for a service endpoint.
Value¶
1
Python¶
constant = substrate.get_constant('Did', 'MaxNumberOfTypesPerService')
MaxNumberOfUrlsPerService¶
The maximum number of a URLs for a service endpoint.
Value¶
2
Python¶
constant = substrate.get_constant('Did', 'MaxNumberOfUrlsPerService')
MaxPublicKeysPerDid¶
Maximum number of total public keys which can be stored per DID key identifier. This includes the ones currently used for authentication, key agreement, attestation, and delegation.
Value¶
20
Python¶
constant = substrate.get_constant('Did', 'MaxPublicKeysPerDid')
MaxServiceIdLength¶
The maximum length of a service ID.
Value¶
50
Python¶
constant = substrate.get_constant('Did', 'MaxServiceIdLength')
MaxServiceTypeLength¶
The maximum length of a service type description.
Value¶
50
Python¶
constant = substrate.get_constant('Did', 'MaxServiceTypeLength')
MaxServiceUrlLength¶
The maximum length of a service URL.
Value¶
2000
Python¶
constant = substrate.get_constant('Did', 'MaxServiceUrlLength')
MaxTotalKeyAgreementKeys¶
Maximum number of total key agreement keys that can be stored for a DID subject.
Should be greater than MaxNewKeyAgreementKeys
.
Value¶
19
Python¶
constant = substrate.get_constant('Did', 'MaxTotalKeyAgreementKeys')
ServiceEndpointDeposit¶
The amount of balance that will be taken for each service endpoint as a deposit to incentivise fair use of the on chain storage. The deposit can be reclaimed when the service endpoint is removed or the DID deleted.
Value¶
261400000000000
Python¶
constant = substrate.get_constant('Did', 'ServiceEndpointDeposit')
Errors¶
AlreadyDeleted¶
The DID has already been previously deleted.
AlreadyExists¶
The DID with the given identifier is already present on chain.
BadDidOrigin¶
The DID call was submitted by the wrong account
Internal¶
An error that is not supposed to take place, yet it happened.
InvalidDidAuthorizationCall¶
The call had parameters that conflicted with each other or were invalid.
InvalidNonce¶
The DID operation nonce is not equal to the current DID nonce + 1.
InvalidServiceEncoding¶
One of the service endpoint details contains non-ASCII characters.
InvalidSignature¶
The DID operation signature is invalid for the payload and the verification key provided.
InvalidSignatureFormat¶
The DID operation signature is not in the format the verification key expects.
MaxKeyAgreementKeysExceeded¶
The maximum number of key agreements has been reached for the DID subject.
MaxNewKeyAgreementKeysLimitExceeded¶
A number of new key agreement keys greater than the maximum allowed has been provided.
MaxNumberOfServicesExceeded¶
The maximum number of service endpoints for a DID has been exceeded.
MaxNumberOfTypesPerServiceExceeded¶
The maximum number of types for a service endpoint has been exceeded.
MaxNumberOfUrlsPerServiceExceeded¶
The maximum number of URLs for a service endpoint has been exceeded.
MaxPublicKeysExceeded¶
The maximum number of public keys for this DID key identifier has been reached.
MaxServiceIdLengthExceeded¶
The service endpoint ID exceeded the maximum allowed length.
MaxServiceTypeLengthExceeded¶
One of the service endpoint types exceeded the maximum allowed length.
MaxServiceUrlLengthExceeded¶
One of the service endpoint URLs exceeded the maximum allowed length.
MaxStoredEndpointsCountExceeded¶
The number of service endpoints stored under the DID is larger than the number of endpoints to delete.
NotFound¶
No DID with the given identifier is present on chain.
NotOwnerOfDeposit¶
Only the owner of the deposit can reclaim its reserved balance.
ServiceAlreadyExists¶
A service with the provided ID is already present for the given DID.
ServiceNotFound¶
A service with the provided ID is not present under the given DID.
TransactionExpired¶
The block number provided in a DID-authorized operation is invalid.
UnableToPayFees¶
The origin is unable to reserve the deposit and pay the fee.
UnsupportedDidAuthorizationCall¶
The called extrinsic does not support DID authorisation.
VerificationKeyNotFound¶
One or more verification keys referenced are not stored in the set of verification keys.