Identity (DID)
When to Use
- Creating or resolving Decentralized Identifiers (DIDs)
- Issuing/verifying Verifiable Credentials (VCs)
- Registering or resolving ENS names
- Implementing ZK-KYC (prove eligibility without revealing PII)
- Working with on-chain attestations (EAS, Verax)
Prerequisites
- MCP:
blockchain-rpc-server,compliance-screening-server - Skill-09 for KYC/regulatory context
Workflow
1. DID Methods
| Method | Format | Chain |
|---|---|---|
did:ethr |
did:ethr:0x... |
Ethereum |
did:pkh |
did:pkh:eip155:1:0x... |
Multi-chain |
did:ion |
Sidetree on Bitcoin | Bitcoin L2 |
did:web |
HTTPS-hosted | Off-chain |
Create DID document with verification methods (public keys) and service endpoints.
2. Verifiable Credentials
Issuer → signs VC → Holder stores → Verifier requests proof
- Use W3C VC Data Model v2
- Sign with
EthereumEip712Signature2021orEd25519Signature2020 - Verify: check signature, revocation status, schema compliance
3. ENS
- Resolve:
eth_resolver.resolve(name, data) - Register via ETH Registrar Controller
- Set records: address, text (email, url, avatar), contenthash (IPFS)
- Reverse resolution: set
addr.reverserecord
4. ZK-KYC
Prove attributes without revealing identity:
- User completes KYC with issuer off-chain
- Issuer provides signed credential or Semaphore identity
- User generates ZK proof of membership/eligibility
- Verifier checks proof on-chain (no PII exposed)
Protocols: Polygon ID, World ID, Semaphore, Sismo
5. On-Chain Attestations
Ethereum Attestation Service (EAS):
eas.attest(AttestationRequest({
schema: schemaUID,
data: AttestationRequestData({ recipient, expirationTime, revocable, refUID, data, value })
}));
Use for reputation, KYC status, guild membership, and compliance proofs.
Privacy Rules
- Never store PII on-chain
- Minimize credential disclosure (selective disclosure proofs)
- Honor GDPR right-to-erasure for off-chain identity data
References
references/did-methods.mdreferences/eas-schemas.md