EIP4844 (proto-danksharding) marks a stride in simplifying the complexities of original data-sharding plans. With meticulous research underway to bring danksharding to fruition, we find ourselves at a fascinating crossroads. This post discusses middle-ground project ideas between EIP4844 and danksharding and seeks valuable/fun ideas to implement for those who want to write client code post-EIP4844. These ideas may further research for danksharding or improving current mainnet chain health. It aims to be theoretical and practical, and we call this EIP4844+ idea.
One constraint I impose on these ideas is they should be additive, backward compatible, not consensus-breaking, and no hard fork required. This significantly improves client development time and can use the existing mainnet as a testbed without breaking it, which is a good win.
Currently, EIP4844 uses 3/6 blobs. A node can only declare a block as the head of the chain once all the blobs have been received (if any) and verified. In more simple terms, a node can only process the block once all the blobs are received. The individual blobs are gossiped over p2p. The p2p pub/sub system is reliable, all messages get delivered to all peers subscribed to the topic, and it is resilient. Peers can join and leave the subnet without disrupting it. It's fast, efficient and straightforward.
A straightforward idea is to erase code and extend 3/6 target max blobs to 6/12. The nodes interested in the extra subnet for the erasure-coded blobs can opt in and subscribe to them. The node can process the blobs with the additional subnets after receiving 50% of the total data. (Before: 100%) This makes the network more dynamic and higher resistance to stalling. The tradeoff here is bandwidth vs. micro-optimization on when a node can declare a block as head. As for storage, the node will still store the same amount of data as in EIP4844 because it can always reconstruct the original data upon request.
Whether making the network more dynamic improves block processing latency is unclear, but it is still a fantastic research problem. The win here is utilizing the mainnet's network topology with an erasure-coded overlay network. We get to utilize and test the mainnet without possessing severe risks to the mainnet. One can view this as two types of nodes. A classic node that behaves in EIP4844 model, a new type of node that gossips erasure-coded data and provides them upon request.
The main changes for the new node are:
Disregard the current target/max blob sidecar count in EIP4844 today. We can introduce a new node type that gossips, custody, and samples blob sidecars. This extends idea #1 and adds data sampling on top. The network could be seen as more dynamic and faster (similar pros as #1)
In this approach, we get to test out the following
This will require more changes, but it's more worthwhile because it's more realistic for our long-term goals. The main changes for the new node are: