Skip to main content

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:

StageMeaning
CIPThe protocol-level question is settled in CIP-164; we know what is needed.
PrototypeExplored in simulation or on real infrastructure, enough to trust the approach is feasible.
DesignHow to build it in cardano-node is written down in the technical design.
ImplementationProduction code exists in cardano-node (and, eventually, other node implementations).
AssuranceConfidence gained through formal methods, statistical analysis, e2e and adversarial testing sufficiently high to deploy to mainnet.
This is a work-in-progress self-assessment

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.

✓Done~Ongoing?Open questionNot started

Leios protocol flow diagram

Cross-cutting components

Full matrix​

ComponentCIPPrototypeDesignImplementationAssurance
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 staging is provisional
  • 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 itemComponentImplementationAssurance
Dijkstra block definition / serialization contains Leios
  • Announcements and certifies bit in headers
  • BLS keys in block headers (?)
  • Certificates in body
  • BLS key in pool registration cert in txs
  • Protocol parameters in txs
Serialization✓Done~Ongoing
Generate BLS keysKey registration & rotation✓Done~Ongoing
Create and submit pool registration with BLS keys
  • Check PoP in ledger rules
Key registration & rotation✓Done~Ongoing
Query pool state showing key registrationNode API & configuration✓Done~Ongoing
Stake-based committee selectionCommittee selection✓Done~Ongoing
Committee selection at epoch boundaries
  • Committee in ledger state
Committee selection✓Done~Ongoing
Client APIs inline certified EB txsNode API & configuration~Ongoing~Ongoing
Node integration 11.2not in status list––

Stage 1: Low params (1s, 4s, 7s, 40KB, 260KB, 720M mem, 200G steps, 500 seats, 75%)3/19 done

Scope itemComponentImplementationAssurance
Socket optionsPraos > Leios prioritization~Ongoing~Ongoing
TxSubmisison V2-undecisionHigh-throughput Tx submission✓Done~Ongoing
Double-buffered mempoolHigh-throughput mempool✓Done~Ongoing
Capped forgingHigh-throughput mempool✓Done~Ongoing
Forge and store EBsBlock production~Ongoing~Ongoing
Volatile/Immutable LeiosDBTransaction cache & storage~Ongoing~Ongoing
Disk-backed TxCacheTransaction cache & storage~Ongoing~Ongoing
Announce and detect equivocations of EBsEB diffusion~Ongoing~Ongoing
Diffuse and validate EBs via TxCacheEB diffusion~Ongoing~Ongoing
Basic fetching policy (not full hedging)EB diffusion~Ongoing~Ongoing
Efficient servingEB diffusionNot started~Ongoing
Voting logicVoting & certificationNot started~Ongoing
Diffuse and validate votesVoting & certificationNot started~Ongoing
Store and aggregate votesVoting & certificationNot started~Ongoing
Forge RBs with certificatesBlock production~Ongoing~Ongoing
EB fetching on chain selectionBlock validation & adoptionNot started~Ongoing
Validate EB announcing and certifying blocksBlock validation & adoption~Ongoing~Ongoing
Node accepts BLS keysNode API & configuration~Ongoing~Ongoing
Node integration 11.3not in status list––

Stage 2: Higher params (1s, 4s, 7s, 100KB+, 1MB+, ..GSteps, ..GMem, 900 seats, 75%)0/13 done

Scope itemComponentImplementationAssurance
TxSubmission param tuningHigh-throughput Tx submissionNot started~Ongoing
Pre-apply certificatesBlock productionNot started~Ongoing
Incremental offersEB diffusionNot started~Ongoing
Egress schedulingEB diffusion~Ongoing~Ongoing
Pull-based vote diffusionVoting & certificationNot started~Ongoing
TxSubmission param tuningHigh-throughput Tx submissionNot started~Ongoing
Incremental decodingPraos > Leios prioritizationNot started~Ongoing
Pre-flight forgingHigh-throughput mempoolNot started~Ongoing
Advanced fetching policyEB diffusionNot started~Ongoing
Fully optimised LeiosDBTransaction cache & storageNot started~Ongoing
Catch up on not yet certified Leios EBsEB diffusionNot started~Ongoing
Out of order fetch EBs in GenesisBlock validation & adoptionNot started~Ongoing
Node integrationnot in status list––