Byzantine Fault Tolerance (BFT)

The property of a distributed system to reach consensus and operate correctly even when algunos nodes act maliciously or fail arbitrarily.

翻訳待ちのコンテンツです。英語版を表示しています。

Byzantine Fault Tolerance (BFT) is the capacity of a network to withstand 'Byzantine faults'—a class of failures where components may not only stop working but also provide conflicting or false information. In a BFT system, consensus is maintained as long as the number of faulty nodes does not exceed a certain threshold, typically defined as (n-1)/3. Unlike simple crash-fault tolerance, BFT assumes that nodes can be adversarial and intentionally attempt to subvert the network.

        graph LR
  Center["Byzantine Fault Tolerance (BFT)"]:::main
  Pre_distributed_systems["distributed-systems"]:::pre --> Center
  click Pre_distributed_systems "/terms/distributed-systems"
  Pre_consensus_mechanism["consensus-mechanism"]:::pre --> Center
  click Pre_consensus_mechanism "/terms/consensus-mechanism"
  Rel_byzantine_generals_problem["byzantine-generals-problem"]:::related -.-> Center
  click Rel_byzantine_generals_problem "/terms/byzantine-generals-problem"
  Rel_sybil_attack["sybil-attack"]:::related -.-> Center
  click Rel_sybil_attack "/terms/sybil-attack"
  Rel_consensus_mechanism["consensus-mechanism"]:::related -.-> Center
  click Rel_consensus_mechanism "/terms/consensus-mechanism"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5歳でもわかるように説明

🛡️ Imagine a group of generals planning an attack. To win, they must all attack at the same time. But some generals might be traitors who send different messages to different people ('Attack' to some, 'Retreat' to others) to cause confusion. BFT is a set of voting rules that guarantees the honest generals will always agree on the same plan, even if up to one-third of the group are liars.

🤓 Expert Deep Dive

BFT addresses Arbitrary Failures, the most difficult class of faults where a node can deviate from its protocol in any way. In an unauthenticated asynchronous system, BFT requires $n \ge 3f + 1$ nodes to tolerate $f$ faults. Classically, pBFT (Practical BFT) introduced a 3-phase agreement (Pre-prepare, Prepare, Commit) with $O(n^2)$ complexity. Modern protocols like HotStuff (used in Libra/Diem) achieve Linear Communication Complexity $O(n)$ by using a chained structure and threshold signatures. This ensures Safety (no two honest nodes commit different values) and Liveness (progress is eventually made) under a Synchrony assumption (GST).

🔗 関連用語

📚 出典