The official specification of the did:solidus Decentralized Identifier
method. did:solidus is anchored on the
Solidus Network, a HotStuff-style Byzantine Fault
Tolerant layer-1 blockchain implemented in Rust and purpose-built as a
trust anchor for decentralized identity.
- Specification:
SPEC.md— v0.1.0 (editor's draft) - Reference implementation (Rust): https://github.com/solidusnetwork/protocol
- Reference SDK (TypeScript):
@solidus-network/sdk - Public testnet resolver: https://rpc.solidus.network (JSON-RPC method
solidus_didResolve) - Conformance test vectors: https://github.com/solidusnetwork/solidus-test-vectors — 12 runnable vectors + a reference runner
- W3C DID Method Registry: registered — listed at w3.org/TR/did-extensions-methods (PR #713, merged 2026-07-04)
did:solidus:testnet:5dXc8vN3kzGm7p6L9HsQrR2hYfBaT1Wj
└─ did ─┘└ method ┘└ network ┘└──── identifier ────┘
- Network:
testnet(production today) ormainnet(reserved for post-audit launch). - Identifier: Base58 encoding of the first 20 bytes of
BLAKE3-256over the controller's 32-byte Ed25519 public key. - DID Document: a first-class on-chain data type; stored in its own
RocksDB column family (
CF_DIDS) on every validator. - Finality: single-block (~1–2 s).
- Operations:
Create,Read (Resolve),Update(key rotation, controller reassignment, service edits),Deactivate.
curl -s -X POST https://rpc.solidus.network \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "solidus_didResolve",
"params": ["did:solidus:testnet:5dXc8vN3kzGm7p6L9HsQrR2hYfBaT1Wj"]
}'Or via the TypeScript SDK:
import { createSdk } from '@solidus-network/sdk';
const sdk = createSdk({ mode: 'testnet' });
const { didDocument, didDocumentMetadata } =
await sdk.did.resolveWithMetadata(
'did:solidus:testnet:5dXc8vN3kzGm7p6L9HsQrR2hYfBaT1Wj',
);A method specification that cannot be checked is a document, not a standard. If you are implementing
did:solidus in another language, do not take this text — or our code — on trust:
git clone https://github.com/solidusnetwork/solidus-test-vectors
cd solidus-test-vectors/runner
npm install && npm run build
node dist/cli.js ../test-vectors12 vectors cover identifier construction (HASH160, public key → address → did:solidus:<network>:<address>),
the create/resolve/deactivate operation shapes, BBS+ selective disclosure, and credential bundles. The JSON
files are the interop surface; the runner is one implementation of them, included only so you have something
to compare against.
Two of the suites are negative cases, and they matter as much as the positive ones: an implementation that accepts a tampered proof passes every happy-path vector and is still broken.
Every vector records the command that produced it, and all key material in them is synthetic and self-describing — nothing there grants access to any deployment.
This repository follows semantic versioning at the spec level. Breaking
changes to the on-chain DID Document shape, the identifier syntax, or any
normative requirement bump the major version. Additive, backward-compatible
clarifications bump the minor version. The W3C DID Method Registry entry
links to a tagged version of SPEC.md for content-integrity-protection.
We welcome issue reports and pull requests on this repository. For normative concerns or interoperability questions, please file an issue before opening a PR. Implementer questions are best raised on the Solidus Network discussions board.
Specification text is licensed under CC BY 4.0. Code samples are licensed under MIT.
- Email: info@solidus.network
- Web: https://solidus.network