Summary of Changes
This section summarizes the changes from the generalized optimistic rollup architecture that are required to integrate an optimistic rollup with Espresso. Though the changes are presented in terms of an abstracted architecture, if you can map this abstraction onto your specific optimistic rollup, you can derive a very concrete to-do list for integrating your rollup with Espresso.
Modify JSON-RPC or analogous server to forward transactions from users to Espresso. Choose a numeric ID for your rollup and attach it to the forwarded transactions.
Modify proposers and challengers to stream notifications of new blocks from either:
The streaming availability API
Events emitted by the sequencer contract
Modify proposers and challengers to download full blocks, or rollup-specific subsets of blocks, from the sequencer availability API.
Extend proposers and challengers to include, in the event of a challenge
The HotShot block commitment they are challenging
A completeness/inclusion proof for the transaction list they have executed relative to the block commitment
A Merkle proof showing the block commitment exists at the correct position in the Merkle tree maintained by the sequencer contract
Modify the rollup contract to read block commitments from the sequencer contract instead of its own storage.
Extend the rollup contract to verify the completness/inclusion proof and Merkle proof provided by proposer and challenger.
(Optional) Extend the challenge protocol to encode a deterministic reordering of the transactions provided by Espresso.
Last updated