Boomspot
  • Home
Loading...
Boomspot

Daily tech news, software development coverage, Apple reporting, and the gear behind modern music making.

TwitterLinkedIn

Browse

  • Categories
  • Tags
  • Authors

Company

  • About
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  • Unsubscribe

© 2026 Boomspot. All rights reserved.

Built by Boomspot
Updated hourly

AI Content Disclosure: Articles on Boomspot are researched, written, and edited with the assistance of advanced AI systems. We combine software-assisted research with editorial oversight to deliver useful, accurate, and practical technical and music production content. Learn more about our editorial approach.

  1. Home
  2. Coding
  3. Byzantine Quorum Size Formula: Why 3-of-4 Beats 2-of-3
coding7 min read

Byzantine Quorum Size Formula: Why 3-of-4 Beats 2-of-3

2-of-3 quorums look safe until a Byzantine witness double-signs. Here's the formula that proves why 3-of-4 is the real minimum for f=1.

S

Staff

August 20, 2026

Byzantine Quorum Size Formula: Why 3-of-4 Beats 2-of-3

Ask ten engineers how many nodes need to agree before a signed checkpoint is trustworthy, and most will say "a majority." That answer works fine when every node is honest. It falls apart the moment one node can lie to two different observers at once, which is exactly what a compromised or buggy authority can do.

This is the problem Byzantine quorum systems exist to solve, and the fix isn't a bigger majority. It's a specific inequality that tells you how large your witness set needs to be for a given number of tolerated faults. Below is the derivation, a worked attack walkthrough, a lookup table, and a checklist you can apply to any quorum-based verification system you're building.

The Problem: Majority Vote Doesn't Survive Equivocation

A single authority signing a checkpoint proves that checkpoint existed. It does not prove the authority showed the same checkpoint to everyone. If that authority is compromised, it can hand one client checkpoint X and another client checkpoint Y, and both clients will see a locally valid, correctly signed view with no way to detect the fork on their own.

Adding witnesses fixes this only if you choose the witness threshold correctly. A threshold that looks safe on a whiteboard, like 2-of-3, can still let two contradictory checkpoints both pass. The rest of this guide walks through why, and what threshold actually closes the gap.

Step 1: Understand What Quorum Intersection Actually Guarantees

The property you need isn't "most witnesses agree." It's "any two quorums that could each independently form must share at least one honest member." That shared member is what prevents two conflicting histories from both getting approved, because an honest witness never signs two different things for the same slot.

If two valid quorums can form without sharing an honest witness, you have no safety guarantee at all. Two isolated observers can each collect a legitimate-looking quorum for two different, mutually exclusive facts. That's the exact failure mode a compromised authority exploits.

Step 2: Walk Through the Double-Signing Attack on 2-of-3

Here's the concrete failure. Set up three witnesses, A, B, and C, with a 2-of-3 approval threshold. Witness B turns out to be Byzantine, meaning it will sign whatever it's told to sign, including two contradictory things.

An attacker asks B to sign root X alongside A, and separately sign root Y alongside C. Now root X has signatures from A and B, two out of three, which clears the 2-of-3 bar. Root Y has signatures from B and C, also two out of three, which also clears the bar.

Both roots are independently "approved." Job 1 sees root X as valid. Job 2 sees root Y as valid. The only witness common to both quorums is B, the compromised one, so there's zero honest overlap forcing consistency.

The threshold felt safe because it was a majority, but a majority isn't the property that matters. Intersection is.

Here's the same attack expressed as a quick simulation you can run to convince yourself:

witnesses = {"A", "B", "C"}
byzantine = {"B"}

root_x_signers = {"A", "B"}
root_y_signers = {"B", "C"}

quorum = 2

root_x_valid = len(root_x_signers) >= quorum
root_y_valid = len(root_y_signers) >= quorum
honest_overlap = (root_x_signers & root_y_signers) - byzantine This pairs well with [ai code review checklist: what to automate vs block explained](/ai-code-review-checklist-what-to-automate-vs-block).

print(root_x_valid, root_y_valid, honest_overlap)
## True True set() -- both roots pass, no honest witness forces a choice

Step 3: Derive the Formula That Actually Closes the Gap

The rule you need is: for up to f Byzantine witnesses among n total, any two valid quorums of size q must intersect in more than f members. Written as an inequality, that's q > (n + f) / 2.

The logic behind it is simple once you see it. Two quorums of size q drawn from n witnesses overlap in at least 2q - n members, by basic set arithmetic. For that overlap to guarantee at least one honest witness even in the worst case, where f of the overlapping members are Byzantine, you need the overlap to exceed f. Solve 2q - n > f for q and you get q > (n + f) / 2.

Plug in f = 1. With n = 3, the inequality becomes q > 2, meaning q must be at least 3, not 2. That's why 2-of-3 fails and 3-of-3 would be needed if you insist on only three witnesses, which leaves zero slack for an offline witness. The practical fix is to add a fourth witness instead.

Step 4: Apply the Standard Construction, n = 3f + 1 and q = 2f + 1

Rather than solving the inequality from scratch every time, use the standard Byzantine quorum construction: set n = 3f + 1 total witnesses and require q = 2f + 1 signatures. For f = 1, that's n = 4 and q = 3, the 3-of-4 rule.

