Concepts

Consensus & Validators

Canonical reference · Estimated read time: 10 minutes

TL;DR

Valdium uses Tendermint-style BFT proof-of-stake with a rotating ~100-validator committee selected each epoch by stake-weighted lottery. The protocol is permissionless after genesis. Finality lands as soon as 2/3 of committee voting power has signed off — near-instant, no chain reorganisations. The 100-validator cap is the load-bearing design choice that makes post-quantum signatures fit inside a residential bandwidth budget.

Why Tendermint-style BFT

We considered three families of consensus algorithm:

Tendermint won on three criteria: instant finality (great UX), load-bearing prior art (Cosmos has been running it at scale for years), and the bounded committee size that's structurally compatible with PQC signature overhead.

The rotating committee

The active committee is capped at 100 validators per epoch (~4 hours at 2-second blocks). Membership uses a hybrid model:

Selection uses a deterministic on-chain PRF (BLAKE3-seeded Fisher-Yates) over the eligible pool, seeded from the prior epoch's last block hash. Every node arrives at the same committee without a coordination round-trip.

BFT quorum is stake-weighted, not count-weighted. A block commits when validators representing 2/3 of total active-committee stake have signed — not 2/3 of the validator count.

How a block becomes final

When you submit a transaction, this is what happens:

  1. The transaction is POSTed to any full node, which validates it and fans it out over HTTP to every configured peer mempool.
  2. The active block proposer picks transactions from its mempool, validates each one (signature check, nonce, balance, gas), and bundles them into a candidate block.
  3. The proposer broadcasts the candidate block to the rest of the committee.
  4. Pre-vote. Each committee member checks the candidate block and broadcasts a pre-vote signed with their ML-DSA-65 key.
  5. Pre-commit. If 2/3 of committee voting power pre-votes for the same block, each committee member broadcasts a pre-commit.
  6. Commit. If 2/3 of committee voting power pre-commits, the block is finalised. No reorgs are possible.

The finalised block carries the pre-commit signatures from the committee — roughly 100 ML-DSA-65 signatures, ~330 KB of signature data per block. That number is the reason the committee is capped at ~100.

Cryptography

All consensus signatures (pre-vote, pre-commit, block proposals) use ML-DSA-65 (Dilithium3). Block hashes use BLAKE3. Address derivation is BLAKE3(pubkey)[0:20] with an EIP-55-style mixed-case checksum.

No signature aggregation in v1. Dilithium doesn't aggregate, and PQC aggregation schemes aren't standardised yet. We compensate by capping committee size. For the full cryptographic story, see Post-Quantum Cryptography.

Permissionless after genesis

At genesis, the initial validator set is seeded by the incentivised testnet conversion. After that, anyone who meets two criteria is eligible:

No KYC, no whitelist, no governance vote, no approval process. Stake-weighted lottery means even small validators have a chance of being selected each epoch.

Service nodes

Valdium has two distinct node roles, both shipped in the same CLI binary:

Default install runs in service-node mode — zero risk, small steady earnings. Bonding stake "promotes" a node into the consensus validator candidate set.

Tradeoffs we accept