Flashblocks API overview
Flashblocks endpoints expose every standard Ethereum JSON-RPC method along with a set of pre-confirmation-specific additions. Together they let you read state, simulate transactions, and stream events against sequencer-ordered data up to ~1.8 seconds before a block seals.
All standard Ethereum JSON-RPC methods work identically on Flashblocks endpoints. Pass the "pending" block tag to resolve against pre-confirmed state instead of the transaction pool. See the Overview for endpoint URLs and a full description of the two tiers.
HTTP methods
Section titled “HTTP methods”| Method | Description |
|---|---|
eth_simulateV1 | Simulate transaction bundles against pre-confirmed state. |
base_transactionStatus | Check whether a transaction has been received by the node mempool. |
WebSocket subscriptions
Section titled “WebSocket subscriptions”On a Flashblocks WSS endpoint, eth_subscribe with newHeads emits a new event approximately every 200ms per Flashblock instead of every 2 seconds. Three additional subscription types are exclusive to Flashblocks endpoints:
| Subscription | Description |
|---|---|
newFlashblockTransactions | Stream individual transactions as they are pre-confirmed (~200ms each). |
pendingLogs | Stream filtered event logs from pre-confirmed transactions. |
newFlashblocks | Stream full Flashblock payload objects from the sequencer. |
Infrastructure stream
Section titled “Infrastructure stream”The raw Flashblocks infrastructure stream is the upstream WebSocket feed consumed by Flashblocks-aware RPC nodes. It emits a new message approximately every 200ms as the sequencer pre-confirms transactions.
Applications should not connect directly to the infrastructure stream — these endpoints are reserved for node operators. App developers should use the WebSocket subscription methods above through a Flashblocks-aware RPC provider.
| Network | Raw stream URL |
|---|---|
| Mainnet | wss://mainnet.flashblocks.base.org/ws |
| Sepolia | wss://sepolia.flashblocks.base.org/ws |
Flashblock object
Section titled “Flashblock object”The root structure of each infrastructure stream message.
| Field | Type | Description |
|---|---|---|
payload_id | string | Unique identifier for the block being built. Remains consistent across all Flashblocks within a single full block. |
index | number | Flashblock index within the current block. Starts at 0 (system transactions only). User transactions begin at index 1. Typically reaches 9–10 per block, but may exceed 10 during sequencer timing drift. |
base | Base Object | Block header properties. Only present when index is 0. See Base object. |
diff | Diff Object | Incremental block state changes for this Flashblock. Present in every message. See Diff object. |
metadata | Metadata Object | Supplemental data. Unstable — fields may change without notice. See Metadata object. |
Base object
Section titled “Base object”Contains full block header properties. Only present in the index: 0 message (the first Flashblock of each full block).
| Field | Type | Description |
|---|---|---|
parent_hash | string | Hash of the parent block. |
fee_recipient | string | Address receiving transaction fees (coinbase). |
block_number | string | Block number in hex. |
gas_limit | string | Maximum gas allowed in this block (hex). |
timestamp | string | Unix timestamp of block creation (hex). |
base_fee_per_gas | string | EIP-1559 base fee per gas (hex). |
prev_randao | string | Previous RANDAO value used for on-chain randomness. |
extra_data | string | Arbitrary data field set by the sequencer. |
Diff object
Section titled “Diff object”Contains the incremental block state changes for this specific Flashblock. Present in every message.
| Field | Type | Description |
|---|---|---|
state_root | string | Merkle root of the state trie after applying this Flashblock’s transactions. |
block_hash | string | Hash of the partial block at this Flashblock index. Changes with each Flashblock as more transactions are pre-confirmed. |
gas_used | string | Cumulative gas used up to and including this Flashblock (hex). |
blob_gas_used | string | Cumulative blob gas used (EIP-4844, hex). |
transactions | string[] | Array of RLP-encoded transactions included in this Flashblock. |
withdrawals | array | Validator withdrawals (always empty on Base L2). |
receipts_root | string | Merkle root of transaction receipts. |
logs_bloom | string | Bloom filter for logs in this Flashblock. |
withdrawals_root | string | Merkle root of withdrawals. |
Metadata object
Section titled “Metadata object”The metadata object is not stable. Fields may be added, modified, or removed without prior notice. Do not build production dependencies on it — use the diff object or query finalized block data via standard RPC instead.
| Field | Type | Description |
|---|---|---|
block_number | number | Block number as a decimal integer. |
new_account_balances | object | Map of addresses to their updated ETH balances (hex). Only includes accounts whose balances changed in this Flashblock. |
receipts | object | Map of transaction hashes to their Receipt objects. |
Receipt object
Section titled “Receipt object”The abbreviated transaction receipt included in metadata.receipts. Check the type field to determine the transaction type.
| Field | Type | Description |
|---|---|---|
type | string | Transaction type: 0x0 Legacy, 0x1 Access List, 0x2 EIP-1559, 0x7e Deposit (L1→L2). |
status | string | Transaction status: 0x1 for success, 0x0 for failure. |
cumulativeGasUsed | string | Total gas used in the block up to and including this transaction (hex). |
logs | Log[] | Array of event logs emitted by the transaction. See Log object. |
logsBloom | string | Bloom filter for the logs in this receipt. |
transactionIndex | string | Index of the transaction within the block (hex). |
Log object
Section titled “Log object”| Field | Type | Description |
|---|---|---|
address | string | Contract address that emitted the event. |
topics | string[] | Array of indexed event parameters. Topic 0 is typically the event signature hash. |
data | string | ABI-encoded non-indexed event parameters. |
Complete examples
Section titled “Complete examples”Index 0 — includes the base object (block header):
{ "payload_id": "0x03997352d799c31a", "index": 0, "base": { "parent_hash": "0x9edc29b8b0a1e31d28616e40c16132ad0d58faa8bb952595b557526bdb9a960a", "fee_recipient": "0x4200000000000000000000000000000000000011", "block_number": "0x158a0e9", "gas_limit": "0x3938700", "timestamp": "0x67bf8332", "base_fee_per_gas": "0xfa" }, "diff": { "state_root": "0x208fd63edc0681161105f27d03daf9f8c726d8c94e584a3c0696c98291c24333", "block_hash": "0x5c330e55a190f82ea486b61e5b12e27dfb4fb3cecfc5746886ef38ca1281bce8", "gas_used": "0xab3f", "transactions": ["0x7ef8f8a0b4afc0b7ce10e150801bbaf08ac33fecb0f38311793abccb022120d321c6d276..."], "withdrawals": [] }, "metadata": { "block_number": 22585577, "new_account_balances": { "0x000f3df6d732807ef1319fb7b8bb8522d0beac02": "0x0" }, "receipts": { "0x07d7f06b06fea714c1d1d446efa2790c6970aa74ee006186a32b5b7dd8ca2d82": { "type": "0x7e", "status": "0x1", "cumulativeGasUsed": "0xab3f", "logs": [], "logsBloom": "0x00000000...", "transactionIndex": "0x0" } } }}Index 1–N (diff only) — no base object:
{ "payload_id": "0x03997352d799c31a", "index": 4, "diff": { "state_root": "0x7a8f45038665072f382730e689f4a1561835c9987fca8942fa95872fb9367eaa", "block_hash": "0x9b32f7a14cbd1efc8c2c5cad5eb718ec9e0c5da92c3ba7080f8d4c49d660c332", "gas_used": "0x1234f", "transactions": ["0x02f90133...", "0x02f90196..."], "withdrawals": [] }, "metadata": { "block_number": 22585577, "new_account_balances": { "0x4200000000000000000000000000000000000015": "0x1234" }, "receipts": { "0x7c69632dc315f13a...": { "type": "0x2", "status": "0x1", "cumulativeGasUsed": "0x1234f", "logs": [], "logsBloom": "0x00000000...", "transactionIndex": "0x1" } } }}