What Happens When You Send a Transaction to an Out-of-Sync Node?
The transaction will appear to be accepted by the node, but it will never be included in a block on the canonical chain. You will see a "pending" status that never resolves, and your wallet will show the transaction as stuck until you replace it or the node catches up and rejects it. The exact behavior depends on whether the node is behind the chain tip or has forked onto a different chain.
How an out-of-sync node processes your transaction
When you submit a transaction to an nodes/rpc-endpoint-basics/">RPC endpoint, the node performs a series of checks before relaying it to its peers. An out-of-sync node may pass some or all of these checks, depending on how far behind it is.
- Nonce validation: The node checks your account nonce against its local state. If the node is behind, it sees an older nonce value. Your transaction may pass nonce validation because your wallet sent the correct nonce for the chain's current state, but the node's state is stale.
- Balance check: The node verifies you have enough ETH or gas to cover the transaction. If the node's state is outdated, it may see a balance that is too low (if you spent funds since the node's last update) or too high (if you received funds). The transaction will fail the balance check if the node thinks you're broke, or pass if it thinks you still have unspent funds.
- Signature verification: This is purely cryptographic and does not depend on chain state. The node will always accept a valid signature.
- Gas estimation: The node performs
eth_estimateGasagainst its local state. If the node is behind, the estimate may be wildly inaccurate - too low for a contract that has since become more expensive to execute, or too high for one that has been optimized.
If the node accepts the transaction, it adds it to its local mempool and attempts to relay it to peers. But here is the critical failure: an out-of-sync node cannot produce valid blocks or reliably forward transactions to the real network.
What your wallet shows
Your wallet (MetaMask, WalletConnect, or a script) sends the transaction and receives a transaction hash. The wallet then polls the node with eth_getTransactionReceipt for that hash. Because the node has the transaction in its mempool, it returns a "pending" status. This status persists indefinitely because the node never sees the transaction mined on the canonical chain.
After several minutes, most wallets display a "stuck transaction" warning. The wallet may offer to speed up (replace with higher gas) or cancel (send a zero-value transaction with the same nonce). Both of these actions require submitting a new transaction to the same node - which is also out of sync. The replacement will face the same problem.
When the node eventually syncs
If the node catches up to the chain tip, one of two things happens:
-
The node realizes it was behind: It discards its stale mempool and fetches the current chain state. Your transaction is dropped from the mempool because the nonce is now too low (the real chain already has a transaction with that nonce, or the state has moved past it). You receive no error - the transaction simply vanishes from the node's view. Your wallet shows it as "dropped" or "replaced."
-
The node was on a fork: If the node had synced a minority chain (e.g., during a reorg), your transaction was included in blocks on that fork. When the node reconnects to the majority chain, it abandons the fork. The transaction never appears on the real chain. You lose the gas you paid for the fork block, but the transaction is otherwise harmless.
How to Detect You Are Using an Out-of-Sync Node
You can check a node's sync status before submitting a transaction:
- Call
eth_syncingon the endpoint. Returnsfalseif fully synced, or an object withstartingBlock,currentBlock, andhighestBlockif syncing. - Compare
eth_blockNumberfrom your node with a trusted public endpoint (e.g., Etherscan's API or a major provider). A difference of more than a few blocks indicates the node is behind. - Check the node's peer count via
net_peerCount. Zero peers means it cannot sync at all.
What to Do If Your Transaction Is Stuck on an Out-of-Sync Node
- Switch to a synced RPC endpoint immediately. Use a reliable public provider or your own fully synced node.
- Resubmit the transaction with the same nonce but higher gas. Your wallet's "speed up" feature does this. The new transaction will arrive at the real network and either replace the stuck one (if the nonce is still valid) or be rejected with a "nonce too low" error (if the original was already mined).
- If the nonce is too low, the original transaction was actually mined on the real chain - you just couldn't see it. Check the transaction hash on a block explorer. If confirmed, no action is needed.
- If the nonce is valid and the stuck transaction never appeared on the real chain, cancel it by sending a zero-value transaction to yourself with the same nonce and a gas price high enough to be mined quickly.
When running your own node
If you run a self-hosted node, out-of-sync conditions are a maintenance issue. Common causes include:
- Disk space full: The node cannot write new blocks.
- Network connectivity: The node lost peering and cannot fetch new blocks.
- Client software bug: Some clients (especially during network upgrades) stall or enter a bad state.
- Hardware limits: Insufficient RAM or CPU causes the node to fall behind and never catch up.
Monitor your node's block height regularly. Set alerts for when it lags more than 5 blocks behind the network average. Do not use your node as an RPC endpoint if it is out of sync - configure a failover to a trusted provider until the node recovers.
Not financial advice. starname.me publishes market data and general information about digital assets. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.
Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.