Skip to content

Commit 4b5fb02

Browse files
committed
Volatile/immutable eb store and how to fetch all volatile EBs?
1 parent 44e1d3f commit 4b5fb02

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

docs/leios-design/README.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -508,17 +508,28 @@ Even the first version of LeiosFetch decision logic should consider EBs that are
508508
> [!WARNING]
509509
>
510510
> 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)
511515
512516
### Endorser block storage
513517
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.
515519
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.
517524
518525
> [!WARNING]
519526
>
520527
> 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
532+
> is desirable)
522533
> TODO: interaction with mempool (here or above)
523534
524535
### Voting

0 commit comments

Comments
 (0)