Decentralized Identity
Self-sovereign identity, verifiable credentials, DIDs, and identity management.
Overview
DIDs enable user-controlled digital identity.
DID Document
{
"@context": "https://www.w3.org/ns/did/v1",
"id": "did:example:123456789abcdefghi",
"authentication": [{
"id": "did:example:123456789abcdefghi#key-1",
"type": "Ed25519VerificationKey2018",
"controller": "did:example:123456789abcdefghi",
"publicKeyBase58": "H3C2AVvLMv6gmMNam3uVA..."
}]
}
DID Methods
| Method | Description |
|---|---|
| did:ethr | Ethereum-based |
| did:web | Web domain |
| did:key | Static key |
| did:ion | Bitcoin (ION) |
Verifiable Credentials
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"type": ["VerifiableCredential", "EducationCredential"],
"issuer": "did:example:issuer123",
"issuanceDate": "2024-01-15T00:00:00Z",
"credentialSubject": {
"id": "did:example:subject456",
"degree": "Computer Science"
},
"proof": {
"type": "Ed25519Signature2018",
"created": "2024-01-15T00:00:00Z",
"verificationMethod": "did:example:issuer123#key-1"
}
}
Smart Contract DID Registry
contract DIDRegistry {
mapping(address => bytes32) public dids;
mapping(address => mapping(string => bool)) public delegates;
function registerDID(bytes32 did) public {
dids[msg.sender] = did;
}
function addDelegate(address delegate) public {
delegates[msg.sender][delegate] = true;
}
}
Best Practices
- User control — Self-sovereign
- Privacy — Minimal disclosure
- Interoperability — W3C standards
- Security — Key management
Practice
Implement a simple DID registry on Ethereum.