Protocol status
Realizing Ouroboros Leios is not a single hand-off from research to engineering, but a progression: the protocol described in CIP-164 is matured through simulation, prototyping, design, implementation and quality assurance until it can be considered for deployment to mainnet. This page tracks where that work currently stands, cut along two dimensions:
- Component stages: the parts of the protocol flow, each progressing through the stages below. Visualized graphically and in a full matrix.
- Release stages: possible increments that can be considered for a rollout to mainnet, as a dimensional plan to node releases.
Component stages
A component moves through these stages, which are deliberately not a waterfall several of them progress in parallel and feed back into each other:
| Stage | Meaning |
|---|---|
| CIP | The protocol-level question is settled in CIP-164; we know what is needed. |
| Prototype | Explored in simulation or on real infrastructure, enough to trust the approach is feasible. |
| Design | How to build it in cardano-node is written down in the technical design. |
| Implementation | Production code exists in cardano-node (and, eventually, other node implementations). |
| Assurance | Confidence gained through formal methods, statistical analysis, e2e and adversarial testing sufficiently high to deploy to mainnet. |
Please read the marks below with several grains of salt:
- They are our own judgement, not a review. The marks reflect how the implementation team sees the state of things at the time of writing. Nothing here has been externally audited, and none of it constitutes acceptance criteria, a commitment, or a schedule.
- Its a moving target. The CIP is mostly stable, but the detailed
node-level design is a
living document and still evolves along with prototyping and confidence
seeking work chapters. Open questions are indicated by
?items, but visibility may be incomplete. - Nothing is "done" until high confidence. A component with everything but the confidence stage marked is not ready for mainnet. That last column is the gate, and it is empty nearly everywhere. Furthermore, attaining high confidence on some components may raise issues with others and may uncover more work.
Click or hover a badge for the full breakdown of a component.
Cross-cutting components
Full matrix
| Component | CIP | Prototype | Design | Implementation | Assurance |
|---|---|---|---|---|---|
| Cryptographic primitives | ✓ | ✓ | ✓ | ✓ | ✓Audited |
| New protocol parameters | ✓Per-tx limits unlikely | ✓ | ✓ | ~ | ~working groups |
| Serialization | ✓ | ✓ | ✓no dedicated cert | ✓ | ~CDDL conformance |
| Praos > Leios prioritization | ✓ | ✓ | ✓ | ~ | ~load testing |
| Key registration & rotation | ✓ | ✓ | ✓no key rotation via headers | ✓ | ~auditing rc-w41 |
| Committee selection | ✓ | ✓ | ✓ | ✓ | ~auditing rc-w41 |
| High-throughput Tx submission | ✓ | ✓ | ✓ | ~ | ~load testing |
| High-throughput mempool | ✓ | ✓ | ✓ | ✓ | ~first audit ok |
| Block production | ✓ | ✓ | ✓pre-application vs. mempool | ~ | ~auditing on rc-w41 |
| EB diffusion | ✓update mini-protocols | ~policies, egress scheduling | ?settle policies, good enough? | ~ | ~auditing on rc-w41 |
| Transaction cache & storage | ✓ | ✓schema improvements | ✓ | ~ | ~auditing on rc-w41 |
| Voting & certification | ✓update mini-protocols | ✓ | ✓keep push-based voting | ~auditing on rc-w41 | |
| Block validation & adoption | ✓ | ✓ | ✓consensus/ledger API defined | ~ | ~auditing on rc-w41 |
| Node API & configuration | ✓ | ✓ | ✓ | ~ | ~Kleioscan, SPO tools |
Release stages
The same implementation scope, cut along the other dimension: each stage is a potential
cardano-node release scope that could be considered to hard-fork mainnet. Not
only the release as a whole, but each individual item requires "high confidence"
before that step is taken. Scope items take their status from the component
breakdown above; where an item groups several sub-items, it shows the roll-up of
those. See the dimensional
plan for the staging
itself.
- The stage contents may be incomplete. As we are continously prototyping and validating, implementation items are still being discovered, and an empty-looking stage table is not evidence of a small scope.
- The parameter tuples are illustrative. Names like "0/0/∞/0/0" or "1/4/7/100k/1M" sketch the intent of a stage, not agreed values; the Leios protocol parameter set is still being finalized and would in any case be subject to on-chain governance.
- Stages are scopes, not dates. A completed stage means a release could be considered for a hard fork, not that one is planned. Hard forks require governance approval by DReps and stake pool operators.
Stage 0: Dijkstra supports Leios6/8 done
| Scope item | Component | Implementation | Assurance |
|---|---|---|---|
Dijkstra block definition / serialization contains Leios
| Serialization | ✓Done | ~Ongoing |
| Generate BLS keys | Key registration & rotation | ✓Done | ~Ongoing |
Create and submit pool registration with BLS keys
| Key registration & rotation | ✓Done | ~Ongoing |
| Query pool state showing key registration | Node API & configuration | ✓Done | ~Ongoing |
| Stake-based committee selection | Committee selection | ✓Done | ~Ongoing |
Committee selection at epoch boundaries
| Committee selection | ✓Done | ~Ongoing |
| Client APIs inline certified EB txs | Node API & configuration | ~Ongoing | ~Ongoing |
| Node integration 11.2 | not in status list | – | – |
Stage 1: Low params (1s, 4s, 7s, 40KB, 260KB, 720M mem, 200G steps, 500 seats, 75%)3/19 done
| Scope item | Component | Implementation | Assurance |
|---|---|---|---|
| Socket options | Praos > Leios prioritization | ~Ongoing | ~Ongoing |
| TxSubmisison V2-undecision | High-throughput Tx submission | ✓Done | ~Ongoing |
| Double-buffered mempool | High-throughput mempool | ✓Done | ~Ongoing |
| Capped forging | High-throughput mempool | ✓Done | ~Ongoing |
| Forge and store EBs | Block production | ~Ongoing | ~Ongoing |
| Volatile/Immutable LeiosDB | Transaction cache & storage | ~Ongoing | ~Ongoing |
| Disk-backed TxCache | Transaction cache & storage | ~Ongoing | ~Ongoing |
| Announce and detect equivocations of EBs | EB diffusion | ~Ongoing | ~Ongoing |
| Diffuse and validate EBs via TxCache | EB diffusion | ~Ongoing | ~Ongoing |
| Basic fetching policy (not full hedging) | EB diffusion | ~Ongoing | ~Ongoing |
| Efficient serving | EB diffusion | Not started | ~Ongoing |
| Voting logic | Voting & certification | Not started | ~Ongoing |
| Diffuse and validate votes | Voting & certification | Not started | ~Ongoing |
| Store and aggregate votes | Voting & certification | Not started | ~Ongoing |
| Forge RBs with certificates | Block production | ~Ongoing | ~Ongoing |
| EB fetching on chain selection | Block validation & adoption | Not started | ~Ongoing |
| Validate EB announcing and certifying blocks | Block validation & adoption | ~Ongoing | ~Ongoing |
| Node accepts BLS keys | Node API & configuration | ~Ongoing | ~Ongoing |
| Node integration 11.3 | not in status list | – | – |
Stage 2: Higher params (1s, 4s, 7s, 100KB+, 1MB+, ..GSteps, ..GMem, 900 seats, 75%)0/13 done
| Scope item | Component | Implementation | Assurance |
|---|---|---|---|
| TxSubmission param tuning | High-throughput Tx submission | Not started | ~Ongoing |
| Pre-apply certificates | Block production | Not started | ~Ongoing |
| Incremental offers | EB diffusion | Not started | ~Ongoing |
| Egress scheduling | EB diffusion | ~Ongoing | ~Ongoing |
| Pull-based vote diffusion | Voting & certification | Not started | ~Ongoing |
| TxSubmission param tuning | High-throughput Tx submission | Not started | ~Ongoing |
| Incremental decoding | Praos > Leios prioritization | Not started | ~Ongoing |
| Pre-flight forging | High-throughput mempool | Not started | ~Ongoing |
| Advanced fetching policy | EB diffusion | Not started | ~Ongoing |
| Fully optimised LeiosDB | Transaction cache & storage | Not started | ~Ongoing |
| Catch up on not yet certified Leios EBs | EB diffusion | Not started | ~Ongoing |
| Out of order fetch EBs in Genesis | Block validation & adoption | Not started | ~Ongoing |
| Node integration | not in status list | – | – |