Open
Description
Description
We currently have no way of preserving orphaned blocks, even though they are useful for block explorers and analytics.
Steps to resolve
- Add a flag to
lighthouse bn
called something like--keep-orphaned-blocks
- Add a new column to the database for mapping slots to vecs of orphaned block roots (
DBColumn::OrphanedBlocks
). The blocks themselves can be stored in the hot DB's main block storage, where all other blocks are currently stored. - In the pruning code that runs on finalization add logic to keep the blocks when
--keep-orphaned-blocks
is set, storing their block roots under theslot => Vec<Hash256>
mapping. - In the API:
- Modify
/eth/v1/beacon/headers?slot
so that it reads block roots from the orphaned block roots table, and then looks them up in the main block table. - Work out what to do with
/eth/v1/beacon/headers?parent_root
(I don't know what we do currently) - The orphaned blocks themselves can then be accessed by their root using
/eth/v1/beacon/blocks/{root}
but not by their slot directly.
- Modify
Version
Lighthouse v1.4.0