justification and finalization
Justification and finalization are the two stages by which Casper FFG promotes a checkpoint from 'agreed upon' to 'irreversible.' Both operate on checkpoints — the first block of each epoch — and both depend on supermajority links, where validators controlling more than two-thirds of total stake cast attestations linking a source checkpoint to a target checkpoint. The two-step structure is what gives Ethereum its hard finality without ever requiring a single instantaneous global vote.
A checkpoint becomes justified the moment a supermajority link points to it as the target: more than two-thirds of stake has agreed it belongs on the canonical chain. Justification is strong but not yet permanent — it can, in rare adversarial conditions, be skipped over. Finalization is the second click of the ratchet: when a justified checkpoint is itself the source of a new supermajority link that justifies the very next checkpoint (its direct child), the earlier checkpoint is finalized. In other words, two consecutive justified checkpoints with a supermajority link between them finalize the first.
Finalization is the strongest guarantee Ethereum offers: undoing a finalized checkpoint would require an attacker to violate a slashing condition with at least one-third of all staked ETH, getting that stake provably burned — the accountable-safety property. Under normal conditions a block finalizes within about two epochs, roughly 12.8 minutes, which is why exchanges and bridges wait for finality rather than a fixed number of confirmations. If finalization stalls because too much stake is offline, the inactivity leak gradually restores the conditions for a supermajority link to form again.
Justified is not the same as final: a justified checkpoint is one click short of irreversible. In normal operation each epoch justifies the new checkpoint and finalizes the previous one, so finality always trails the head by about two epochs.