Skip to main content

DoubleValidationCompleteness

Trait DoubleValidationCompleteness 

Source
pub trait DoubleValidationCompleteness:
    Intersection
    + CertificateEmbedsQuorum
    + CertificateSignaturesVerify
    + ThresholdArithmetic { }
Expand description

Lemma (Two validated blocks in one round convict a validity threshold). If two valid ValidatedBlockCertificates for conflicting blocks are certified in the same round and are valid for the same committee, extract_double_validations returns accepted DoubleVote proofs naming validators of total weight at least Committee::validity_threshold.

Proof. By CertificateEmbedsQuorum both signature sets are quorums; by Intersection their intersection has weight at least f⁺; double_vote emits a proof for each member, with kind = Validated and the round both share. Each is accepted: the blocks differ, the chain and height agree, and by CertificateSignaturesVerify the extracted signatures verify individually. ∎

This is the accountability counterpart of UniqueValidatedBlockPerRound: that lemma says the situation cannot arise below the fault bound, this one says it is attributable if it does. Note the round equality is required — validating conflicting blocks in different rounds is legitimate, which is exactly what locks exist to regulate.

Implementors§