Flashblocks on Base: what they were and what replaced them (Denim 200 ms blocks)

Update, November 6, 2026: Flashblocks on Base have been retired. Base’s Denim upgrade activated on Base Sepolia on October 21, 2026 and on Base Mainnet on November 5, 2026 (block 53,556,127). Denim replaces Flashblocks with a full canonical block every 200 ms instead of every 2 seconds. The
newFlashblocks,newFlashblockTransactions, andpendingLogssubscriptions deliver nothing, and thependingtag has no direct equivalent: readlatestinstead.
Until November 5, 2026, a standard transaction on Base waited up to ~2 seconds for the next block. For real-time low-latency trading, onchain games, and time-sensitive user flows, those two seconds could still feel like a delay.
Flashblocks, a transaction preconfirmation feature developed by Flashbots, streamed “partial blocks” ahead of each new seal, giving transaction feedback in as little as 200 milliseconds. Denim now delivers that cadence directly: Base seals a full block every 200 ms, each with its own hash, state root, and receipts. Data from these blocks is sealed canonical data, not preconfirmed data.
In this post, we cover what Flashblocks were, what replaced them, and how to move your code from the
pendingtag and Flashblocks subscriptions tolatest,newHeads, andlogs, with JSON-RPC and curl examples.
What were Flashblocks on Base?
Flashblocks streamed committed transactions as they were added to the block-in-progress, giving apps an early view of the next 2-second block through the pending tag. Denim retired this mechanism. Because Base now seals a block every 200 ms, there is no in-progress block to preview: read latest for the freshest state.
Each 200 ms block has its own block number, hash, state root, receipts, and unsafe, safe, and finalized lifecycle. block.number now advances ten times faster in wall-clock time, while block.timestamp stays in whole seconds, so about five consecutive blocks share one timestamp. Block responses also carry a timestampMs field.

Standard Ethereum JSON-RPC methods keep working. Replace Flashblocks-era calls as follows, and see the Base Denim docs for the full mapping:
eth_subscribe("newFlashblocks")becomeseth_subscribe("newHeads")eth_subscribe("newFlashblockTransactions")becomeseth_subscribe("newHeads"), then fetch the transactions of each blocketh_subscribe("pendingLogs")becomeseth_subscribe("logs")eth_getBlockByNumber("pending")becomeseth_getBlockByNumber("latest")eth_getBalance,eth_getTransactionCount,eth_call,eth_estimateGas, andeth_simulateV1at"pending"become the same call at"latest"eth_getLogswithtoBlockset to"pending"becomestoBlockset to"latest"
What Denim gives you instead of Flashblocks
Denim makes confirmations faster by changing the chain itself, so you don’t need a special endpoint or tag. Here’s what changes when you use a Base RPC endpoint by Chainstack.
Get faster transaction signals
Your app no longer waits two seconds to update the UI. A new block lands every 200 ms, about five per second, and you can read it with latest or subscribe to newHeads. Because this is sealed canonical data, you get fast signals without preconfirmation caveats, for swaps, games, bots, or a simple onboarding flow.
Low-latency RPC access, globally distributed
Chainstack Global Nodes for Base are optimized for intensive traffic. We route requests through the closest available region, whether that’s the US, EU, or Asia, and serve responses from high-performance nodes.
That means even when network traffic spikes, your app stays fast.
# Example: Fetch the latest 200 ms block via Chainstack Base RPC
curl -X POST <YOUR_CHAINSTACK_BASE_RPC_URL> \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_getBlockByNumber",
"params": ["latest", false]
}'
Works with standard Ethereum RPC methods
Denim works with the standard RPC methods available on Base. Use the "latest" tag with:
eth_getBlockByNumbereth_getTransactionReceipteth_getBalanceeth_getTransactionCount
You get the freshest canonical data without touching your existing tools.
Getting started with 200 ms blocks on Base via Chainstack
- Create a Base RPC endpoint on Chainstack Denim is live on Base Sepolia (since October 21, 2026) and Base Mainnet (since November 5, 2026). You can create new endpoints in just a few clicks.
- Connect your app, script, or tool Use your Chainstack RPC URL in your web3 app, wallet, script, or curl requests. All standard Ethereum JSON-RPC methods are supported; read
latestor subscribe tonewHeadsandlogs.
Denim’s 200 ms blocks make Base near-instant for anything time-sensitive, with no preconfirmation caveats.
Conclusion
Denim changes how fast apps can respond on Base. Blocks are sealed every 200 ms, so a transaction’s inclusion shows up in a canonical block, not in a preview. Update code that relied on pending or the Flashblocks subscriptions to read latest and newHeads. Because block.number advances ten times faster, anything written in block counts (polling, timelocks, voting periods) now covers a tenth of the time. Chainstack limits that count blocks changed the same way: a request 127 or more blocks behind the tip bills as archive (2 RU), now about 25 seconds, and eth_getLogs ranges are 100 blocks (20 seconds) on the Developer plan and 10,000 blocks (about 33 minutes) on paid plans.
Use any Chainstack Base Mainnet or Testnet Sepolia endpoint to start reading 200 ms blocks today.