Check it against the attack from Step 2. With four witnesses, A, B, C, D, and B still Byzantine, root X needs three signers, say A, B, and one more. Root Y needs three signers too.

Because B can only contribute to one side of the double-sign without a second corrupted witness, at least one of the two roots can't reach three genuine signatures. This blocks the dual-admit that broke 2-of-3.

This construction is also the minimum witness set for a given f. You can always add more witnesses beyond 3f + 1 and scale q proportionally, which buys you flexibility for witness rotation or geographic distribution, but you can't go below it without losing the guarantee.

Step 5: Look Up Your Own Fault-Tolerance Target

Use this table to pick n and q for the number of Byzantine witnesses you want to tolerate. Each row uses the standard n = 3f + 1, q = 2f + 1 construction.

Also read: go deeper on beyond the 100x engineer: rethinking ai adoption

| f (tolerated Byzantine witnesses) | n (total witnesses) | q (required quorum) | |---|---|---| | 1 | 4 | 3 | | 2 | 7 | 5 | | 3 | 10 | 7 | | 4 | 13 | 9 | | 5 | 16 | 11 |

Notice the pattern: each additional tolerated fault costs three more total witnesses and two more required signatures. That cost is why most real systems target f = 1 or f = 2 rather than scaling fault tolerance arbitrarily. Witness sets get expensive to operate and coordinate past a handful of members.

Step 6: Checklist for Choosing Witness-Set Size in Any Quorum System

Before you hardcode a threshold in your verification pipeline, run through this list.

  1. Decide f explicitly. Don't pick a witness count first and back into a threshold; start from how many compromised or offline witnesses you must survive.
  2. Compute q from q > (n + f) / 2, or use n = 3f + 1 and q = 2f + 1 if you want the minimum-size construction.
  3. Verify quorum on the exact artifact, not just a version number or timestamp. A quorum over "minimum version 2" is weaker than a quorum over the specific signed root at that version.
  4. Add a monotonic freshness check alongside the quorum. A quorum on a stale but internally consistent head will pass forever unless you also require progress.
  5. Persist signed receipts with enough context that a later auditor can detect a fork without re-trusting the original authority.
  6. Govern witness-set membership with the same anti-rollback discipline as your version floor. If whoever runs CI can shrink the set back to a weaker n or q, the arithmetic in Step 4 becomes irrelevant.
  7. Fail closed when you can't reach quorum, rather than falling back to a single authority's word, which reopens the exact equivocation problem you built the witness set to close.

What to Expect Next

Getting the quorum math right solves the intersection problem, but it assumes witnesses don't collude and that membership itself is tamper-resistant. The next design question worth tackling is how you rotate witness keys and update n or q over time without ever letting a single writable slot undo the guarantee you just built.

Tags

Software DevelopmentCoding Best PracticesCybersecurityDeveloper ToolsCoding Tutorials

Related Articles

WebAssembly: Unleashing Native Speed in Web Browsers
coding•4 min read

WebAssembly: Unleashing Native Speed in Web Browsers

WebAssembly is transforming web development with near-native performance, enabling more complex and efficient applications.

Sep 6, 2025

Revolutionizing Code with GitHub Copilot X
coding•3 min read

Revolutionizing Code with GitHub Copilot X

GitHub Copilot X revolutionizes software development, offering AI-driven pair programming to enhance efficiency, learning, and code quality.

Sep 6, 2025

Why Rust is Overtaking C++ in the Programming World
coding•3 min read

Why Rust is Overtaking C++ in the Programming World

Rust is challenging C++ dominance in software development with its focus on memory safety, speed, and concurrency.

Sep 6, 2025

Browse by Category

Technology570Coding131Music Production15SEO12Apple Rumors11Linux9Studio Gear7

Popular Posts

CachyOS Beats Windows 11 on AMD Ryzen AI 9 HX 470

CachyOS Beats Windows 11 on AMD Ryzen AI 9 HX 470

6 min read
ChatGPT's Apple Health Integration Arrives for U.S. Users

ChatGPT's Apple Health Integration Arrives for U.S. Users

4 min read
Alacritty vs Kitty: Why I'm Switching Terminal Emulators

Alacritty vs Kitty: Why I'm Switching Terminal Emulators

4 min read
Why It's Getting Harder to Focus in 2026

Why It's Getting Harder to Focus in 2026

6 min read
Do DAWs Really Sound Different? The Truth Revealed

Do DAWs Really Sound Different? The Truth Revealed

5 min read

Recent Posts

Acoustic vs Electronic Drums: Which Fits Your Space?

Acoustic vs Electronic Drums: Which Fits Your Space?

Aug 20, 2026•5 min
Is It Safe to Update Cracked VST Plugins?

Is It Safe to Update Cracked VST Plugins?

Aug 19, 2026•7 min
AI Code Review Checklist: What to Automate vs Block

AI Code Review Checklist: What to Automate vs Block

Aug 19, 2026•8 min
Best Linux DAWs for Running Serum 2 in 2025

Best Linux DAWs for Running Serum 2 in 2025

Aug 19, 2026•1 min
And Folks, We Have a Vibe Coded Linux Distro!

And Folks, We Have a Vibe Coded Linux Distro!

Aug 19, 2026•4 min