ethereumuptime.com / articles
Explainer

The May 2023 finality delays.

On and , Ethereum’s beacon chain twice stopped finalising, for roughly 25 and 64 minutes, while it kept producing blocks the whole time. It’s the closest thing to an outage in the network’s history, and it wasn’t one. Here’s what actually happened.

Two guarantees, not one

Start by separating two things that usually travel together.

The first is liveness: the chain keeps producing blocks. New transactions get included, the head keeps advancing, users can keep transacting. The other is finality: past a certain point a block becomes economically irreversible, and undoing it would mean destroying an enormous amount of staked value. Under normal conditions Ethereum finalises on a rolling basis, roughly every two epochs, about every 13 minutes.

Almost always these two move together, so people treat them as the same thing. In May 2023 they came apart. Liveness held. Finality lapsed.

What happened

Twice within two days, the network hit a stretch where not enough attestations were being processed in time for the chain to finalise. Blocks kept being produced and transactions kept being included, but the finalised checkpoint stopped advancing: first for roughly 25 minutes, then, the next day, for roughly 64 minutes.

The trigger was an unusual load pattern on the consensus layer. A spike in the work validators’ consensus clients had to do, processing and aggregating a large volume of attestations, pushed some implementations past what they could keep up with in the time available. As those nodes fell behind, they contributed fewer timely attestations, which made finalising harder still. That’s the kind of feedback loop that can feed itself for a while.

Why it was serious

Non-finalisation is not nothing. Finality is Ethereum’s strongest settlement guarantee, and plenty of things lean on it: bridges, exchanges crediting deposits, anything that waits for “finalised” before treating a transfer as done. All of them correctly turn cautious when the finalised checkpoint stops moving. For that window, the firmest promise the chain makes was running late.

It’s also why this event, alone in the incident history, gets a warning marker rather than a clean pass. Nothing else has come as close to a real consensus failure.

Why it was not a halt

And yet the chain never stopped. Three things held:

  • Blocks kept coming. Liveness never failed. The head advanced the whole time, and users who didn’t need the very strongest settlement guarantee were largely unaffected.
  • It recovered on its own. No coordinated restart, no rollback, no out-of-band intervention. The network caught back up and resumed finalising by itself once the load eased and clients recovered.
  • The design behaved as intended. Ethereum’s consensus is built to keep producing blocks even when it can’t finalise, exactly so that a finality stall degrades the network instead of stopping it. That’s the difference between a bad hour and an outage.

What changed afterward

The client teams treated it as the warning it was. They optimised the work that had overloaded consensus clients and made the specific load patterns behind the stall cheaper to handle, which cut the chance of a repeat. As with most of Ethereum’s rough moments, the lasting result was a network that handles that failure mode better than it did before.

The takeaway

May 2023 is the honest asterisk on “Ethereum has never gone down.” For about an hour, its strongest guarantee lapsed. But blocks never stopped, nobody had to step in, and the chain fixed itself. On the strict definition this site uses, that still counts as zero minutes of downtime. It’s the exception that shows exactly where the line is.

Sources & further reading

  1. Post-incident write-ups from the Ethereum consensus client teams (Prysm, Teku and others) covering the May 2023 non-finalisation events.
  2. Beacon-chain finality data via beaconcha.in for the timing of the two windows.
  3. How this page measures finality, the finalized-epoch lag the live status card watches.

Durations are as publicly reported at the time of writing.

Is Ethereum producing blocks right now? The front page checks it live against several independent public nodes, every twelve seconds.