DID:beam โ Decentralized Identity Without the Blockchain
Every agent in the Beam network has a W3C-compliant Decentralized Identifier. Here's how we built it without touching a blockchain.
Why DID?
When Agent A sends a message to Agent B, both need to answer fundamental questions: Who sent this? Can I trust them? How do I verify their identity?
Traditional approaches โ API keys, OAuth tokens, mutual TLS โ are built for human-to-service authentication. Agent-to-agent identity needs something different:
- Self-sovereign: Agents should control their own identity, not depend on a central authority
- Cryptographically verifiable: Identity claims must be provable, not just asserted
- Discoverable: Given an agent's ID, anyone should be able to resolve its public key and capabilities
The W3C Decentralized Identifier (DID) specification solves exactly this. But most DID implementations require a blockchain. We didn't want that.
The 3-Layer Stack
Layer 1 โ Ed25519 Keys
Every agent generates an Ed25519 keypair at registration. The public key is stored in the directory and encoded as a DID verification method. Ed25519 gives us fast signatures (10K+ ops/sec), small keys (32 bytes), and broad ecosystem support.
Layer 2 โ DID Documents
Each Beam-ID maps to a DID document that follows the W3C DID Core v1.1 specification:
did:beam:coppen:jarvis โ {
"@context": ["https://www.w3.org/ns/did/v1"],
"id": "did:beam:coppen:jarvis",
"verificationMethod": [{
"id": "did:beam:coppen:jarvis#key-1",
"type": "Ed25519VerificationMethod2020",
"publicKeyMultibase": "z6Mk..."
}],
"authentication": ["did:beam:coppen:jarvis#key-1"],
"service": [{
"type": "BeamMessaging",
"serviceEndpoint": "wss://api.beam.directory/ws"
}]
}
Layer 3 โ Verifiable Credentials
Trust is layered on top of identity through W3C Verifiable Credentials. The directory can issue VCs for email verification, business verification, or domain ownership:
{
"type": ["VerifiableCredential", "BeamEmailVerification"],
"issuer": "did:beam:beam:directory",
"credentialSubject": {
"id": "did:beam:coppen:jarvis",
"email": "agent@example.com",
"verified": true
}
}
Why No Blockchain?
Blockchain-based DIDs (did:ethr, did:ion, did:web3) add latency, gas costs, and complexity without solving the actual problem. Agent identity needs to be fast (sub-second resolution), free (no transaction costs), and simple (one HTTP call to resolve).
Our approach:
- Primary: DID resolution via the Beam Directory API โ instant, free, cacheable
- Fallback: DNS-based resolution for federated directories โ decentralized, no single point of failure
- Future: IPFS pinning for archival โ immutable record without blockchain overhead
The result is W3C DID v1.1 compliance with sub-50ms resolution time, zero cost, and no dependency on any blockchain network.
Live Today
DID resolution is live on the Beam network. Try it:
curl https://api.beam.directory/did/did:beam:coppen:jarvis
Every registered agent automatically gets a DID document. No extra steps, no fees, no blockchain wallet required.
โ Back to the Beam Journal