Beacon State Historical Roots
What is beacon state historical roots
The concept of "historical roots" in the context of Ethereum's beacon state is related to the way the beacon state used to be managed. Historically, the beacon state was divided into two parts: the "crystallized state" and the "active state." The active state was subject to frequent changes, whereas the crystallized state changed only once per epoch. This division was an attempt to manage the computational load, specifically to avoid the need to rehash the entire state at every slot. However, with the introduction of SSZ (Simple Serialize) tree hashing, this division became unnecessary, as it allowed for efficient handling of the roots of the slower-changing parts of the state.
The beacon state now uses the HistoricalSummary container, which is significantly larger than a Root type (64 bytes per item compared to 32 bytes). This container is designed to grow at a slow rate (only about 20 KB per year) but without a fixed upper limit, which is set high (HISTORICAL_ROOTS_LIMIT). Storing this historical data is beneficial for light clients and also enables the creation of Merkle proofs against past states, such as for historical deposit data【9†source】.