3535 const path_to_root = "" ;
3636 const default_light_theme = "light" ;
3737 const default_dark_theme = "navy" ;
38- window . path_to_searchindex_js = "searchindex-d4d48dfc .js" ;
38+ window . path_to_searchindex_js = "searchindex-56366715 .js" ;
3939 </ script >
4040 <!-- Start loading toc.js asap -->
4141 < script src ="toc-274da26b.js "> </ script >
@@ -271,7 +271,7 @@ <h3 id="store-all-the-semantics"><a class="header" href="#store-all-the-semantic
271271 │ ┌─────────────────────┐ ┌──────────────────────┐ │
272272 │ │ BlockHeaders │ │ new_payloads │ │
273273 │ │ BlockBodies │ │ (pending aggregated │ │
274- │ │ BlockSignatures │ │ attestations) │ │
274+ │ │ BlockProof │ │ attestations) │ │
275275 │ │ States │ │ known_payloads │ │
276276 │ │ StateDiffs │ │ (fork-choice-active │ │
277277 │ │ Metadata │ │ attestations) │ │
@@ -286,7 +286,7 @@ <h3 id="store-all-the-semantics"><a class="header" href="#store-all-the-semantic
286286 └───────────────────────────────────────────────────────────────┘
287287</ code > </ pre >
288288< h2 id ="the-tables "> < a class ="header " href ="#the-tables "> The Tables</ a > </ h2 >
289- < p > The seven variants of the < code > Table</ code > enum (< code > crates/storage/src/api/tables.rs</ code > ):</ p >
289+ < p > The eight variants of the < code > Table</ code > enum (< code > crates/storage/src/api/tables.rs</ code > ):</ p >
290290< div class ="table-wrapper ">
291291< table >
292292< thead >
@@ -295,7 +295,7 @@ <h2 id="the-tables"><a class="header" href="#the-tables">The Tables</a></h2>
295295< tbody >
296296< tr > < td > < code > BlockHeaders</ code > </ td > < td > root</ td > < td > < code > BlockHeader</ code > </ td > < td > never</ td > </ tr >
297297< tr > < td > < code > BlockBodies</ code > </ td > < td > root</ td > < td > < code > BlockBody</ code > </ td > < td > never</ td > </ tr >
298- < tr > < td > < code > BlockSignatures </ code > </ td > < td > slot ‖ root</ td > < td > aggregate proof (< code > MultiMessageAggregate</ code > )</ td > < td > yes: finalized older than ~1 day</ td > </ tr >
298+ < tr > < td > < code > BlockProof </ code > </ td > < td > slot ‖ root</ td > < td > aggregate proof (< code > MultiMessageAggregate</ code > )</ td > < td > yes: finalized older than ~1 day</ td > </ tr >
299299< tr > < td > < code > States</ code > </ td > < td > root</ td > < td > full < code > State</ code > snapshot</ td > < td > never</ td > </ tr >
300300< tr > < td > < code > StateDiffs</ code > </ td > < td > root</ td > < td > < code > StateDiff</ code > </ td > < td > never</ td > </ tr >
301301< tr > < td > < code > Metadata</ code > </ td > < td > string</ td > < td > SSZ scalars</ td > < td > never</ td > </ tr >
@@ -308,7 +308,7 @@ <h3 id="key-encoding"><a class="header" href="#key-encoding">Key encoding</a></h
308308< ul >
309309< li > < strong > Root-keyed</ strong > tables use the 32-byte SSZ encoding of the block root
310310(< code > root.to_ssz()</ code > ).</ li >
311- < li > < strong > Slot-prefixed</ strong > tables (< code > BlockSignatures </ code > , < code > LiveChain</ code > ) use
311+ < li > < strong > Slot-prefixed</ strong > tables (< code > BlockProof </ code > , < code > LiveChain</ code > ) use
312312< code > encode_slot_root_key</ code > : an 8-byte < strong > big-endian</ strong > slot followed by the
31331332-byte root. Big-endian means lexicographic key order equals numeric slot
314314order, so pruning can iterate from the start of the table and stop at the
@@ -325,12 +325,10 @@ <h3 id="blockbodies"><a class="header" href="#blockbodies">BlockBodies</a></h3>
325325< code > BlockBody::default()</ code > ), nothing is stored and reads synthesize
326326< code > BlockBody::default()</ code > . This covers the genesis block and checkpoint sync
327327anchors, whose bodies are either empty or unavailable. Never pruned.</ p >
328- < h3 id ="blocksignatures "> < a class ="header " href ="#blocksignatures "> BlockSignatures</ a > </ h3 >
329- < p > < code > slot ‖ root → MultiMessageAggregate</ code > . Despite the name, this table stores the
330- block’s < strong > merged aggregate proof blob</ strong > , not individual signatures — the name
331- is historical and kept to avoid a RocksDB column-family migration (renaming to
332- < code > BlockProof</ code > is a follow-up). It is keyed by < code > slot ‖ root</ code > (not plain root)
333- precisely so that pruning can scan in slot order and stop early.</ p >
328+ < h3 id ="blockproof "> < a class ="header " href ="#blockproof "> BlockProof</ a > </ h3 >
329+ < p > < code > slot ‖ root → MultiMessageAggregate</ code > . This table stores the block’s < strong > merged
330+ aggregate proof blob</ strong > . It is keyed by < code > slot ‖ root</ code > so that pruning can scan in
331+ slot order and stop early.</ p >
334332< p > Stored separately from headers/bodies because the genesis block has no proof.
335333< code > get_signed_block</ code > synthesizes an empty proof for the slot-0 anchor only; for
336334any other block a missing entry (a pruned finalized block) surfaces as < code > None</ code >
@@ -451,7 +449,7 @@ <h2 id="write-paths-what-a-block-import-persists"><a class="header" href="#write
451449 │
452450 ├─ 2. insert_signed_block() ┐ BlockHeaders[root]
453451 │ │ BlockBodies[root] (if non-empty)
454- │ ├─one batch─ BlockSignatures [slot‖root]
452+ │ ├─one batch─ BlockProof [slot‖root]
455453 │ │ LiveChain[slot‖root]
456454 │ ┘
457455 │
@@ -491,8 +489,8 @@ <h2 id="pruning"><a class="header" href="#pruning">Pruning</a></h2>
491489< p > < strong > Deferred</ strong > (< code > prune_old_data</ code > , called after a batch of blocks has been
492490processed):</ p >
493491< ul >
494- < li > < code > prune_old_block_signatures </ code > : deletes < code > BlockSignatures </ code > entries below
495- < code > cutoff = tip_slot − SIGNATURE_PRUNING_RANGE </ code > (21,600 slots, ~1 day at
492+ < li > < code > prune_old_block_proofs </ code > : deletes < code > BlockProof </ code > entries below
493+ < code > cutoff = tip_slot − BLOCK_PROOF_PRUNING_RANGE </ code > (21,600 slots, ~1 day at
4964944-second slots) — but < strong > only</ strong > when < code > cutoff ≤ finalized_slot</ code > , i.e. the
497495entire pruned range lies within finalized history. Non-finalized proofs
498496are never touched. Finalized blocks can never revert, so their proofs are
0 commit comments