Skip to content

solidusnetwork/did-solidus-spec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

did:solidus — DID Method Specification

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.

DID at a glance

did:solidus:testnet:5dXc8vN3kzGm7p6L9HsQrR2hYfBaT1Wj
└─ did ─┘└ method ┘└ network ┘└──── identifier ────┘
  • Network: testnet (production today) or mainnet (reserved for post-audit launch).
  • Identifier: Base58 encoding of the first 20 bytes of BLAKE3-256 over 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.

Resolving a DID

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',
  );

Conformance

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-vectors

12 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.

Versioning

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.

Issues, feedback, and PRs

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.

License

Specification text is licensed under CC BY 4.0. Code samples are licensed under MIT.

Contact

About

The did:solidus DID Method Specification

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors