Fixing Nonce Issues on Base Network
Last updated: November 13, 2025
Problem
When using eth_getTransactionCount on Base, you may see:
Nonces jumping backwards (e.g., 1 → 2 → 3 → 2 → 2 → 5)
"Nonce too low" or "known transaction" errors
Transactions failing or getting stuck
This typically happens when sending multiple transactions quickly from the same address.
Why This Happens
Base's Flashblocks feature adds pending transactions to a cache when calculating nonces. This cache state can vary between nodes, causing eth_getTransactionCount with "pending" to return inconsistent values.
Solutions
Option 1: Disable Flashblocks (Easiest Fix)
If you're using Flashblocks, disable it.
This resolves the nonce inconsistency immediately. Your transactions will still process normally through regular Base blocks - you'll just lose sub-second pre-confirmations.
This fixes the issue for most users.
Option 2: Manage Nonces Client-Side (For Advanced Users)
If you need Flashblocks or high-volume transaction sending, manage nonces in your application:
Get starting nonce once:
web3.eth.getTransactionCount(address, "latest")Store it locally and increment for each transaction sent
Persist to database to survive restarts
Only re-query the network if you hit errors
Key Points:
Always use
"latest", never"pending"Use locks/atomic operations if sending from multiple processes
Option 3: Query with "latest" Parameter
As a fallback, always query with "latest" instead of "pending" and add retry logic for failures. This is less reliable but may work for simple, low-volume applications.
Which Solution Should I Use?
If you... | Use... |
Are using Flashblocks and can disable it | Option 1 - Disable Flashblocks |
Need Flashblocks pre-confirmations | Option 2 - Client-side management |
Send many transactions per second | Option 2 - Client-side management |
Have a simple, low-volume app | Option 1 or Option 3 |
Technical Background
Base uses a centralised sequencer without a public mempool. When you query with "pending", Base calculates the pending nonce as: latest confirmed nonce + pending transactions in Flashblocks cache.
Since the Flashblocks cache isn't perfectly synchronised across all Base nodes, different requests can return different pending nonce values. This is a known limitation of Base's architecture.
Need Help? Contact Quicknode Support for further assistance.