Skip to content

DID Method Specification

Mohamed Abdelaziz ‬‏ edited this page Jun 25, 2026 · 1 revision

DID Method Specification: did:axiom

Back to Home | See also: Architecture Deep-Dive


Abstract

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


1. DID Syntax

Method-Specific ID Format

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

Examples

# 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

2. DID Document Structure

{
  "@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"
}

3. CRUD Operations

3.1 Create

A new DID is created by:

  1. Generating an Ed25519 keypair
  2. Computing unique-id = keccak256(publicKey + timestamp + nonce)
  3. Constructing the DID Document
  4. Publishing to IPFS → obtaining cid
  5. 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;
}

3.2 Read (Resolve)

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}

3.3 Update

DID Documents are immutable by default. Key rotation creates a new version:

  1. Build updated DID Document with new key
  2. Publish new version to IPFS
  3. Call AxiomRegistry.update(did, newCid) with signature from current key
  4. Old version retained for audit trail

3.4 Deactivate

// Marks DID as deactivated on-chain
await registry.deactivate(did, ownerSignature);
// DID Document gains: "deactivated": true

4. Key Types

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)


5. Security Considerations

  • Key compromise: Immediate rotation via update operation required
  • Replay attacks: All signed operations include nonce + timestamp
  • DID hijacking: Registry uses msg.sender validation — only controller can update
  • IPFS availability: Critical documents mirrored to Ceramic Network
  • Revocation: On-chain revocation registry checked on every resolution

6. Privacy Considerations

  • DID Documents contain no PII by design
  • serviceEndpoint URIs 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

Clone this wiki locally