In Casper FFG, a checkpoint takes two voting sessions to be finalized.

Say checkpoint c. First, c needs to be voted to be justified (supermajority link c'->c). Then, c needs to be voted again to be finalized (c->c''). Why is the finalized phase necessary? If c already received >2/3 votes in the first round, why can't we be sure that it should be included in the canonical chain?

1 Answer 1


Although if a checkpoint has already received >2/3 votes in the first round and is justified, we can't be sure that it would be included in the canonical chain because although reorganization is unlikely at this phase, it's still possible, and all that takes is either a large network delay or attack on the network.

Because of this, a finalized phase is necessary because the probability that a finalized block to be reorganized is extremely unlikely, as it requires >2/3 of validators to finalize a competing chain. Reorganizing a finalized block also requires at least 1/3 of the total staked ether to be slashed, which is always expected to cost the attacker millions of ETH.

So a finalized epoch is a really really justified epoch, in essence, with one key difference - when things are justified, you can still rewind time to go to that point. When you finalize, it becomes incredibly difficult to rewrite history.




Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.