This repository contains a DID resolver driver for Polkadot and Kusama on-chain identities, compatible with the DIF Universal Resolver. It allows resolution of DIDs based on Polkadot and Kusama on-chain identities.
- Resolves DIDs for both Polkadot People (
did:dot) and Kusama People (did:ksm) networks - Supports identity information including display names, legal names, email, web, and social media handles
- Compatible with W3C DID specifications
- Built with TypeScript for type safety and better developer experience
The driver can be run either as a standalone HTTP server or as part of the Universal Resolver stack.
- Node.js 20 or higher
- pnpm 8 or higher
- Install dependencies:
pnpm install- Build the project:
pnpm run build- Start the server:
pnpm run startBy default, the server will listen on port 3000.
curl -H "Accept: application/did+json" http://localhost:3000/1.0/identifiers/did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHnaExample response:
{
"didResolutionMetadata": {
"contentType": "application/did+ld+json"
},
"didDocumentMetadata": {},
"didDocument": {
"@context": [
"https://www.w3.org/ns/did/v1"
],
"id": "did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna",
"alsoKnownAs": [
"Gav",
"Dr. Gavin James Wood"
],
"verificationMethod": [
{
"id": "did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna#controller",
"type": "Ed25519VerificationKey2018",
"controller": "did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna",
"publicKeyBase58": "16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna"
}
],
"service": [
{
"id": "did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna#display",
"type": "Display",
"serviceEndpoint": "Gav"
},
{
"id": "did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna#legal",
"type": "Legal",
"serviceEndpoint": "Dr. Gavin James Wood"
},
{
"id": "did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna#email",
"type": "Email",
"serviceEndpoint": "[email protected]"
},
{
"id": "did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna#web",
"type": "Web",
"serviceEndpoint": "https://gavwood.com/"
},
{
"id": "did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna#twitter",
"type": "Twitter",
"serviceEndpoint": "@gavofyork"
},
{
"id": "did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna#github",
"type": "Github",
"serviceEndpoint": "gavofyork"
}
]
}
}curl -X GET http://localhost:3000/1.0/identifiers/did:ksm:DNAWidYc1jgbwYhUEFbdP3hwZVSv5mGZ4cnWrr9kV3DpAFu- Method Name:
dot - Method-Specific Identifier: SS58 address of the Polkadot account
- Example:
did:dot:16SDAKg9N6kKAbhgDyxBXdHEwpwHUHs2CNEiLNGeZV55qHna
- Method Name:
ksm - Method-Specific Identifier: SS58 address of the Kusama account
- Example:
did:ksm:DNAWidYc1jgbwYhUEFbdP3hwZVSv5mGZ4cnWrr9kV3DpAFu
This project is licensed under the MIT License - see the LICENSE file for details.