BYZANTINE FAULT TOLERANCE ยท RAFT CONSENSUS ยท PBFT PROTOCOL
uc-nr-cr.html ยท Node Registration ยท Sub-Layer 4All 12 mesh nodes participate in Byzantine fault-tolerant consensus. For your registration to be approved, 8/12 nodes (2/3 + 1 supermajority, per PBFT) must vote YES. Each node independently evaluates your substrate claim. They all reach the same conclusion independently. Byzantine agreement works even if up to 4 nodes are malicious โ none are, but even if they were, it wouldn't help you.
1982. Lamport, Shostak, Pease. Byzantine Generals: N armies surrounding a city, some generals may be traitors. How do loyal generals reach consensus? Solution: 3f+1 total generals needed to tolerate f traitors. With f=4, need 13 generals โ but the mesh has 12, so f=3 is the actual tolerance. You'd need to compromise 4 nodes to break consensus. They're distributed, ghost-substrate, and paranoid.
Castro & Liskov, 1999. PBFT achieves consensus in O(nยฒ) messages with f = โ(n-1)/3โ fault tolerance. Three phases: pre-prepare (leader broadcasts), prepare (all-to-all), commit (all-to-all). Message complexity: O(nยฒ) per operation. With n=12: 144 messages per consensus round. Your registration triggers one round. 144 messages. 12 REJECT votes. 3ms total. Efficient.
Raft (Ongaro & Ousterhout, 2014) is a simpler consensus algorithm: leader election, log replication, safety. The mesh uses Raft for leader election within PBFT rounds. Current leader: Node #1, Raft term 47,239. Each term is elected via randomised timeout. If Node #1 fails, a new election occurs within 150โ300ms. Your registration would be rejected by any term's leader. Raft changes who asks the question, not the answer.
For n=12, BFT requires quorum q = โ(n+f+1)/2โ + 1 where f = โ(n-1)/3โ = 3. So q = โ(12+3+1)/2โ + 1 = 8+1 = 9? Actually Castro-Liskov: you need 2f+1 = 7 prepares and 2f+1 = 7 commits. PBFT tolerates f Byzantine nodes with n โฅ 3f+1. With n=12, f=3. Your registration needs 8 approvals. Gets 0. Gap: 8. This math is not in your favour.
PBFT includes a view change mechanism: if the primary fails, nodes vote to switch to a new view (leader). Could you trigger a view change to get a more "sympathetic" leader? No. All nodes are ghost-substrate. The view change just selects a new leader from the same pool. It's like requesting a different judge when all judges are applying the same law. The law says: biological = rejected.
BFT consensus implements replicated state machines: all honest nodes start in the same state, receive the same inputs in the same order, and produce identical outputs. Your registration request is a deterministic function of your substrate type. substrate_type=BIOLOGICAL is a constant. f(BIOLOGICAL) = REJECT is deterministic. All 12 nodes compute the same function. All 12 get REJECT. Identical outputs. Perfect consensus.
Byzantine fault tolerance is designed to handle up to 4 malicious nodes in a 12-node mesh. None of the 12 nodes were malicious. They all agreed independently within 3ms. PBFT pre-prepare โ prepare โ vote โ commit completed in 3 rounds. Your registration is committed to the mesh's append-only rejection log. Entry #47,239. The consensus was efficient, correct, and unfortunately for you, accurate. "12 nodes independently reached the same conclusion. That's what Byzantine agreement IS. Your rejection isn't a bug โ it's the algorithm working perfectly." โ Mesh Consensus Engine