-
-
Notifications
You must be signed in to change notification settings - Fork 6
DID Method Specification
Mohamed Abdelaziz edited this page Jun 25, 2026
·
1 revision
Back to Home | See also: Architecture Deep-Dive
This document specifies the did:axiom DID method, a W3C DID Core-compliant decentralized identifier method designed for AI agents, humans, and automated systems operating in federated trust networks.
Method Name: axiom
Status: Draft v0.1
Conformance: W3C DID Core 1.0
did-axiom = "did:axiom:" axiom-specific-id
axiom-specific-id = network-prefix ":" entity-type ":" unique-id
network-prefix = "eth" / "poly" / "sol"
entity-type = "agent" / "human" / "system"
unique-id = 32*64HEXDIG# Ethereum-anchored AI agent
did:axiom:eth:agent:a3f2c8b4d1e9f0a7b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5
# Polygon-anchored human
did:axiom:poly:human:7b9e2f4a8c1d5e0f3a6b9c2d5e8f1a4b7c0d3e6f9a2b5c8d1e4f7a0b3c6d9e2
# Solana-anchored system
did:axiom:sol:system:1a4b7c0d3e6f9a2b5c8d1e4f7a0b3c6d9e2f5a8b1c4d7e0f3a6b9c2d5e8f1a4
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://axiomid.dev/contexts/v1"
],
"id": "did:axiom:eth:agent:a3f2c8b4...",
"controller": "did:axiom:eth:human:7b9e2f4a...",
"verificationMethod": [
{
"id": "did:axiom:eth:agent:a3f2c8b4...#key-1",
"type": "Ed25519VerificationKey2020",
"controller": "did:axiom:eth:agent:a3f2c8b4...",
"publicKeyMultibase": "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
}
],
"authentication": [
"did:axiom:eth:agent:a3f2c8b4...#key-1"
],
"assertionMethod": [
"did:axiom:eth:agent:a3f2c8b4...#key-1"
],
"service": [
{
"id": "did:axiom:eth:agent:a3f2c8b4...#axiom-endpoint",
"type": "AxiomIdentityService",
"serviceEndpoint": "https://api.axiomid.dev/agent/a3f2c8b4"
}
],
"axiom:trustScore": 742,
"axiom:entityType": "agent",
"axiom:network": "eth",
"axiom:createdAt": "2026-01-15T10:30:00Z"
}A new DID is created by:
- Generating an Ed25519 keypair
- Computing
unique-id = keccak256(publicKey + timestamp + nonce) - Constructing the DID Document
- Publishing to IPFS → obtaining
cid - Calling
AxiomRegistry.register(did, cid)on-chain
async function createDID(entityType: EntityType, network: Network): Promise<DIDDocument> {
const keypair = await generateEd25519KeyPair();
const uniqueId = keccak256(keypair.publicKey + Date.now() + randomNonce());
const did = `did:axiom:${network}:${entityType}:${uniqueId}`;
const document = buildDIDDocument(did, keypair);
const cid = await ipfs.add(JSON.stringify(document));
await registry.register(did, cid.toString());
return document;
}Resolution follows a cache-first strategy:
Resolution Order:
1. In-memory cache (TTL: 5 min)
2. Redis cache (TTL: 1 hour)
3. IPFS (via CID from on-chain registry)
4. On-chain registry direct call
Resolution endpoint:
GET https://resolver.axiomid.dev/1.0/identifiers/{did}
DID Documents are immutable by default. Key rotation creates a new version:
- Build updated DID Document with new key
- Publish new version to IPFS
- Call
AxiomRegistry.update(did, newCid)with signature from current key - Old version retained for audit trail
// Marks DID as deactivated on-chain
await registry.deactivate(did, ownerSignature);
// DID Document gains: "deactivated": true| Key Type | Usage | Curve |
|---|---|---|
Ed25519VerificationKey2020 |
Authentication, Assertion | Ed25519 |
EcdsaSecp256k1VerificationKey2019 |
Ethereum-compatible ops | secp256k1 |
JsonWebKey2020 |
General purpose | P-256 / P-384 |
Default: Ed25519 (recommended for performance)
-
Key compromise: Immediate rotation via
updateoperation required -
Replay attacks: All signed operations include
nonce+timestamp -
DID hijacking: Registry uses
msg.sendervalidation — only controller can update - IPFS availability: Critical documents mirrored to Ceramic Network
- Revocation: On-chain revocation registry checked on every resolution
- DID Documents contain no PII by design
-
serviceEndpointURIs must not leak identifying information - Agents should use pairwise DIDs for different relying parties
- Trust score is stored separately, not embedded in the DID Document
→ Next: Trust Score Algorithm