Sharded mempool: a mempool whose pending transactions are split across nodes

Strawmap Beyond that (Long term) · sharded mempool

Today every node receives and stores all pending transactions. A sharded mempool splits these pending transactions into several pieces and has each node handle only a part, so that even if transactions grow greatly, the burden on a single node does not grow in proportion.

Why it is needed

On Ethereum, transactions gather in a waiting room called the mempool before they are included in a block. Today every node in the network receives all of these pending transactions and relays them to one another. This is fine when the number of transactions is small, but if mainnet throughput is raised significantly, pending transactions grow too, and the bandwidth and memory every node spends downloading and checking all of them hit their limits. The mempool, a stage before block building, becomes the bottleneck. A sharded mempool splits pending transactions into several pieces and has each node handle only some of the pieces. Each node receives, checks and relays only its own share. The block producer collects transactions from several pieces. Even as transactions grow, the amount a single node must handle can stay constant, which lays the groundwork for scaling the execution layer. This is work on client and network specifications that needs no hard fork changing protocol rules, and in the Strawmap it sits in the long-term column rather than a near-term fork. The specific design is still at the research and discussion stage.

How it works

  1. Split pending transactions into pieces When a new transaction arrives, it is assigned to one of several pieces under a fixed rule. It is like dividing a mempool where all transactions piled into one line into several lines.
  2. Nodes receive only their assigned piece Each node downloads and checks only the transactions in its assigned piece and relays them to neighboring nodes. Even as total transactions grow, the bandwidth a single node uses stays within its own share.
  3. Collect pieces when building a block The block producer takes transactions from several pieces and puts them in one block. Even if a different node holds each piece, all of them can still be included in the final block.

← Roadmap