Base’s Denim upgrade changes the block records developers must read: instead of producing Flashblocks, Base now produces a full canonical block every 200 milliseconds, according to a ChainCatcher report published on November 9, 2026, at 22:59:43 UTC+8.
Activation dates and data availability
Denim activated on Base Sepolia on October 21, 2026, at 18:00 UTC, followed by Base mainnet on November 5, 2026, at 18:00 UTC. Following activation, both networks stopped producing Flashblocks, and Flashblocks subscriptions, WebSocket streams and pending-state interfaces no longer returned 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 data. A successful connection therefore does not mean the former stream remains active.
Subscription and RPC changes
The report describes the following migration requirements:
- Replace
eth_subscribe("newFlashblocks")witheth_subscribe("newHeads"). - Replace
pendingLogswithlogs. - For
newFlashblockTransactions, switch tonewHeads, then fetch transactions from the corresponding canonical blocks. - Change RPC calls using the
"pending"block tag to read the latest canonical block and state instead.
The key distinction is between the discontinued Flashblocks and pending-state feeds and the canonical block records that applications must now use.
Node versions and transaction predicates
Mainnet nodes require base/base v1.5.1 or later, while Sepolia nodes require v1.5.0 or later. Node operators must also remove the following settings:
RETH_FB_WEBSOCKET_URL--flashblocks-url--max-pending-blocks-depth--flashblocks.ping-interval
Validity transactions containing a flashblock_index predicate will be rejected. The official guidance cited by ChainCatcher recommends using block_number to constrain the applicable range instead.