You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/leios-design/README.md
+59-85Lines changed: 59 additions & 85 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -93,6 +93,9 @@ As it was the case for the Praos variant of Ouroboros (TODO: cite shelley networ
93
93
94
94
Ouroboros Leios is a significant change to the consensus protocol, but does not require fundamental changes to the overall architecture of the Cardano node. Several new components will be needed for the new responsibilities related to producing and relaying Endorser Blocks (EBs) and voting on them, as well as changes to existing components to support higher throughput and freshest-first-delivery. The following diagram illustrates the key components of a relay node where new and updated components are marked in purple:
95
95
96
+
> [!WARNING]
97
+
> TODO: Should consider adding Leios prefixes to VoteStore (to not confuse with PerasVoteDB), i.e. LeiosVoteDB?
98
+
96
99

97
100
98
101
> [!WARNING]
@@ -602,100 +605,71 @@ instance DSIGNAlgorithm BLS_DSIGN where
602
605
603
606
---
604
607
608
+
## Client interfaces
609
+
610
+
> [!WARNING]
611
+
> TODO: concrete discussion on how the `cardano-node` will need to change on the N2C interface, based on https://github.com/input-output-hk/ouroboros-leios/blob/main/docs/ImpactAnalysis.md#client-interfaces
612
+
605
613
# Dependencies and interactions
606
614
607
615
> [!WARNING]
608
-
> TODO: Identify and explain dependencies, synergies and potential conflicts with other existing or future features of the node. Potential topics:
616
+
> TODO: Identify and explain dependencies, synergies and potential conflicts with other existing or future features of the node. Outline:
609
617
>
610
-
> - On-disk storage of ledger state (UTxO-/Ledger-HD)
611
-
> - Interactions with Genesis (catching up node)
618
+
> - On-disk storage of ledger state
619
+
> - ongoing work on transitioning the ledger state from being fully in memory to being stored mostly on disk
620
+
> - at the time of writing the released node version supports utxo state storage on disk (UTxO-HD), while other parts (e.g. reward accounts) are currently being transitioned (Ledger-HD)
621
+
> - is a prerequisite for being able to handle the increased throughput Leios enables
622
+
> - will shift resource requirements from RAM to disk I/O and storage capacity
623
+
> - access latency will necessarily increase and needs to be accounted for in transaction validation timing constraints
624
+
> - requires early validation through benchmarking, to identify any required optimizations in how the ledger state is accessed during block and transaction validation
> - to research: protocol-level interactions between certified EBs and boosting blocks
615
-
> - Impact onto Mithril
627
+
> - no dependency between, but orthogonal (in agreement with characterisation in https://tweag.github.io/cardano-peras/peras-design.pdf#section.3.2)
628
+
> - competing for bandwidth and priorization similar to Praos > Leios is needed; see also relevant sections above + [resource management section in the impact analysis](https://github.com/input-output-hk/ouroboros-leios/blob/main/docs/ImpactAnalysis.md#resource-management)
629
+
> - on the other hand, vote diffusion protocol definition and implementation _may_ be re-usable
630
+
> - leios prototypes will evaluate the proposed protocols from CIP-164 first and whether they are sufficient to withstand protocol burst attacks
631
+
> - once the peras mini-protocols are available, they should be evaluated for use in leios the same way
632
+
> - while structurally this seems promising, we should be prepared that performance requirements and timing constraints demand two distinct implementations
633
+
> - immediate synergy on cryptography
634
+
> - both protocols are posed to be based on the BLS signature scheme with BLS12-381 key material
635
+
> - peras might require an additional mechanism for forward secrecy, but that can be independent
636
+
> - if we can share the key material, SPOs will only need to generate and register one new key
637
+
> - this will avoid bootstrapping on the second-to-deploy protocol (likely leios)
638
+
> - requires further research: protocol-level interactions between certified EBs and boosting blocks, i.e. re-using leios votes for peras boosting
639
+
> - likely not feasible in the near-term, or would introduce unnecessary dependencies
640
+
> - mid- to long-term, this could be an interesting avenue to explore and further improve throughput and finality jointly
641
+
>
616
642
> - Which era to target and hard-fork schedule
617
-
618
-
> [!CAUTION]
619
-
> FIXME: The remainder of this chapter is AI generated based on rough notes
620
-
621
-
## Synergies with Peras
622
-
623
-
Peras and Leios share several design elements that enable synergistic development:
**Recommendation:** Deploy Leios first to address economic sustainability concerns, then add Peras for faster finality. This sequencing:
679
-
- Addresses immediate throughput bottleneck
680
-
- Validates BLS infrastructure before Peras relies on it
681
-
- Enables incremental complexity management
643
+
> - as already identified in the [impact analysis](https://github.com/input-output-hk/ouroboros-leios/blob/main/docs/ImpactAnalysis.md#ledger), a new ledger era is required to change block structure and validation rules
644
+
> - the currently deployed era is Conway, with Dijkstra being prepared as the follow-up
645
+
> - before the hard-fork introducing Dijkstra, at least one intra-era hard fork is planned for early 2026
646
+
> - current plans for Dijkstra include nested transactions and maybe already Peras
647
+
> - having peras and leios in the same hard-fork is possible, but could increase risks as both are consensus protocol changes and impact network traffic
648
+
> - should avoid targeting Dijkstra now, but shifting Leios functionality later into an even later era (Euler) once the hard-fork schedule is better understood
649
+
> - instead, conservatively targeting Euler with the option to merge functionality forward into Dijkstra if the schedule allows is preferrable
650
+
>
651
+
> - Impact onto Mithril
652
+
> - no protocol level interactions
653
+
> - but: mithril relies on a consistent view of the chain acroos signers
654
+
> - the client APIs (link/see above) will slightly change, hence `mithril-signer` might be impacted depending on what N2C interfaces are in use
655
+
> - initially, mithril was only digesting and signing the ImmutableDB as persisted on disk, but using the local chain sync protocol to digest and sign block ranges was considered
656
+
> - in any case, the cardano db snapshots served through mithril will need to include new persisted data: EBStore and potentially even the VoteStore
682
657
683
658
## Interactions with Genesis
684
659
685
-
Genesis (Ouroboros Genesis) enables nodes to bootstrap from the genesis block without trusted checkpoints. Leios requires the following considerations for Genesis compatibility:
686
-
687
-
**Key Considerations:**
688
-
- Syncing nodes must fetch both RBs and their certified EBs
689
-
- LeiosFetch `MsgLeiosBlockRangeRequest` enables efficient batch fetching during sync
690
-
- EB closures needed to validate chain density
691
-
- Chain density calculations must include transactions from certified EBs (RB-only view underestimates chain quality)
692
-
- Certified EBs must be stored permanently alongside RBs
693
-
- Immutable storage grows at ~13TB/year at sustained 200 TxkB/s throughput
694
-
- Uncertified EBs can be pruned after settlement window
695
-
- Parallel fetching from multiple peers critical for sync performance
696
-
- Genesis nodes must understand Euler era blocks and track EB certification status
697
-
- Initial Leios deployment can use trusted snapshots; full Genesis integration follows after Leios stabilization
698
-
660
+
> [!WARNING]
661
+
> TODO: write section based on outline:
662
+
> - recap catching up nodes (if not done already in architecture/changes chapter)
663
+
> - syncing nodes must fetch both RBs and their certified EBs, ideally efficiently
664
+
> - LeiosFetch mini-protocol already considers this via `MsgLeiosBlockRangeRequest` for efficient batch fetching during sync
665
+
> - Parallel fetching from multiple peers critical for sync performance
666
+
> - chain density changes
667
+
> - EB closures needed to validate chain density
668
+
> - density calculations must include transactions from certified EBs (RB-only view underestimates chain quality)
669
+
> - not needed for initial testnet deployments
670
+
> - follow approach of Peras and deploy Leios without Genesis support on a public testnet initially (https://tweag.github.io/cardano-peras/peras-design.pdf#section.4.1)
671
+
> - only needed for a mainnet release-candidate, but must validate genesis changes long enough on public testnets (and obviously integration testing beforehand)
0 commit comments