Implementations
Three today, and a documented path to listing yours.
| Implementation | Language | Components | Status | License | Maintainer |
|---|---|---|---|---|---|
| did-webplus | Rust | Core, CLI (controller + resolver + verifier), VDR, VDG, Universal Resolver Driver | Reference implementation | MIT | LedgerDomain |
| @zkred/did-webplus (source) | TypeScript / JavaScript | DID parsing/formatting, resolution as a did-resolver plugin (versionId / selfHash / versionTime), VDG resolution, full-microledger fetch and verify, controller create/update |
Community | MIT | Zkred |
| poc-did-webplus-py | Python | Full resolver, VDR (SQLite-backed) | Proof of concept only. Do not use in production. | MIT | LedgerDomain (unmaintained by design) |
A note on the Python PoC, because its status line undersells its significance. It was produced against the specification alone and passed interoperability testing against the Rust reference implementation. Its purpose was to demonstrate that a second, independent implementation of did:webplus is achievable from the spec, and it did. It is deliberately frozen: no maintenance, no pull requests.
The TypeScript package’s Ed25519 verification path is conformance-tested against the worked examples in the reference repo, reproducing self-hashes and proofs exactly.
Docker images
docker pull ghcr.io/ledgerdomain/did-webplus-cli # client-side operations docker pull ghcr.io/ledgerdomain/did-webplus-vdr # Verifiable Data Registry docker pull ghcr.io/ledgerdomain/did-webplus-vdg # Verifiable Data Gateway docker pull ghcr.io/ledgerdomain/did-webplus-urd # Universal Resolver Driver
Running DIF’s Universal Resolver? The URD slots in as a standard driver, so did:webplus resolves alongside every other method you support.
Built one? Get listed.
We want this table to grow, and listing is deliberately low-friction. Requirements: your implementation validates against the published worked examples (microledger, hash function selection); you state which components you cover (controller, resolver, VDR, VDG) and which resolution features (versionId, selfHash, VDG endpoints); and it’s publicly available under an open source license. Then open an issue titled “Implementation listing: <name>” with links and coverage notes. Interop-tested implementations get flagged as such. If you intend to track spec changes as they land, say so; we’ll note it.