enter image description here Casper FFG states that it is impossible for any two conflicting checkpoints to be finalised unless >= 1/3 of the validators violate one of the two Casper commandments. I struggle to see how this can be the case if we start from the root in the above scenario.

Given that r is both finalised and justified, we see that there can be a supermajority link from r->b1 and r->b2. Validators can publish both of these votes (r->b1 and r->b2) without violating either of the slashing condition because 1) h(b1)=1 and h(b2)=3 thus h(b1)≠h(b2), and 2) no votes are within the span of other votes.

Since both b1 and b2 are justified, then validators can also publish votes on b1->a and b2->c. Again, because 1)h(a)=2 and h(c)=4 thus h(a)≠h(c) and 2) no votes are within the span other other votes, b1 and b2 are then both finalised.

Wouldnt't there be two conflicting, finalised checkpoints, namely b1 and b2, in this case? What am I missing in my understanding?

  • hmm trying to understand, why is b1 and b2 conflicting? The chain starting at genesis r->b1->b2->b3 looks OK? (If "a" and b2 are finalized then I would see that as conflicting.)
    – eth
    Oct 30, 2022 at 7:02
  • I think im imagining a scenario where there are two chains, namely r->b1->a and r->b2->c (where the second chain skips b1). Suppose both b1 and b2 are finalised. Would b1 not be conflicting with b2 because b1 is b2's ancestor/in the same branch?
    – orangutan
    Oct 31, 2022 at 18:11
  • I think I understand your question :) The 2 chains can continue with validators making non-slashable votes on both chains? From what you describe, it looks possible to me. I am out of my depth because Gasper is complicated and there's plenty I haven't read, such as ethresear.ch/t/balancing-attack-lmd-edition/11853 and arxiv.org/abs/2209.03255 If you are interested, those might provide some illumination?
    – eth
    Nov 1, 2022 at 5:05

2 Answers 2


This is a good question and the answer resides in the fork choice rule. In the Casper paper, they states clearly that validators must:


The reason why your example is not possible with less than 1/3 of validators misbehaving is because more than 1/3 of validators did not respect this fork choice rule.

How do I know? Since there is a supermajority link between a and b1 (b1->a) then at least 2/3 of the validators have seen b1 as justified. Then why would validators make a supermajority link r->b2 when at least 2/3 of the validators have seen a checkpoint with greatest height than r, namely the checkpoint b1?

Your example was illustrated in the Casper paper: enter image description here


upavloff's answer is incorrect/incomplete I think, since a validator that fails to 'FOLLOW THE CHAIN CONTAINING THE JUSTIFIED CHECKPOINT OF THE GREATEST HEIGHT' won't necessarily be slashed unless it can somehow be proven that it didn't do this.

In this case, the problem is that a vote for (r,b2) is a surround vote of (b1,a), and hence any validator who does both will be slashed. Implicitly, such a surround vote means that the validator knew that b1 was justified (since it voted (b1,a)) and then went ahead and followed a 'shorter' chain by voting for b2 from r.

Your Answer

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

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