Skip to content

BFT Quorum Thresholds

Hugo Perez edited this page Apr 5, 2026 · 1 revision

BFT Quorum Thresholds

Supermajority threshold: 6667 basis points (66.67%) via has_supermajority().

All quorum checks use lib_types::consensus::threshold::has_supermajority(votes, total).
No raw >= / > / < comparisons. One function, one threshold, one source of truth.

Quorum Table

Validators Needed Percentage Byzantine faults tolerated
3 3/3 100% 0
4 3/4 75% 1
5 4/5 80% 1
7 5/7 ~71% 2
10 7/10 70% 3
14 10/14 ~71% 4
21 15/21 ~71% 6
50 34/50 68% 16
100 67/100 67% 33

Formula

threshold_bps = 6667  (66.67%)
has_supermajority(votes, total) = votes * 10_000 >= total * 6667

This is mathematically equivalent to votes >= floor(total * 2 / 3) + 1 for all positive integers, proven by exhaustive test for n=1..200.

Why 66.67%

BFT tolerates f < n/3 Byzantine validators. Safety requires n - f honest validators to agree, which is n - floor((n-1)/3) = ceil(2n/3). The 6667 bps threshold encodes this bound exactly.

  • Below 6667 bps: breaks the mathematical proof that BFT tolerates f < n/3.
  • Above 6667 bps: stricter, safe, but reduces liveness (more validators needed to commit).

Governance Tiers (future)

The same meets_threshold(numerator, denominator, threshold_bps) function supports governance voting tiers:

Proposal Type Quorum Approval
Operational 1000 bps (10%) 5001 bps (>50%)
Sector Policy 1500 bps (15%) 6000 bps (60%)
Network Parameter 2500 bps (25%) 6667 bps (66.67%)
Constitutional 4000 bps (40%) 8000 bps (80%)

Clone this wiki locally