Skip to main content

DoubleVoteSoundness

Trait DoubleVoteSoundness 

Source
pub trait DoubleVoteSoundness:
    UnforgeableSignatures
    + OneValidationVotePerRound
    + OneConfirmationVotePerRound
    + ConsensusInstance
    + SafetyStateRecovery { }
Expand description

Lemma (Double votes are never honest). No correct validator is named by an accepted DoubleVote proof.

Proof. An accepted proof exhibits two signatures by v over VoteValues that agree on round and kind, whose headers share a chain and height, and whose hashes differ; by UnforgeableSignatures only v could have produced them, so a correct v cast both votes. Sharing a chain and height means both votes belong to the same ConsensusInstance โ€” a reset changes the height, and SafetyStateRecovery shows the one path that recreates an instance at an unchanged height preserves the votes rather than forgetting them. Then:

Implementorsยง