MrDeFi
Ethereum2026-02-194 min read

How Ethereum Achieves Finality: Epochs, Checkpoints Explained

How Ethereum's Casper FFG finality gadget uses epochs and checkpoints to make blocks irreversible, and what 'finalized' really guarantees.

Ethereum achieves finality through a mechanism called Casper FFG (Friendly Finality Gadget), which groups blocks into epochs and has validators vote on "checkpoint" blocks across consecutive epochs; once two consecutive epochs' checkpoints accumulate votes from at least two-thirds of all staked ETH, the earlier checkpoint and everything before it become finalized — meaning reverting it would require destroying a huge amount of staked ETH through slashing. This typically takes about 12 to 15 minutes after a block is first produced.

Slots, epochs, and checkpoints

Ethereum's proof-of-stake chain is organized into fixed time units:

  • A slot is a 12-second window during which one validator is chosen to propose a block (though a slot can also go empty if the proposer misses it).
  • An epoch is a group of 32 consecutive slots — about 6.4 minutes.
  • A checkpoint is simply the first block of an epoch (or the most recent block if that slot was empty). Checkpoints are the specific blocks that Casper FFG's voting process cares about, rather than every individual block.

For more on how proposers are selected and blocks get produced within this structure, see our guide to Ethereum block production.

How the voting works

In every epoch, every active validator is assigned to a committee and required to submit an "attestation" — a vote that includes which checkpoint it considers the current head of the chain, plus which prior checkpoint it considers the most recently justified one. These attestations get aggregated by block proposers and included in upcoming blocks.

Finality proceeds in two steps:

  1. Justification. If a checkpoint receives attestations representing at least two-thirds of the total staked ETH, it becomes "justified." This is a provisional milestone, not yet a permanent guarantee.
  2. Finalization. If a checkpoint is justified, and the checkpoint immediately following it (the next epoch's checkpoint) is also justified, the earlier of the two checkpoints becomes finalized — along with every block before it.

This two-step "justify, then finalize the previous one" structure is why the earliest possible finality takes two full epochs rather than one, and it's the process our piece on single slot finality discusses shortening in a future upgrade.

What "finalized" actually guarantees

Before finality, a block's position in the chain is determined by the fork-choice rule (LMD-GHOST, covered in our fork choice explainer), which picks the chain with the greatest accumulated validator support. That's a strong, practically reliable signal, but it's probabilistic — in principle, a sufficiently well-resourced set of validators voting differently could cause the chain to reorganize around a different fork.

Once a block is finalized, that possibility is closed off in a specific, enforceable way: reverting a finalized block would require validators controlling at least one-third of all staked ETH to provably violate the protocol's slashing conditions (specifically, by signing two conflicting versions of history). Because those violations are cryptographically detectable and automatically punished by burning the offending stake, an attacker attempting to revert a finalized block would be destroying a documented, enormous amount of their own capital in the process — not just losing an unlikely race.

Stage Typical time from block creation Guarantee
Included in a block Immediate Ordered in the current canonical chain per the fork-choice rule
A few blocks of confirmations ~1–2 minutes Very low probability of reorg, not cryptographically guaranteed
Justified 1 epoch (6.4 min) Provisional; can theoretically still be superseded
Finalized 2 epochs (12–15 min) Reverting requires provable, slashable protocol violation by 1/3+ of staked ETH

Why this matters practically

Most day-to-day activity doesn't require waiting a full 12 to 15 minutes. Exchanges, DEXs, and wallets typically treat a small number of confirmations as sufficient for everyday transfers, because the probability of a reorg past a few blocks is already extremely low under normal network conditions. Full finality matters most for high-value settlement, cross-chain bridges deciding when to release funds on another chain, and any system where an eventual, cryptoeconomically-guaranteed irreversibility — not just a statistical likelihood — is the actual requirement.

It's also worth knowing this isn't unique to Ethereum's design choice to use proof-of-stake generally — see our comparison of proof-of-work versus proof-of-stake for how finality assumptions differ across consensus models, since Bitcoin's proof-of-work chain never finalizes in this strict sense and instead relies purely on accumulating confirmations.

Bottom line

Ethereum's finality isn't instant, but it is concrete: after roughly two epochs of validator attestations justify consecutive checkpoints, a block becomes finalized, and undoing it would require validators to destroy at least a third of all staked ETH by provably breaking the protocol's rules. That two-epoch delay is a known tradeoff the network's roadmap is actively working to shorten through proposals like single slot finality, but even today, "finalized" on Ethereum means something cryptoeconomically enforceable, not just a comforting number of confirmations.

Related articles

This article is for educational purposes only and is not financial advice. DeFi involves significant risk, including total loss of funds. Always do your own research.