🛡️ Byzantine Fault Tolerance: The 3f+1 Rule

Learn why PBFT requires 3f+1 nodes to tolerate f malicious actors

🛡️ Byzantine Fault Tolerance

PBFT can tolerate up to f Byzantine (malicious or faulty) nodes in a network of n = 3f + 1 nodes. This means with 10 nodes, the system can handle up to 3 faulty nodes and still reach consensus.

The 3f + 1 Rule

📊

Minimum Nodes Formula

To tolerate f faulty nodes, you need at least n = 3f + 1 total nodes.

Examples:

• 4 nodes → tolerate 1 fault

• 7 nodes → tolerate 2 faults

• 10 nodes → tolerate 3 faults

• 13 nodes → tolerate 4 faults

🗳️

Quorum Size

Need 2f + 1 votes (quorum) in each phase to proceed. This ensures at least one honest node in any two quorums.

🧮 Interactive: Fault Tolerance Calculator

Adjust parameters to see how fault tolerance changes:

10 nodesMinimum: 10
0 faultyMax tolerable: 3

Max Faulty (f)

3

⌊(n-1)/3⌋

Quorum Size

7

2f + 1

Status

✓ Safe

Can reach consensus

✅ System is Byzantine Fault Tolerant

With 10 nodes, can tolerate up to 3 Byzantine faults. Currently 0 faulty - within safe limits.

📊 Interactive: Scenario Comparison

Load pre-configured scenarios to understand different tolerance levels:

Safe Configuration

System operates normally

With 10 nodes, can tolerate up to 3 faults. Currently 2 faulty nodes - system is safe.

Types of Byzantine Faults

💀

Crash Failures

Node stops responding completely. Easier to detect than other faults.

🐌

Timing Failures

Node responds too slowly, missing deadlines. Can be due to network issues.

🎭

Malicious Behavior

Node actively tries to disrupt consensus by sending conflicting messages.

🔀

Arbitrary Faults

Node behaves erratically due to bugs, corruption, or external attacks.

⚖️

The Tradeoff

PBFT's 3f+1 requirement means you need more nodes than simpler consensus algorithms. For example, Raft only needs 2f+1 nodes to tolerate f crash failures (not Byzantine). However, PBFT's extra nodes buy you protection against malicious actors, not just crashes.