@donhuanvn96/substrate-did-resolver

0.1.2 • Public • Published

Substrate DID Resolver

(This implementation is strongly referred to the ethr-did-resolver).

This library is intended to use ethereum addresses or secp256k1 publicKeys as fully self-managed Decentralized Identifiers and wrap them in a DID Document

It supports the proposed Decentralized Identifiers spec from the W3C Credentials Community Group.

It requires the did-resolver library, which is the primary interface for resolving DIDs.

This DID method relies on the pallet-did.

Setup example:

const { Resolver } = require('did-resolver')
const { getResolver } = require('@donhuanvn96/substrate-did-resolver')

const main = async () => {
  const providerConfig = {
    wsUrl: "ws://127.0.0.1:9944"
  }
  
  const substrateDidResolver = await getResolver(providerConfig)
  const didResolver = new Resolver(substrateDidResolver)

  const doc = await didResolver.resolve('did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY')
  console.log(JSON.stringify(doc, null, 4))
  
  process.exit(0)
}

main().then(() => console.log('completed!'))

Output example:

{
    "didDocumentMetadata": {
        "deactivated": false,
        "versionMeta": {},
        "versionMetaNext": {}
    },
    "didResolutionMetadata": {
        "contentType": "application/did+ld+json"
    },
    "didDocument": {
        "@context": [
            "https://www.w3.org/ns/did/v1",
            "https://w3id.org/security/suites/ed25519-2018/v1",
            "https://w3id.org/security/suites/secp256k1recovery-2020/v2",
            "https://w3id.org/security/suites/x25519-2019/v1"
        ],
        "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
        "verificationMethod": [
            {
                "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#controller",
                "type": "Ed25519VerificationKey2018",
                "controller": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
                "blockchainAccountId": "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY"
            },
            {
                "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-1",
                "type": "Ed25519VerificationKey2018",
                "controler": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
                "blockchainAccountId": "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY"
            },
            {
                "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-2",
                "type": "Ed25519VerificationKey2018",
                "controler": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
                "blockchainAccountId": "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY"
            },
            {
                "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-3",
                "type": "EcdsaSecp256k1RecoveryMethod2020",
                "controler": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
                "publicKeyBase58": "4Fwn759SGcdwkC1Pa59VFVNfhfKbFFsijuLUQenM2c9V"
            },
            {
                "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-4",
                "type": "Ed25519VerificationKey2018",
                "controler": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
                "publicKeyHex": "0x90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22"
            },
            {
                "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-5",
                "type": "Ed25519VerificationKey2018",
                "controler": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
                "publicKeyBase58": "5EAQWHMWtaUwj1VRvYx7NQo2LXr14kUgHsG3TFKSaXYcjk28"
            },
            {
                "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-6",
                "type": "X25519KeyAgreementKey2019",
                "controler": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
                "publicKeyHex": "0x306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20"
            }
        ],
        "authentication": [
            "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#controller",
            "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-1",
            "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-3",
            "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-4",
            "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-5"
        ],
        "assertionMethod": [
            "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#controller"
        ],
        "service": [
            {
                "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#service-1",
                "type": "loragateway",
                "serviceEndpoint": "https://lora.hcmut.io"
            },
            {
                "id": "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#service-2",
                "type": "securitycamera",
                "serviceEndpoint": "https://camera.hcmut.io"
            }
        ],
        "keyAgreement": [
            "did:substrate:5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY#delegate-6"
        ]
    }
}

Readme

Keywords

none

Package Sidebar

Install

npm i @donhuanvn96/substrate-did-resolver

Weekly Downloads

0

Version

0.1.2

License

ISC

Unpacked Size

17.2 kB

Total Files

5

Last publish

Collaborators

  • donhuanvn96