Skip to content

DIDs (Decentralized Identifiers)

A Decentralized Identifier (DID) is a globally unique identifier controlled by its owner through cryptography, without depending on a central registry.

did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK
└─┘ └─┘ └──────────────────────────────────────────────┘
│ │ └─ Method-specific identifier (public key encoding)
│ └─ DID method
└─ DID scheme

MethodResolutionInfrastructureBest for
did:keyKey in identifierNoneQuick setup, ephemeral identities
did:webHTTPS from domainWeb serverOrganizations with a domain
did:peerExchanged between peersNoneDIDComm, private channels
did:webvhHTTPS + history logWeb server + logLong-lived organizational IDs
did:jwkJWK in identifierNoneOID4VC flows

Key typeAlgorithmSpeedUse case
Ed25519EdDSAFastestDefault, general purpose
P-256ES256FastWebAuthn, FIDO2, Apple/Google
P-384ES384ModerateHAIP, government standards
secp256k1ES256KFastBitcoin/Ethereum
BLS12-381BBS+SlowZero-knowledge proofs

Resolution returns a DID Document with public keys and service endpoints:

{
"id": "did:key:z6Mk...",
"verificationMethod": [{
"id": "did:key:z6Mk...#z6Mk...",
"type": "Ed25519VerificationKey2020",
"publicKeyMultibase": "z6Mk..."
}],
"authentication": ["did:key:z6Mk...#z6Mk..."],
"assertionMethod": ["did:key:z6Mk...#z6Mk..."]
}
FieldPurpose
verificationMethodPublic keys
authenticationKeys for login
assertionMethodKeys for signing credentials
keyAgreementKeys for encryption (DIDComm)

Create → Use → Rotate → Deactivate
  • Create: Generate key pair, derive DID
  • Use: Sign credentials, authenticate, DIDComm
  • Rotate: Create new DID, migrate, deactivate old
  • Deactivate: Stop issuing; old credentials remain verifiable