TLDR; Below is a short proposal for a simple shared-sequencer design that enables synchronous cross-chain transactions with a minimal diff to the current Optimism architecture.
Design Goals
Let and denote Optimism and Base transactions respectively. Currently, the Optimism and Base sequencer commit to an ordering of transactions:
We want to enable synchronous cross-chain transactions between Optimism and Base. In other words, an arbitrary transaction should have the power to conditionally include a transaction in if and only if succeeded. Specifically, it should satisfy the following properties:
Note that given an arbitrary transaction , it is not possible to know whether the transaction will execute successfully or that it will attempt to emit a cross-chain transaction without execution. Thus, we believe that it is not possible to enable synchronous cross-chain communication without some form of execution at the sequencer level (Espresso and Astria do not execute transactions, so they only enable atomic inclusion of transactions).
Here is a simple proposal for a shared sequencer that would enable synchronous cross-chain transactions between Optimism and Base, under a shared trust model.
Instead of routing their transactions to the rollup-specific sequencer, users will send their transactions to the shared sequencer.
Upon receiving a transaction , the shared sequencer will:
Upon receiving a shared transaction , the shared sequencer will:
To ensure that the sequencer was not malicious, assume a few smart contracts have been implemented on-chain for sending these cross-chain transactions.
On the sending chain:
On the receiving chain:
Note that we implement mint-and-burn for simplicity, but it could be generalized to arbitrary messaging.
Then, for every batch posted on L1, it suffices to prove that the mint
and burn
Merkle trees have the same root. This can be done using a fraud proof which would require more latency, a ZK proof, or a simple Merkle proof. The design space here is open.
This design is very similar to the existing Optimism sequencer/fraud proof design, but adds 1 extra condition to validate when posting state roots. The fundamental difference between this architecture and other proposals for shared/decentralized sequencers is the following:
Our model:
Other shared sequencing models (e.g., Espresso or Astria)