The original blockchain at the core of the Solidus Network — a layer-1 purpose-built as a trust anchor for decentralized identity, verifiable credentials, and identity-bound staking.
- Consensus: HotStuff-style Byzantine Fault Tolerant (pacemaker, quorum certificates), ~1–2 s single-block finality
- Cryptography: Ed25519 per-validator signatures, BLS12-381 aggregates, BBS+ on BLS12-381 for selective-disclosure credentials, BLAKE3-256 everywhere (state, tx, block)
- State machine: RocksDB with dedicated column families for
accounts,dids,credentials,validators,receipts,blocks; sparse Merkle commitments - DID method:
did:solidus— seedid-solidus-spec - Public testnet: JSON-RPC at https://rpc.solidus.network, block explorer at https://explorer.solidus.network
Two generations share this workspace. v1 is the chain running the live testnet today; v2 is a ground-up rebuild of execution, consensus, and storage — a separate network with its own chain-id that does not touch the live testnet.
v1 (the live testnet chain):
crates/
├── solidus-consensus # HotStuff state machine, pacemaker, leader election (VRF)
├── solidus-crypto # Ed25519, BLS12-381, BLAKE3, BBS+ (zkryptium 0.6, byte-compatible with @solidus-network/bbs)
├── solidus-node # Validator binary — bootstraps state, p2p, RPC, consensus
├── solidus-p2p # libp2p transport, gossipsub, peer discovery
├── solidus-rpc # JSON-RPC server — solidus_didResolve, solidus_credentialResolve, getValidators, etc.
├── solidus-state # Executor, store, state-root computation
└── solidus-txns # Transaction payloads (DidCreate, DidUpdate, DidDeactivate, CredentialIssue, ...) + handlers
v2 (the two-lane rebuild — code public, no public v2 network yet):
crates/
├── solidus-exec # Two-lane executor: parallel payment lane + serialized identity lane, differential-tested vs a serial oracle
├── solidus-state-tree # BLAKE3 sparse Merkle tree, O(touched) root apply
├── solidus-store2 # v2 storage engine (RocksDB column families, durable block writes)
├── solidus-mempool-dag # DAG mempool / transaction dissemination
├── solidus-hotstuff2 # Consensus core + TLA+ model (crates/solidus-hotstuff2/tla+/)
├── solidus-p2p2 # v2 libp2p networking
├── solidus-rpc2 # v2 JSON-RPC surface
├── solidus-node2 # v2 node assembly + load harness
├── solidus-noded # Deployable node daemon: keygen, config generation, faucet
├── solidus-subnet # Subnet scaffolding
└── solidus-evm # EVM subnet scaffold + identity precompiles
- Testnet-grade and unaudited. No external audit has occurred on any part of
this protocol. What an auditor would need to start is written up per component in
docs/v2-audit-readiness.md. - The headline target — 50K TPS sustained on a 21-validator, 3-region network —
has never been measured. Every published figure was measured on one 10-core
laptop and is labelled as such. The exact commands, hardware, and raw unedited
outputs are in
docs/v2-benchmarks.mdanddocs/bench/. If you cannot reproduce a number, open an issue. - There is no public v2 network yet — no v2 RPC, no faucet, nothing to join.
You can run the full stack locally today:
docs/v2-validator-join.mdis a rehearsed runbook (keygen → config → 4-validator devnet → faucet-funded transfer), and it states the current limits honestly: the committee is config-static and there is no state-sync yet, so mid-flight join and restart-recovery are named open work items. - No token. There is no $SLDS or any other token; nothing here mints, promises, or redeems value.
did:solidusis submitted to the W3C DID method registry and under review — not yet registered. (Solidus is a DIF Associate Member.)
Design docs: docs/v2-execution-model.md ·
docs/v2-consensus.md ·
docs/v2-wire-format.md
v1: live on testnet with four validators, single-block finality, ~35 k blocks/15 s under load. Mainnet launch is gated on independent security audit.
v2: code, benchmark harness, and local-devnet tooling are public in this repo as of 2026-07-14. No public v2 network exists yet; a mainnet-candidate is not a mainnet.
cargo build --releasetarget/release/solidus-node \
--chain-id solidus-devnet-1 \
--data-dir ./dev-data \
--rpc-listen 127.0.0.1:9944Then resolve a sample DID:
curl -s -X POST http://127.0.0.1:9944 \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "solidus_didResolve",
"params": ["did:solidus:testnet:5dXc8vN3kzGm7p6L9HsQrR2hYfBaT1Wj"]
}'- W3C DID Method
did:solidus— all seven DID Core gaps closed (key rotation, deactivated-DID resolution metadata, fullverificationMethod/relationship surface on chain, parameterised network in identifier, controller reassignment,versionIdin resolution metadata) - W3C Verifiable Credentials Data Model 2.0 (
validFrom/validUntil/@contextv2) - BBS+ selective disclosure end-to-end — a holder can reveal "over 18" without disclosing the underlying date of birth
- SD-JWT VC issuance and verification (EUDI Wallet-compatible reference libraries), including KB-JWT, status-list revocation, and nested-path disclosure
- HotStuff BFT with TC formation correctness fix (handles the case where the local
node misses a peer's
Vote), committee surface viagetValidators
@solidus-network/sdk— TypeScript SDK with DID, credential, BBS+ and SD-JWT VC primitivessolidus-verify— production KYC service issuing BBS+ credentialssolidus-identity— self-sovereign identity wallet, credential holder, OIDC bridge
Apache-2.0.