Flashblocks on Base are a transaction preconfirmation feature that provides near-instant transaction feedback by streaming partial block updates every 200 milliseconds. This significantly reduces the effective block time from Base's standard 2 seconds to 200 milliseconds, a 10x improvement.
Flashblocks is great for developers who demand instant UX such as decentralized exchanges, onchain gaming, and other high-frequency applications.
Flashblocks is currently supported on both Base testnet and mainnet and can be accessed using your existing Alchemy Base RPC.
| Network | Flashblocks Availability |
|---|---|
| Base Sepolia | ✅ |
| Base Mainnet | ✅ |
Use the pending tag to retrieve the latest Flashblock:
curl https://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY> -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["pending",true],"id":1}'Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"number": "0x1234",
"hash": "0x...",
"transactions": [...]
}
}Use the existing receipt RPC to get preconfirmed receipts:
curl https://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY> -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x..."],"id":1}'Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"transactionHash": "0x...",
"blockNumber": "0x1234",
"status": "0x1"
}
}Use the pending tag to get the address balance in the latest Flashblock:
curl https://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY> -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x...","pending"],"id":1}'Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x0234"
}Use the pending tag to get the address nonce in the latest Flashblock:
curl https://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY> -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x...","pending"],"id":1}'Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x1b" // 27 transactions
}Use the existing get transaction by hash RPC to get preconfirmed transactions:
curl https://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY> -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x..."],"id":1}'Example Response
{
"type": "0x2",
"chainId": "...",
"nonce": "...",
...
}Use the pending tag to execute a smart contract call against the latest Flashblock:
curl https://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY> -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x...","data":"0x..."},"pending"],"id":1}'Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x0000000000000000000000000000000000000000000000000000000000000001"
}Use the pending tag to simulate transactions against the latest Flashblock:
curl https://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY> -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_simulateV1","params":[{"blockStateCalls":[{"calls":[{"to":"0x...","data":"0x..."}],"stateOverrides":{}}],"traceTransfers":true,"validation":true},"pending"],"id":1}'Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"calls": [
{
"status": "0x1",
"gasUsed": "0x5208",
"returnData": "0x"
}
]
}
]
}Use the pending tag to estimate gas against the latest Flashblock:
curl https://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY> -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{"to":"0x...","data":"0x..."},"pending"],"id":1}'Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x5208"
}Use the pending tag for toBlock to retrieve logs from the latest Flashblock:
curl https://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY> -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"fromBlock":"latest","toBlock":"pending","address":"0x...","topics":["0x..."]}],"id":1}'Example Response
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"address": "0x...",
"topics": ["0x..."],
"data": "0x...",
"blockNumber": "0x1234",
"transactionHash": "0x...",
"transactionIndex": "0x0",
"blockHash": "0x...",
"logIndex": "0x0",
"removed": false
}
]
}Flashblocks-enabled WebSocket subscriptions stream preconfirmed data at approximately 200ms intervals via eth_subscribe. Standard subscription types (newHeads, logs, newPendingTransactions) are also supported.
Connect using your Base WebSocket endpoint:
wss://base-mainnet.g.alchemy.com/v2/<YOUR_API_KEY>wss://base-sepolia.g.alchemy.com/v2/<YOUR_API_KEY>
Flashblocks subscription types
newFlashblockTransactions
Receive each transaction as it becomes preconfirmed into a Flashblock. Pass true as the second parameter to include full transaction objects and associated logs.
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_subscribe",
"params": ["newFlashblockTransactions"]
}With full transaction data:
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_subscribe",
"params": ["newFlashblockTransactions", true]
}pendingLogs
Monitor contract events from preconfirmed transactions with sub-block latency. You can optionally filter by contract address and topics.
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_subscribe",
"params": [
"pendingLogs",
{
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
}
]
}The address field accepts a single address or an array of addresses, and topics follows the same format as eth_getLogs.
newFlashblocks
Receive full block state updates as each Flashblock is constructed, with accumulated preconfirmed state for the block in progress.
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_subscribe",
"params": ["newFlashblocks"]
}Subscription response
After subscribing, you receive a subscription ID:
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x1887ec8b9589ccad00000000000532da"
}Events are then delivered through eth_subscription notifications:
{
"jsonrpc": "2.0",
"method": "eth_subscription",
"params": {
"subscription": "0x1887ec8b9589ccad00000000000532da",
"result": { ... }
}
}eth_unsubscribe
Cancel any active subscription using the subscription ID:
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_unsubscribe",
"params": ["0x1887ec8b9589ccad00000000000532da"]
}For more details, see the Base Flashblocks API reference and the Base Flashblocks documentation.