archon

did:cid Technical Presentation

Checklist

Audience

This deck is for engineers, architects, and technical product leaders who already understand public-key cryptography, content addressing, distributed systems, or decentralized identity at a high level. The goal is to make the did:cid method concrete enough that they can reason about its security model and implementation trade-offs.

Core Message

did:cid separates identity creation from identity mutation.

Creation is instant and free because the DID is derived from the CID of a canonicalized create operation stored in IPFS. Updates are ordered and confirmed by a registry selected at creation time, such as hyperswarm for fast peer gossip or Bitcoin registries for stronger finality. Resolution reconstructs the current or historical DID document by combining the immutable IPFS seed with valid registry events.

Suggested Slide Outline

1. Title

did:cid: Content-addressed decentralized identifiers

Speaker note: Introduce did:cid as the DID method implemented by Archon. The technical thesis is simple: identifiers can be self-certifying at creation while still supporting mutable, verifiable identity history.

2. The DID Problem

Speaker note: Most DID methods pay the same cost for every lifecycle stage. did:cid treats creation and updates as different distributed-systems problems.

3. The Main Design Split

Lifecycle stage Requirement did:cid mechanism
Create Fast, free, decentralized Canonical JSON operation pinned to IPFS; CID becomes DID suffix
Update Ordered, auditable, replay-resistant Signed operation anchored to selected registry
Resolve Deterministic reconstruction Seed + ordered valid updates
Verify Historical key correctness Resolve signer at proof.created

Speaker note: The important move is avoiding a blockchain write for the initial identity. The initial DID is a content address, so the identifier itself commits to the creation operation.

4. DID Format

did:cid:<cid>[;service][/path][?query][#fragment]

Example:

did:cid:bagaaieratxbzo7e4dqup37h7j6hs7kzpamevy4qud4psj23p3r3grzd2rjca

Key properties:

Speaker note: The suffix is not an arbitrary identifier. It is a content identifier for the canonicalized create operation.

5. Two DID Subject Types

Type Has keys? Controlled by Typical uses
Agent Yes Its own private key holder users, services, issuers, verifiers, nodes
Asset No A controller agent DID credentials, schemas, files, groups, challenges, responses

Speaker note: This is an important modeling choice. Not everything needs to sign. Assets are addressable, resolvable, and controllable without pretending every object is an autonomous principal.

6. Agent DID Creation

Create operation ingredients:

Node behavior:

Speaker note: For an agent create operation, the proof uses #key-1 as a relative verification method because the DID does not exist until after the CID is computed.

7. Asset DID Creation

Asset create operation ingredients:

Node behavior:

Speaker note: Asset DIDs make credentials, schemas, group definitions, vault metadata, and similar objects first-class identity-layer objects.

8. Updates

Update operation ingredients:

Validation checks:

Speaker note: previd gives each update a parent. The registry gives ordering and confirmation. Together, they make replay and fork handling explicit.

9. Delete / Revocation

Delete is a terminal update:

Resolution after revocation:

Speaker note: Revocation is intentionally final. If you need recoverability, solve key recovery before deletion, not after deletion.

10. Resolution Algorithm

Pseudocode:

resolve(did, versionTime = now):
  cid = suffix(did)
  seed = ipfs.get(cid)
  registry = seed.registration.registry
  events = registry_events_for(did, registry)
  doc = document_from_seed(seed)

  for event in chronological(events):
    if event.time > versionTime:
      break
    if valid_proof(event, doc) and valid_previd(event, doc):
      doc = apply(event, doc)

  return doc

Speaker note: Resolution is deterministic reconstruction, not a database lookup of the latest blob. A resolver can answer “what is true now?” and “what was true then?”

11. Temporal Proof Verification

When verifying a signed object:

verifyProof(object):
  signerDid = proof.verificationMethod.did
  signerDoc = resolve(signerDid, versionTime = proof.created)
  publicKey = signerDoc.verificationMethod[keyId]
  verify signature with publicKey

Why it matters:

Speaker note: This is the security detail worth slowing down for. The verifier must resolve the signer at the proof time, not only at the current time.

12. Registries

Registry Strength Latency Cost Best fit
local Local-only Immediate Free development, isolated testing
hyperswarm Peer-distributed eventual consistency Seconds Free fast P2P environments
BTC:signet / BTC:testnet4 Blockchain-style ordering for test networks Block cadence Test funds staging and protocol tests
BTC:mainnet Bitcoin-anchored ordering and timestamping Block cadence Batch fee high-value updates

Speaker note: did:cid does not make every identity pay for maximum finality. The registry is selected based on the risk and cost profile.

13. Archon Node Architecture

Core services:

Speaker note: Gatekeeper is the protocol enforcement point. Keymaster is the private-key boundary. Mediators are how registry-specific networking stays modular.

14. Demo Flow

Minimal technical demo:

./archon create-id --registry hyperswarm alice
./archon resolve-id
./archon create-schema --registry hyperswarm ./schema.json
./archon rotate-keys
./archon backup-wallet-did

Alternative API-level demo:

POST /api/v1/did/generate  -> deterministic DID preview
POST /api/v1/did           -> create/update/delete operation
GET  /api/v1/did/:did      -> resolution
GET  /api/v1/registries    -> supported registries

Speaker note: Pick one path. CLI demos are easier for flow; API demos are better if the audience wants implementation details.

15. Security Model

Security relies on:

Speaker note: This is where to be precise: IPFS gives content integrity and retrieval; registries give update ordering and finality; signatures give controller authorization.

16. Trade-offs

Strengths:

Trade-offs:

Speaker note: This is not magic decentralization dust. The value is that each responsibility is assigned to a mechanism with suitable properties.

17. Comparison

Method family Creation cost Updates Availability model
did:key Free None / immutable Embedded key material
did:web Cheap Web server / DNS / TLS Domain control
blockchain DID methods Transaction cost On-chain or layer-specific Chain availability
did:cid Free via IPFS CID Pluggable registry IPFS seed + registry history

Speaker note: The useful contrast is not “which method wins everywhere.” It is where each method puts trust, cost, and mutability.

18. Closing

Takeaways:

Speaker note: End with the architectural sentence: did:cid is a DID method where creation is a content-addressed fact and updates are a registry-ordered history.

Appendix: Terminology

Source Material