sigp / lighthouse

Ethereum consensus client in Rust
https://lighthouse.sigmaprime.io/
Apache License 2.0
2.95k stars 760 forks source link

Prune historic blocks #3209

Open michaelsproul opened 2 years ago

michaelsproul commented 2 years ago

Description

Currently Lighthouse stores every block from genesis to the current head, with no option to drop the older parts of history.

The p2p spec defines a parameter MIN_EPOCHS_FOR_BLOCK_REQUESTS equal to ~5 months, which we could adopt as the default backfill period for new checkpoint synced nodes.

https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#consensus-layer-network-interaction-domains

If community consensus enables it we could also automatically prune blocks older than MIN_EPOCHS_FOR_BLOCK_REQUESTS on all nodes in real time. Assuming finality and no storage of historic states this would make the size of the database approximately constant :heart_eyes_cat:

jmcruz1983 commented 2 years ago

Any update here?

michaelsproul commented 2 years ago

On the backburner, we're hesitant to add this feature without opt-in from other client teams and a good solution to providing access to the historical data.

AgeManning commented 7 months ago

Syncing from checkpoint sync doesn't store all blocks, just the minimum we need to serve. I'm going to close this in favour of block pruning in #4158

michaelsproul commented 1 month ago

Re-opening this as the PR never got merged and it's nice to have an issue to refer to.

PR is bitrotted, but could be updated soon: