Expand description
Accountability: convicting the validators responsible when agreement fails.
CommitAgreement holds only while MaxByzantineWeight does. This module proves what
happens when it does not: a violation leaves self-contained evidence naming validators of at
least Committee::validity_threshold weight — more than the fault bound permits, so the
conviction set is itself a proof that the assumption was broken.
Two properties, deliberately independent:
- Soundness (
ProofSoundness) — a proof thatEquivocationProof::checkaccepts names a genuinely faulty validator. No correct validator is ever convictable. - Completeness (
ConflictCompleteness) — two conflicting confirmed certificates yield enough accepted proofs, from the certificates alone.
Neither depends on MaxByzantineWeight, which is the point: both must hold precisely in
the regime where the fault bound has failed. Soundness is per-validator and rests only on
UnforgeableSignatures; completeness needs only Intersection, which in turn needs only
ThresholdArithmetic. Accountability therefore sits on a strictly weaker assumption base
than the safety theorem it backstops.
Traits§
- Accountability
Scope - Remark (What accountability does not cover). Four exclusions, the third being the substantive one.
- Accountable
Safety - Theorem (Accountable safety). For every chain and height, one of the following holds:
- Chain
Auditability - Lemma (An unsound chain convicts its attesters). If a confirmed certificate’s chain is not
sound (
SoundChain),audit_confirmationreturns a non-empty list of proofs thatEquivocationProof::checkaccepts. - Chain
Tiles Rounds - Lemma (A sound chain tiles every round below the confirmation). Let a valid
ConfirmedBlockCertificatein roundscarry a non-empty chain with link roundsρ₀ < ρ₁ < … < ρₖ. Thenρₖ = s, linkiwas cast under unlocking roundρᵢ₋₁(and link0underNone), and the half-open windows - Conflict
Completeness - Theorem (Completeness — a conflict convicts a validity threshold). Let two valid
ConfirmedBlockCertificates for conflicting blocks at the same chain and height, valid for the same committee and carrying sound chains (SoundChain), be certified in roundsr ≤ s. Thenextract_equivocationsapplied to theirJustifiedConfirmations returns proofs thatEquivocationProof::checkaccepts, naming validators of total weight at leastCommittee::validity_threshold. - Double
Validation Completeness - 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_validationsreturns acceptedDoubleVoteproofs naming validators of total weight at leastCommittee::validity_threshold. - Double
Vote Soundness - Lemma (Double votes are never honest). No correct validator is named by an accepted
DoubleVoteproof. - First
Round Soundness - Lemma (First-round attestations are never honestly contradicted). No correct validator is
named by an accepted
FirstRoundViolationproof. - Invalid
Justification Soundness - Lemma (Attested justifications are never honestly invalid). No correct validator is named
by an accepted
InvalidJustificationproof, when the proof is adjudicated against the committee of the vote’s own epoch (MisbehaviourProof). - Lock
Violation Soundness - Lemma (Lock violations are never honest). No correct validator is named by an accepted
LockViolationproof — subject to the residual obligation below. - Misbehaviour
Proof - Definition (Proof of misbehaviour). A proof of misbehaviour against validator
vis anEquivocationProofnamingvfor whichEquivocationProof::checkreturnsOkagainst a committee. There are four shapes, and each exhibits a pair ofv’s own signatures — or, forInvalidJustification, a single signature plus the opening it commits to. - Proof
Soundness - Theorem (Soundness — no correct validator is convictable). If
EquivocationProof::checkaccepts a proof namingvagainst the committee of the epoch its votes were cast in, thenvis faulty in the sense ofCorrectValidator. - Sound
Chain - Definition (Sound justification chain). A
JustificationChaincarried by a confirmed certificate for blockBis sound when every link’s signatures form a quorum over theValidatedpayload reconstructed for that link — the payload withB’s hash, the link’s round, the previous link’s round as unlocking round, and the previous link’s commitment.