Base’s Denim Upgrade Retires Flashblocks: Subscription and Node Changes

Originally reported by ChainCatcher on November 9, 2026, at 22:59:43 UTC+8.

Base disabled Flashblocks as part of its Denim upgrade, switching to a complete canonical block every 200 milliseconds. Denim activated on Base Sepolia on October 21, 2026, at 18:00 UTC, and on Base mainnet on November 5, 2026, at 18:00 UTC.

Following activation, both networks stopped producing Flashblocks. Flashblocks subscriptions, WebSocket streams and pending-state interfaces no longer return data. According to the official documentation cited in the report, endpoints such as wss://mainnet.flashblocks.base.org/ws still accept connections but no longer push any data.

Subscription and RPC migration

Developers need to replace Flashblocks-dependent reads with canonical-block equivalents:

  • Replace eth_subscribe("newFlashblocks") with eth_subscribe("newHeads").
  • Replace pendingLogs with logs.
  • Replace newFlashblockTransactions with a newHeads subscription, then retrieve transactions from the corresponding canonical blocks.
  • Change RPC calls using the "pending" block tag to read the latest canonical block and state instead.

Node requirements and transaction compatibility

Mainnet nodes require base/base v1.5.1 or later; Sepolia nodes require v1.5.0 or later. Operators also need to remove these Flashblocks-related settings:

  • RETH_FB_WEBSOCKET_URL
  • --flashblocks-url
  • --max-pending-blocks-depth
  • --flashblocks.ping-interval

Transactions with validity conditions that include a flashblock_index predicate will be rejected. The official recommendation is to use block_number to define the applicable range instead.

Original article: ChainCatcher