Skip to content

Flashblocks Overview

Flashblocks are 200ms preconfirmed sub-blocks streamed by the Base sequencer, giving applications fee-ordered state updates ten times per standard 2-second block.

Flashblocks add 200ms incremental state updates to Base, cutting perceived latency for end users.

The mechanism, built with Flashbots, streams sub-blocks inside the regular 2-second block interval. Apps see preconfirmations from the sequencer well before the full block is gossiped to the network.

TermDefinition
FlashblockA 200ms sub-block carrying part of the full block’s transactions.
PreconfirmationAn ultra-fast signal that a transaction will be included, before the full block is sealed.
Full BlockA sequence of 10 Flashblocks combined into the complete 2-second block.

Each block contains 10 Flashblocks (indexes 1-10), arriving every 200ms. Index 0 exists but only carries system transactions. See Gas and transaction sizing for how the gas budget evolves across the window.

For details on the sequencer system and the Flashblocks infrastructure components (rollup-boost, op-rbuilder, websocket-proxy, and base), see the Architecture page.

When a transaction is sent to Base, this is the path it takes:

User → DNS (mainnet.base.org) → Load Balancer → Proxyd → Mempool

The transaction lands in the private mempool and is added to the txpool as pending.

The mempool keeps P2P connections open with execution layers (op-reth, op-rbuilder), keeping all pending transactions in sync for block building.

In each 200ms loop, op-rbuilder selects transactions using:

  1. Transaction fee — transactions are ordered fee-first (highest first).
  2. Gas limit and remaining capacity — Flashblock j may use up to j/10 of the total block gas limit.

For each 2-second block, the builder runs:

FOR each flashblock j FROM 0 TO 10:
1. Wait until next 200ms window
2. Calculate available gas: (j / 10) × total_block_gas_limit
3. Sort pending transactions by fee (descending)
4. Select top transactions that fit within available gas
5. Execute transactions and update state
6. Stream flashblock to websocket-proxy

Once a transaction is included in a Flashblock, the builder streams it to the websocket-proxy. RPC nodes subscribe to that stream, so a Flashblocks-aware RPC method (such as eth_getTransactionReceipt) can return preconfirmed data straight from the node’s cache.