The rollup RPC sends the tx (as "pending tx") to a reservoir of txs called mempool or memory pool.
Mempool is a p2p network of nodes that share a view of these txs - but the txs are unordered here.
Now, the centralized rollup operator comes into play:
Mempool is a p2p network of nodes that share a view of these txs - but the txs are unordered here.
Now, the centralized rollup operator comes into play:
3. It compresses the tx batch and posts it to the DA layer - (for simplicity, say it's the same as the settlement layer (L1), eg. Ethereum)
4. It executes the block of txs to get a new state root
Previous state root + new tx data = new state root
4. It executes the block of txs to get a new state root
Previous state root + new tx data = new state root
The rollup smart contract on Ethereum also verifies any validity proofs (in the case of ZKRUs) or fraud proofs (in the case of ORUs) and then updates the state of the Rollup in the L1 database.
At this point, finality is achieved.
The tx journey is complete.
At this point, finality is achieved.
The tx journey is complete.
Makes sense?
Pretty simple till here.
Give one central operator the responsibility to do everything and the process looks simple.
Pretty simple till here.
Give one central operator the responsibility to do everything and the process looks simple.
But centralization is the first thing we're trying to avoid with blockchains!
Here are a few reasons why centralized rollup sequencers aren't ideal- They can:
- Censor txs
- Do monopolistic pricing
- Frontrun user txs to generate MEV
Here are a few reasons why centralized rollup sequencers aren't ideal- They can:
- Censor txs
- Do monopolistic pricing
- Frontrun user txs to generate MEV
In addition, having siloed rollups fragments liquidity across different rollups.
So how do we solve this?
Modularity!
So how do we solve this?
Modularity!
In the modular world that the Ethereum ecosystem is headed towards, the execution responsibilities of the centralized rollup operator would be abstracted away and performed by separate layers.
In this era, the tx lifecycle would change as follows:
In this era, the tx lifecycle would change as follows:
The shared sequencer mempool receives txs from several different rollups!
Entities called Searchers keep track of this mempool to search for any MEV opportunities.
Entities called Searchers keep track of this mempool to search for any MEV opportunities.
Builders are also heavy-duty full nodes that take the bundle from the searcher who bids the highest amount
They include the bundle(s) in addition to other txs from the mempool into a block and "propose" this block to the Shared Sequencer
They include the bundle(s) in addition to other txs from the mempool into a block and "propose" this block to the Shared Sequencer
Then, the rollupβs full nodes:
- Retrieve a block from the shared sequencer or the base layer,
- Check it against their fork choice rule,
- Filter out txs from other rollups, and
- Use STF (state transition function) to apply the resultant subset of txs to their previous state.
- Retrieve a block from the shared sequencer or the base layer,
- Check it against their fork choice rule,
- Filter out txs from other rollups, and
- Use STF (state transition function) to apply the resultant subset of txs to their previous state.
This generates the new state of the rollup which is then gossiped to the light clients.
Meanwhile, the process on the L1 smart contract is the same:
Verify for validity proofs or fraud proofs and update the database.
Meanwhile, the process on the L1 smart contract is the same:
Verify for validity proofs or fraud proofs and update the database.
And that's all there is!
Since the shared sequencer doesn't perform execution, it can be "stateless" - this makes them easy to decentralize!
And because multiple rollups can share one decentralized sequencer, this also improves interoperability between them.
Since the shared sequencer doesn't perform execution, it can be "stateless" - this makes them easy to decentralize!
And because multiple rollups can share one decentralized sequencer, this also improves interoperability between them.
@AstriaOrg and @EspressoSys are two amazing teams building shared sequencers for the modular future!
Flashbots is building a 'decentralized builder' - 'SUAVE'
I hope this helps in understanding the recent CT discourse around sequencers, proposers, builders, etc.
Flashbots is building a 'decentralized builder' - 'SUAVE'
I hope this helps in understanding the recent CT discourse around sequencers, proposers, builders, etc.
If you want to learn more about the economics, benefits, and tradeoffs of Shared Sequencers, check out this article by @0xRainandCoffee
Also highly recommend @jon_charb's comprehensive post on everything rollups:
Loading suggestions...