Flashblocks Support on Base
Blockdaemon Base nodes support Flashblocks — Base's pre-confirmation streaming protocol — on both Mainnet and Sepolia Testnet. Flashblocks lets your application read transaction and state data up to 200ms after sequencer acceptance, well before a block is sealed.
What is Flashblocks?
The Base sequencer continuously emits sub-block updates over a WebSocket relay. Each update (a "Flashblock") carries the latest pending transactions and their resulting state changes. Blockdaemon nodes subscribe to this relay and expose the pre-confirmed state through the standard Ethereum JSON-RPC interface, with no new SDK or transport required.
Applications that read pending state get data that is seconds fresher than latest, with no change to how they construct requests.
Networks
| Network | Status |
|---|---|
| Base Mainnet | Supported |
| Base Sepolia Testnet | Supported |
Using Flashblocks
The pending Block Tag
pending Block TagThe primary way to access Flashblocks data is the pending block tag. On a standard node, pending reflects the mempool. On a Flashblocks-enabled node, it resolves to the latest pre-confirmed Flashblock state. If no Flashblock is available, it silently falls back to latest.
All standard methods that accept a block parameter support this:
| Method | Flashblocks Behavior with pending |
|---|---|
eth_getBlockByNumber | Returns the current in-progress Flashblock as a block object |
eth_getBalance | Returns balance including all pending Flashblock state changes |
eth_getTransactionCount | Returns canonical nonce plus any delta from pending Flashblock transactions |
eth_getTransactionByHash | Returns pre-confirmed transactions before the block is sealed |
eth_getTransactionReceipt | Returns pre-confirmation receipts |
eth_call | Executes against canonical state with Flashblock state injected as overrides |
eth_estimateGas | Same as eth_call — canonical block with Flashblock state overrides |
eth_simulateV1 | Prepends Flashblock state overrides into each blockStateCalls entry |
eth_getLogs | When toBlock is pending: returns confirmed logs plus current Flashblock logs, deduplicated |
eth_getBlockTransactionCountByNumber | Returns the transaction count of the current in-progress Flashblock |
Here's an example for reading a pre-confirmed balance:
{
"jsonrpc": "2.0",
"method": "eth_getBalance",
"params": ["0xYourAddress", "pending"],
"id": 1
}WebSocket Subscriptions
WebSocket connections are available at the /websocket path on the node endpoint. See How to Connect to Base for connection details.
Three Flashblocks-specific subscription kinds are available via eth_subscribe:
newFlashblocks
newFlashblocksEmits the full Flashblock object every ~200ms as new pre-confirmed state arrives.
{ "jsonrpc": "2.0", "method": "eth_subscribe", "params": ["newFlashblocks"], "id": 1 }newFlashblockTransactions
newFlashblockTransactionsEmits transactions from the latest Flashblock as they arrive. Pass false (or omit) for transaction hashes only; pass true for full transaction objects including receipt fields (logs, gasUsed, status, cumulativeGasUsed, contractAddress, logsBloom).
{ "jsonrpc": "2.0", "method": "eth_subscribe", "params": ["newFlashblockTransactions", true], "id": 1 }A log filter object can be passed instead of true to receive only transactions whose logs match a given address and/or topics.
pendingLogs
pendingLogsEmits individual log objects from the latest Flashblock. Accepts an optional filter (same format as eth_getLogs) to scope by address and topics.
{
"jsonrpc": "2.0",
"method": "eth_subscribe",
"params": ["pendingLogs", { "address": "0xContractAddress", "topics": ["0xEventSignature"] }],
"id": 1
}Base-Specific Methods
Upcoming
eth_sendRawTransactionSyncandbase_transactionStatusare being enabled in an upcoming deployment.
eth_sendRawTransactionSync
eth_sendRawTransactionSyncSends a signed raw transaction and waits (up to 6,000ms) for it to appear in a Flashblock or the canonical chain before returning a receipt. Useful for applications that need immediate confirmation of sequencer acceptance without polling.
{
"jsonrpc": "2.0",
"method": "eth_sendRawTransactionSync",
"params": ["0xSignedRawTx"],
"id": 1
}base_transactionStatus
base_transactionStatusReturns whether a transaction hash is known to the node (Known) or not (Unknown). Checks the local mempool and proxies to the sequencer when available.
{
"jsonrpc": "2.0",
"method": "base_transactionStatus",
"params": ["0xTxHash"],
"id": 1
}{ "jsonrpc": "2.0", "id": 1, "result": { "status": "Known" } }👋 Need Help?
Contact us through email or our support page for any issues, bugs, or assistance you may need.
Updated about 3 hours ago
