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
+14-3Lines changed: 14 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -508,17 +508,28 @@ Even the first version of LeiosFetch decision logic should consider EBs that are
508
508
> [!WARNING]
509
509
>
510
510
> TODO: Discuss fetch decision logic for caught-up vs bulk syncing nodes, conservative pipelining depths, server-side reordering options.
511
+
> - fetch range via points
512
+
> TODO: what about newly synced nodes that need to acquire all EBs up to the immutable tip, how?
513
+
> - might demand a different mini-protocol design
514
+
> - query points of volatile suffix and request missing subset of it (like tx submission for the mempool)
511
515
512
516
### Endorser block storage
513
517
514
-
Unlike votes, a node should retain the closures of older EBs (**NEW-LeiosEbStore**), because Praos allows for occasional deep forks, the most extreme of which could require the closure of an EB that was announced by the youngest block in the Praos Common Prefix. On Cardano mainnet, that RB is usually 12 hours old, but could be up to 36 hours old before [CIP-0135 Disaster Recovery Plan](https://cips.cardano.org/cip/CIP-0135) is triggered. Thus, EB closures are not only large but also have a prohibitively long lifetime even when they're ultimately not immortalized by the historical chain. This component therefore stores EBs on disk just as the ChainDB already does for RBs. The volatile and immutable dichotomy can even be managed the same way it is for RBs.
518
+
Unlike votes, a node should retain the closures of older EBs (**NEW-LeiosEbStore**), because Praos allows for occasional deep forks, the most extreme of which could require the closure of an EB that was announced by the youngest block in the Praos Common Prefix. On Cardano mainnet, that RB is usually 12 hours old, but could be up to 36 hours old before [CIP-0135 Disaster Recovery Plan](https://cips.cardano.org/cip/CIP-0135) is triggered. Thus, EB closures are not only large but also have a prohibitively long lifetime even when they're ultimately not immortalized by the historical chain.
515
519
516
-
- **REQ-ArchiveLeiosBlocks** The node must retain each EB's closure indefinitely when the immutable Praos chain certifies it.
520
+
- **REQ-StoreLeiosBlocks** The node must retain all EBs and their closures up to the immutable tip, independent whether certified or not.
521
+
- **REQ-ArchiveLeiosBlocks** The node must retain each EBs and their closures indefinitely when the immutable Praos chain certifies them.
522
+
523
+
This component therefore stores EBs on disk just as the ChainDB already does for RBs. The volatile and immutable dichotomy can even be managed the same way it is for RBs.
517
524
518
525
> [!WARNING]
519
526
>
520
527
> TODO: discuss sizing and access patterns
521
-
> TODO: separate volatile/immutable stores?
528
+
> - up to 11k block opportunities within 12h? -> see nfrisby's eb storage document
529
+
> TODO: separate volatile/immutable stores? why?
530
+
> - having an immutable EBs table or database should bound access times on EBs
531
+
> and closures of the volatile part (which should be log n, thus bounding n
0 commit comments