-
-
owned this note
-
Published
Linked with GitHub
# Distributed block building without using ultrapeers: Gossipsub for mempool sample proofs
Add a gossibsub topic where nodes can gossip the sample proofs for transactions in the mempool. Any node wanting to participate in sample computation can participate in this topic. Anyone can compute the proofs for a blob that is already in the mempool (proof size for 128 columns is ca 6kB) and send them on this topic.
All sample proofs are now available to all nodes, so not just ultrapeers can participate in creating and distributing samples.
This construction provides:
* truly distributed sample proof computation, similar to what is possible in the 2d constuction, without reliance on ultrapeers
* reduces duplicate work on sample proof computation
* allows self-builders with insufficient hardware but sufficient bandwidth to distribute sample proofs on their own behalf
## Implementation
Add new gossipsub topic for sample proofs.
Add new endpoint to the ExecutionEngine API that allows the CL to poll for any new blobs in the mempool. (Nodes will only forward sample proofs on the gossipsub if they have seen the corresponding transaction in the mempool).
Upon seeing a new blob, a node decides on a random delay after which it will build the sample proofs for the blob, if it hasn't seen them on gossip yet. (*)
All nodes can now participate in sample and proof distribution by using the sample proofs from the gossipsub topic.
(*) The random delay interpolates between resource consumption ant latency. We can find the "best" value (given some target metric) using simulations; it can also depend on locally available CPU resources and time to the next slot.