Weak statelessness and/or state expiry: coming soon (x-post from EthMagicians)
One of the next major challenges for the Ethereum base layer is that of dealing with the growing state size: currently around 100 GB including tree nodes and growing by around 50 GB per year. The growing state is making it increasingly harder to sync the ethereum chain and to participate as a validator, and risks increasing network centralization if the state grows, especially if the gas limit is increased further.
There are two main techniques being proposed for how to deal with this problem for the short term:
- State expiry: remove state that has not been recently accessed from the state (think: accessed in the last year), and require witnesses to revive expired state. This would reduce the state that everyone needs to store to a flat ~20-50 GB.
- Weak statelessness: only require block proposers to store state, and allow all other nodes to verify blocks statelessly.
Both solutions are well underway in development, and it feels like around now is the time to switch gear from seeing these ideas as research problems to seeing them as concrete paths of which at least one (and perhaps eventually both) need to be implemented into Ethereum.
Some things I link to inside the EthMagicians link:
- My recent doc on state expiry: https://hackmd.io/@HWeNw8hNRimMm2m2GH56Cw/state_size_management
- An idea on how to do state expiry / regenesis while minimizing resurrection conflict issues: https://ethresear.ch/t/resurrection-conflict-minimized-state-bounding-take-2/8739
- Verkle trees (very important concept): slides, doc, code
- Dankrad's case for weak statelessness: https://notes.ethereum.org/WUUUXBKWQXORxpFMlLWy-w
- Piper Merriam's work on distributed state storage and state and witness availability: https://ethresear.ch/t/scalable-transaction-gossip/8660 and https://github.com/ethereum/stateless-ethereum-specs/pull/54
Happy to answer questions about any of this!