A series of scripts to perform many DID-related operations on any KILT blockchain.
These scripts do not perform any sort of runtime checks before the transactions are signed, which means that users must check themselves that all the pre-requisites for the given transaction to go through are in place.
Run yarn install from the project root.
This script writes a new full DID on the target KILT blockchain.
The following env variables are required:
SUBMITTER_ADDRESS: The KILT address (encoded with the KILT network prefix38) that is authorized to submit the transaction.
The following optional env variables can be passed:
WS_ADDRESS: The endpoint address. Defaults towss://spiritnet.kilt.io.
Additionally, depending on the use case, the following combination of variables can be passed to this script:
DID_MNEMONICfor the OPTIONAL base DID mnemonic (if none is provided, a default one will be generated),AUTH_DERIVATION_PATHfor the REQUIRED derivation path of the authentication key from the base mnemonic,ATT_DERIVATION_PATHfor the OPTIONAL derivation path of the assertion method key (if none is provided, no assertion method key will be added to the DID),DEL_DERIVATION_PATHfor the OPTIONAL derivation path of the capability delegation key, which follows the same logic as the assertion method key.- No
DID_MNEMONIC, but a REQUIREDAUTH_MNEMONICfor the mnemonic of the authentication key, an OPTIONALATT_MNEMONICfor the mnemonic of the assertion method key, and an OPTIONALDEL_MNEMONICfor the mnemonic of the capability delegation key. As with point 1, ifATT_MNEMONICand/orDEL_MNEMONICare not provided, the resulting DID will not have those keys set.
For each key, an optional key type can be specified, i.e., AUTH_KEY_TYPE, ATT_KEY_TYPE, and DEL_KEY_TYPE. Each of them defaults to the sr25519 key type.
In practice, use case 1 is useful for those that still don't have a mnemonic or that derive all keys from a single mnemonic, which could either be generated on-the-fly (and stored), or provided with the DID_MNEMONIC variable.
Use case 2 is only useful in those cases where each key has its own mnemonic.
To run this script, execute yarn did-create, save the DID mnemonic that is printed on the console, and then copy the HEX-encoded operation to be submitted via PolkadotJS Apps in Developer > Extrinsics > Decode, using the account specified in SUBMITTER_ADDRESS.
This script signs any valid HEX-encoded call with the right key re-generated from the provided seedling information, i.e., either with the provided mnemonic, or with the provided combination of base mnemonic and derivation path.
Valid HEX-encoded calls can be generated by interacting with PolkadotJS Apps under the Developer > Extrinsics menu.
Once the right call (i.e., the right pallet and right method) with the right parameters has been specified, the HEX-encoded value under encoded call data can be copied and passed as parameter to this script.
The following env variables are required:
SUBMITTER_ADDRESS: The KILT address (encoded with the KILT network prefix38) that is authorized to submit the transaction.ENCODED_CALL: The HEX-encoded call to DID-sign.DID_URI: The URI of the DID authorizing the operation
The following optional env variables can be passed:
WS_ADDRESS: The endpoint address. Defaults towss://spiritnet.kilt.io.
As with DID creation, there is no strong requirement on what other variables must be set. Depending on the expected key to be used to sign the call, the right mnemonic or the right base mnemonic + derivation path must be provided.
For instance, if a call requires a DID authentication key, either AUTH_MNEMONIC or DID_MNEMONIC and AUTH_DERIVATION_PATH must be specified.
If a call requires a DID assertion method key, either ATT_MNEMONIC or DID_MNEMONIC and ATT_DERIVATION_PATH must be specified.
To run this script, execute yarn call-authorize and then copy the HEX-encoded operation to be submitted via PolkadotJS Apps in Developer > Extrinsics > Decode, using the account specified in SUBMITTER_ADDRESS.
This script signs any valid HEX-encoded call of any other parachain with the right key re-generated from the provided seedling information, i.e., either with the provided mnemonic, or with the provided combination of base mnemonic and derivation path.
Valid HEX-encoded calls can be generated by interacting with PolkadotJS Apps under the Developer > Extrinsics menu.
Once the right call (i.e., the right pallet and right method) with the right parameters has been specified, the HEX-encoded value under encoded call data can be copied and passed as parameter to this script.
The following env variables are required:
RELAY_WS_ADDRESS: The endpoint address of the relaychain.PROVIDER_WS_ADDRESS: The endpoint address of the DIP provider chain.CONSUMER_WS_ADDRESS: The endpoint address of the consumer chain on which DIP is to be used.SUBMITTER_ADDRESS: The address (encoded with the target chain network prefix38) that is authorized to submit the transaction on the target chain.ENCODED_CALL: The HEX-encoded call to DID-sign.DID_URI: The URI of the DID authorizing the operationVERIFICATION_METHOD: The verification method of the DID key to use. Because this script is not able to automatically derive the DID key required to sign the call on the target chain, it has to be explicitely set with this variable. Example values areauthentication,assertionMethod, andcapabilityDelegation.
The following optional env variables can be passed:
IDENTITY_DETAILS: The runtime type definition of the identity details stored on the consumer chain, according to the DIP protocol. It defaults toOption<u128>, which represents a simple (optional) nonce value.ACCOUNT_ID: The runtime type definition of account address on the consumer chain. It defaults toAccountId32, which is the default of most Substrate-based chains. Some chains might useAccountId20.INCLUDE_WEB3NAME: Wether the web3name of the DID should be added to the DIP proof of not. Values can be anything that is truthy in JS terms. It defaults tofalse. The proof generation will fail if this value istruebut the DID does not have a web3name.DIP_PROOF_VERSION: The version of the DIP proof to generate and use as part of the extrinsic. It defaults to0.
As with DID creation, there is no strong requirement on what other variables must be set. Depending on the expected key to be used to sign the call, the right mnemonic or the right base mnemonic + derivation path must be provided.
For instance, if a call requires a DID authentication key, either AUTH_MNEMONIC or DID_MNEMONIC and AUTH_DERIVATION_PATH must be specified.
If a call requires a DID assertion method key, either ATT_MNEMONIC or DID_MNEMONIC and ATT_DERIVATION_PATH must be specified.
To run this script, execute yarn dip-sign:sibling and then copy the generated signature and block number to be submitted via PolkadotJS Apps as part of the DIP tx submission process, using the account specified in SUBMITTER_ADDRESS.
This script signs any valid HEX-encoded call of the parent relaychain with the right key re-generated from the provided seedling information, i.e., either with the provided mnemonic, or with the provided combination of base mnemonic and derivation path.
Valid HEX-encoded calls can be generated by interacting with PolkadotJS Apps under the Developer > Extrinsics menu.
Once the right call (i.e., the right pallet and right method) with the right parameters has been specified, the HEX-encoded value under encoded call data can be copied and passed as parameter to this script.
The following env variables are required:
RELAY_WS_ADDRESS: The endpoint address of the relaychain.PROVIDER_WS_ADDRESS: The endpoint address of the DIP provider chain.SUBMITTER_ADDRESS: The address (encoded with the target chain network prefix38) that is authorized to submit the transaction on the target chain.ENCODED_CALL: The HEX-encoded call to DID-sign.DID_URI: The URI of the DID authorizing the operationVERIFICATION_METHOD: The verification method of the DID key to use. Because this script is not able to automatically derive the DID key required to sign the call on the target chain, it has to be explicitely set with this variable. Example values areauthentication,assertionMethod, andcapabilityDelegation.
The following optional env variables can be passed:
IDENTITY_DETAILS: The runtime type definition of the identity details stored on the consumer chain, according to the DIP protocol. It defaults toOption<u128>, which represents a simple (optional) nonce value.ACCOUNT_ID: The runtime type definition of account address on the consumer chain. It defaults toAccountId32, which is the default of most Substrate-based chains. Some chains might useAccountId20.INCLUDE_WEB3NAME: Wether the web3name of the DID should be added to the DIP proof of not. Values can be anything that is truthy in JS terms. It defaults tofalse. The proof generation will fail if this value istruebut the DID does not have a web3name.DIP_PROOF_VERSION: The version of the DIP proof to generate and use as part of the extrinsic. It defaults to0.
As with DID creation, there is no strong requirement on what other variables must be set. Depending on the expected key to be used to sign the call, the right mnemonic or the right base mnemonic + derivation path must be provided.
For instance, if a call requires a DID authentication key, either AUTH_MNEMONIC or DID_MNEMONIC and AUTH_DERIVATION_PATH must be specified.
If a call requires a DID assertion method key, either ATT_MNEMONIC or DID_MNEMONIC and ATT_DERIVATION_PATH must be specified.
To run this script, execute yarn dip-sign:parent and then copy the generated signature and block number to be submitted via PolkadotJS Apps as part of the DIP tx submission process, using the account specified in SUBMITTER_ADDRESS.
The following env variables are required:
SUBMITTER_ADDRESS: The KILT address (encoded with the KILT network prefix38) that is authorized to submit the transaction.DID_URI: The URI of the DID authorizing the operation
The following optional env variables can be passed:
WS_ADDRESS: The endpoint address. Defaults towss://spiritnet.kilt.io.
There are scripts to change each of the keys of a DID, that require some additional variables to be specified:
yarn auth-key-setchanges the current DID authentication key with the new one derived from eitherNEW_AUTH_MNEMONICorDID_MNEMONICandNEW_AUTH_DERIVATION_PATHyarn att-key-setchanges the current DID assertion method key with a new one derived from eitherATT_MNEMONICorDID_MNEMONICandATT_DERIVATION_PATHyarn del-key-setchanges the current DID capability delegation key with a new one derived from eitherDEL_MNEMONICorDID_MNEMONICandDEL_DERIVATION_PATH
Since all operations require a DID signature generated from the current authentication key, AUTH_MNEMONIC or DID_MNEMONIC and AUTH_DERIVATION_PATH must still be specified to re-construct the key required to sign the operation.
