anuna
did:crdt · near-zero-cost decentralised identity

Identity that costs almost nothing to keep current.

Create an identity, rotate its keys, and update its services for the marginal cost of ordinary local compute and bandwidth. No transaction fee. No validator fleet. No sequencer. No confirmation wait. Signed updates converge without a global total order, even after working offline.

No per-update protocol fee Rust · WASM-compatible core · Iroh gossip MIT or Apache-2.0 · experimental Accepted at IEEE DAPPS 2026
DID documentconverged
did:crdt:7f3a…91c2
verificationMethodkey-2
servicevhf-7
deactivatedfalse
genesissigned delta DAG
No feeCreate, rotate, or updateNo on-chain transaction to buy
No fleetConsensus infrastructureNo validators or sequencer to operate
No waitApply locally, sync laterA partition defers sharing, not the update

Near-zero marginal protocol cost; storage, compute, and bandwidth still apply.

Identity without transaction fees or coordination rent.

A DID document names public keys, authentication relationships, and service endpoints. Other methods pay for an agreed order whenever that document changes. did:crdt turns the change into a small signed fact that replicas merge themselves.

did:key · did:peer

Freeze the document.

Lightweight and local, but there is no general update mechanism once the identifier exists.

no key rotation or document updates
did:ethr · Sidetree

Order updates on a ledger.

A chain or anchored log decides which mutation came first and gives the history finality.

fees, latency, chain dependency
KERI · did:webvh

Maintain one ordered log.

A single causal history makes updates legible, but partitioned writers cannot advance it independently.

no concurrent partitioned updates

One identity. Two disconnected sites.

During disaster recovery, the places that most need a shared identity document may be the least able to reach a ledger, leader, or each other. did:crdt lets each authorised site record local facts now and reconcile when contact returns.

Site A · incident commandoffline

Register a radio service.

The incident commander signs a service update against the shared DID while the site is partitioned.

Add service endpoint · vhf-7
reconnectanti-entropy
Site B · field hospitaloffline

Rotate a lost key.

The field hospital signs a key revocation and replacement without waiting for Site A to come online.

Revoke key-1 · add key-2
Same authorised updates, same resolved document.

Arrival order, duplication, and network delay do not change the converged result.

service: vhf-7 · key: key-2

The document is a CRDT. Its history is signed.

Each field uses the conflict-free data type that matches its meaning. Mutations travel as compact signed deltas in a Merkle DAG, carrying both authority and causal history.

⟨did, τ, P, op, π⟩

The genesis delta has a zeroed clock and no parents. The DID is derived from its first public key.

  • didthe identifier being changed
  • τa Hybrid Logical Clock timestamp
  • Phashes of causally prior parent deltas
  • opone operation: add, revoke, set, deactivate
  • πthe authorised signature over the rest
verificationMethod2P-Set

Add public keys and permanently record their revocation.

serviceORSWOT

Add and remove service endpoints; re-adding remains possible.

deactivatedOR Latch

Once deactivated, the document cannot be activated again.

other propertiesLWW-Map

Resolve concurrent values with a deterministic HLC ordering.

The product — the tuple of these components — is itself a CRDT.
01 · authenticate

Validate the delta.

Check its signature, signer authority, causal parents, and operation limits.

02 · accumulate

Fold into state.

Apply the field operation. CRDT joins are commutative, associative, and idempotent.

03 · materialise

Resolve a DID document.

Project the observable state into a document targeting W3C DID Core.

Coordination disappears when information only grows.

The CALM theorem connects monotonic computation to coordination-free execution. did:crdt keeps each internal stage monotonic: receiving another fact never requires retracting an already admitted fact.

G-Set

Received deltas

Gossip only adds content-addressed updates to the local set.

facts only grow ↑
G-Set

Valid deltas

A delta can move from pending to valid when its parents arrive, never back.

facts only grow ↑
Join-semilattice

CRDT state

Folding valid operations accumulates information in each field CRDT.

state only grows ↑
Observable view

DID document

The resolved view may hide revoked facts while the underlying state preserves them.

view may hide facts
Important Full CRDT state merges are order-independent. The signed-delta path requires causal delivery: an update is admitted after the parent updates it builds on. That is much weaker than a global total order and needs no agreement protocol.

Pure at the centre. Networked at the edge.

The Rust core has no I/O or async runtime. Networking, persistence, and an HTTP resolver are feature-gated around the deterministic state machine.

Rust · create, merge, resolvedid-crdt 0.1
use did_crdt::core::document::Document;

// Create a content-addressed DID.
let (mut doc, genesis) = Document::new(public_key)?;

// Admit an authenticated remote update.
doc.merge(signed_delta)?;

// Materialise the converged DID document.
let did_document = doc.resolve()?;

WASM-compatible core

Embed the same pure merge and resolution logic in browser, mobile, desktop, or server software.

Iroh gossip

Exchange compact deltas peer to peer, then use Merkle-DAG anti-entropy to fill gaps above an advertised frontier.

Property-tested convergence

Commutativity, associativity, and idempotence are exercised across generated update histories.

HTTP resolver and metrics

An optional Axum service exposes create, resolve, and delta admission endpoints with Prometheus metrics.

What the design guarantees — and what it doesn't.

Coordination-free does not mean assumption-free. The research and implementation make the trust boundary explicit.

guarantee

Deterministic convergence

Replicas that receive the same valid updates resolve the same document, regardless of arrival order, duplication, or delay.

guarantee

Authenticated untrusted-peer paths

Signed deltas and verified-bundle replay reject forged or malformed mutations before state changes.

boundary

No canonical “current” value

A total order is deliberately absent. Applications that need one globally canonical present must add coordination above the method.

boundary

Compromise is contained, not erased

Revocation limits a compromised key. General recovery, Sybil resistance, compaction, and method registration remain active work.

boundary

Raw state merge is trusted-domain only

Byzantine safety applies to authenticated delta paths. Merging unauthenticated full state is an optimisation for trusted replicas.

design choice

DID documents are public routing material

They should hold identifiers, public keys, verification relationships, and service pointers — not personal information.

Read the argument. Inspect the implementation.

“did:crdt: Coordination-Free Decentralised Identifiers via Signed CRDTs” by Hugo O’Connor and Claire Barnes. Accepted at the 8th IEEE International Conference on Decentralized Applications and Infrastructures.