rollup-boost module that accelerates confirmation times by dividing block construction into smaller, incremental sections.
This enables pre-confirmations and improves user experience, while finalization still occurs at standard block intervals.
The Flashblocks setup involves three main components:
rollup-boost: Coordination layer with Flashblocks enabledop-rbuilder: Execution client and builder with Flashblocks supportop-geth: Fallback builder, a standard EL node (can beop-rethas well)
op-rbuilder to rollup-boost over WebSockets, minimizing latency between the sequencer and the pre-confirmed state.
For full details on design choices, data structures, and invariants, see the Flashblocks specification.
Flashblocks components
Flashblocks relies on several components working together:op-node: Consensus layer, initiatesengine_forkchoiceUpdatedcalls and leads block building.op-geth: Default block builder, produces standard blocks.op-rbuilder: Reth-based execution client that builds both standard blocks and flashblocks.- Exposes flashblocks on a WebSocket stream (not recommended for public exposure).
- Each event on the stream corresponds to a 250 ms flashblock.
rollup-boost: Sits betweenop-nodeand execution layers, coordinating block building in flashblocks mode.- Validates
op-rbuilderpayloads againstop-geth - Falls back to
op-gethifop-rbuilderdiverges or lags
- Validates
flashblocks-websocket-proxy: Relays the flashblocks stream from the active sequencer to RPC providers.op-node-rbuilder(optional):op-nodepointing only toop-rbuilder, used for syncing at startup.op-conductor(optional but recommended): Manages multiple sequencers, ensuring only one healthy leader streams blocks.
Flashblocks lifecycle
- Single-sequencer setup.
op-nodecoordinates block production throughrollup-boost, targetingop-rbuilderinstead ofop-geth.op-rbuilderacts as a full execution client: it builds blocks, exposes Ethereum JSON-RPC, and processes transactions.- In addition,
op-rbuilderemits flashblocks every 250 ms, streamed over a WebSocket interface (e.g.wss://). - These flashblocks give early visibility into transaction inclusion before the final regular block is sealed.
How to set up and run rollup-boost
Flashblocks relies onrollup-boost as the coordination layer for block building.
To run Flashblocks, you’ll configure rollup-boost alongside your sequencer and execution clients.
Single‑sequencer setup
As suggested in the above links, in a single-sequencer setup, Flashblocks are streamed fromrollup-boost (or op-rbuilder) to flashblocks-websocket-proxy by setting the following environment variable in flashblocks-websocket-proxy:
HA‑compliant multi‑sequencer setup
While Flashblocks can be enabled in a single-sequencer setup, we highly recommend running a high-availability (HA) multi-sequencer setup managed byop-conductor.
In an HA setup, multiple op-conductor instances form a Raft group. At any time, only one healthy sequencer acts as the active leader responsible for block building, while others remain in follower mode. Leadership changes automatically if the active sequencer becomes unhealthy.
For Flashblocks, each sequencer (leader and followers) runs its own dedicated components, including rollup-boost and op-rbuilder.
Only the leader’s op-rbuilder produces flashblocks; follower instances remain idle.
In this setup, the connection between rollup-boost and the flashblocks-websocket-proxy is mediated by op-conductor.
op-conductorlistens to Flashblocks fromrollup-boost(orop-rbuilder).- If it is the active leader, it forwards the Flashblocks to
flashblocks-websocket-proxy. - If it is not the leader, it does not forward anything.
HA configuration
1. Configureop-conductor to listen for Flashblocks and forward them if leader:
- Variable descriptions:
OP_CONDUCTOR_WEBSOCKET_SERVER_PORT: Port whereop-conductorexposes Flashblocks if it is the leader. For example:ws://<op-conductor-url>:8546/ws.OP_CONDUCTOR_ROLLUPBOOST_WS_URL: Direct URL ofrollup-boost(orop-rbuilder) where Flashblocks are available. In a single-sequencer setup, this is the same URL you’d pass directly toflashblocks-websocket-proxy.OP_CONDUCTOR_ROLLUP_BOOST_ENABLED: Enables health checks forrollup-boost(and indirectlyop-rbuilder) so leadership can fail over if either becomes unhealthy.OP_CONDUCTOR_EXECUTION_RPC: Execution RPC URL ofrollup-boost. Same asOP_NODE_L2_ENGINE_RPCconfigured onop-node.
flashblocks-websocket-proxy to consume Flashblocks from all sequencer conductors:
op-conductor.
Optional rate limits for flashblocks-websocket-proxy:
PER_IP_CONNECTIONS_LIMIT: Max connections allowed per client IP.INSTANCE_CONNECTION_LIMIT: Max total connections allowed per proxy instance.