We need to change our approach for implementing Stateless Ethereum. At present, the effort is on track to deliver protocol changes that reduce witness sizes. Beyond this, the roadmap is unclear on how we get to the end goal of allowing clients to process blocks in a stateless manner.
I propose a fundamental change in how we deliver on this goal that removes external dependencies and should deliver meaningful changes to the protocol.
The current roadmap is focused on delivering stateless block execution by reducing witness size and producing block witnesses. This will require a new gossip network, because a client without the state would be unable to participate in the ETH
protocol without the state and chain history.
The only thing that such a client would be capable of doing would be following the tip of the chain and executing blocks as they arrive, verifying the block state root.
These client would explicitly not be able to do any of the following:
This limited client is not useful for the vast majority of the use cases people use clients for, and is probably only useful in the context of eth2 infrastructure.
Because the current roadmap only allows for clients with limited usefulness and that usefulness is primarily focused on Eth2, it seems unlikely that development will be prioritized until the Eth2 merge is firmly on the horizon.
The current roadmap still reenforces the status quo. Interacting with the Ethereum protocol will still require either running a heavy client or using a centralized provider.
The current protocols aren’t going to deliver functional lightweight clients. The current roadmap is not going to deliver a functional lightweight stateless client. Delivering on functional lightweight clients is a high value goal that we should be putting resources towards. Existing clients should see benefits from this effort as well, such as making it easier to free up disk space used for ancient chain data.
I propose that we expand the “Stateless Ethereum” effort to unclude the work necessary to deliver stateless clients that are capable of exposing the JSON-RPC API. This does not change or de-prioritize existing efforts to enable stateless block execution. It is a purely additive change that expands scope to include building the necessary infrastructure to support the desired functionality.
The scope of “stateless ethereum” would be the following. This list tries to capture the functionality necessary to have a useful client that performs stateless block execution.
The above breaks down into the following areas of research.
ETH
DevP2P gossip.block_number -> block_hash
transaction_hash -> (block_hash, transaction_index)
We should provide funding for researchers interested in dedicating their time towards these topics.
The architecture of a stateless client that exposes the JSON-RPC API is going to be fundamentally different from existing client architecture. We should not expect existing client teams to implement this functionality.
We should provide funding for new client teams who wish to build out these new lightweight stateless clients.
https://esp.ethereum.foundation/en/
Teams should initially seek funding through the Ethereum Foundation Ecosystem Support Program, aka ESP. If you are interested in working on this effort, you should submit a grant application for funding.
I (piper) will be working to secure longer term funding for teams that secure initial funding through ESP. Specifics will be handled on a case-by-case basis.
We should be focused on delivering functionality on a tight iteration cycle. The development of these new pieces of peer-to-peer infrastructure and clients should be able to move at a quick pace with a tight feedback loop. Rough estimations suggest we should be capable of delivering valuable functionality on a quick timeline (~12 months).
ETH
DevP2P network