Our current zk rollup setup consists of the following components:
Unmodified op-batcher, op-node and an unmodified OP-compatible execution client.
Custom op-proposer. Unlike existing versions, which only processes finalized L2 blocks to avoid dealing with reorgs (which adds ~12.8m to end-to-end latency due to Casper FFG finality), ours handles the reorgs on L1/L2. It connects to a configurable number of proving servers and load-balances the proof requests between them according to their weights.
Proving server forked from op-succinct.
SP1 zkVM programs which are based on kona library, forked from op-succinct.
Custom L2OutputOracle contract on L1 – updated to work with our op-proposer.
Tweaked OptimismPortal contract – adjusted to allow proving and finalizing withdrawal transactions within the same block (for better UX) - this change is optional.
Demo