#5A arrived too late — validators already voted for #5B
reorgs per day · Mar 2026
And why does the chain sometimes change its mind?
Each block contains a bunch of transactions. Each block points to the one before it. That's what makes it a chain.
Simple enough. Block 1 points to Block 2. Block 2 points to Block 3. Everyone agrees on the order.
Your transaction doesn't go directly into a block. It goes into a waiting room called the mempool.
A validator picks up transactions from this pool and packs them into the next block.
The validator proposes Block 5 with your transaction inside.
Your wallet shows the transaction as "confirmed." You tell your friend the money is sent.
But is it really final?
The blockchain is a global network. Thousands of computers. Different continents. Different internet speeds.
Sometimes, two valid blocks show up for the same slot.
Both blocks are valid. But they contain different transactions. Your 1 ETH is in Block 5A. A different transaction is in Block 5B.
Now the network has a decision to make: which chain is the real one?
Each small square is a validator. They "attest" to whichever block reached them first. This is not a deliberate choice — it's just network geography.
Block 5B got more votes. The network decides: Chain B wins.
Block 5A gets thrown away. The chain "reorganizes" around Block 5B instead.
Your node rewinds its state, discards Block 5A, and accepts Block 5B as the truth.
Your transaction was in Block 5A, which just got orphaned. It now has one of three possible fates:
Fate 1 — re-included (most likely)
Fate 2 — returned to mempool
Fate 3 — dropped forever
Fate 1 — re-included (most likely)
The winning block also has your transaction.
The validator who built Block 5B saw your transaction in the mempool too and included it. Nothing changes for you. Your 1 ETH still arrives.
Fate 2 — returned to mempool
Fate 3 — dropped forever
Fate 1 — re-included (most likely)
Fate 2 — returned to mempool
Your transaction goes back to the waiting room.
Block 5B didn't include your transaction. So it gets pushed back into the mempool, waiting to be picked up by the next block. Annoying, but not dangerous.
Fate 3 — dropped forever
Fate 1 — re-included (most likely)
Fate 2 — returned to mempool
Fate 3 — dropped forever
A conflicting transaction made yours invalid.
Block 5B contains a different transaction from the same sender with the same nonce. Since two transactions can't use the same nonce, yours becomes permanently invalid.
This is the actual double-spend vector.
A validator in Tokyo proposes a block. By the time it reaches validators in New York, they've already voted for the previous block as the chain head.
This is the most common cause. Pure physics.
~0.5 times per day on Ethereum.
Whether by bug or by malice, a validator proposes two different blocks for the same slot. Half the network sees one, half sees the other.
The one with more votes wins. The cheating validator gets slashed — their staked ETH is burned as punishment.
A proposer sees a juicy arbitrage trade in the latest block. They build a competing block that front-runs that trade to capture the profit.
This requires colluding with the next proposer — expensive and risky, but the payoff can be millions.
This is what PBS (Proposer-Builder Separation) is designed to prevent.
Ethereum's Casper FFG finalizes blocks every 2 epochs (~64 slots). Once finalized, a block cannot be reorged — reversing it would require 1/3 of all staked ETH to be slashed.
This is why the JSON-RPC API has three block tags:
finalized — irreversible. No reorg possible.
safe — very unlikely to be reorged.
latest — newest block. Could still be reorged.
● Two valid blocks compete for the same position.
● Validators vote. The heavier chain wins.
● The losing block is discarded. Its transactions scatter.
● Most transactions get re-included. Some return to the mempool. A few die.
● After ~13 minutes, finality makes reorgs impossible.
On Ethereum post-Merge, 1-slot reorgs happen about once every two days.
Deeper reorgs are essentially unheard of.
Over 222,883 forked blocks have been recorded on Ethereum. Most are single-slot depth-1 reorgs caused by network latency — not attacks.
No deep reorgs have occurred since the merge to proof-of-stake.
#5A arrived too late — validators already voted for #5B
reorgs per day · Mar 2026
a visual explainer on blockchain reorgs
built for anubhav.wtf