ビザンチンフォールトトレランス(BFT)とは何ですか?
ビザンチンフォールトトレランス(Byzantine Fault Tolerance)とは、分散システムやネットワークにおいて、一部の参加者が行動しなかったり悪意を持って行動したりすることを考慮した上で、いかに運用し合意(中立的合意)に至ることができるかを示す能力である。ビザンチン将軍問題と呼ばれるパラドックスに由来し、ビザンチン耐故障はこの問題の解決策である。
ネットワークが正しく機能するためには、一部の参加者が(意図的であろうとなかろうと)問題を起こしても、機能的参加者がネットワークの合意を保証できるように、いくつかの共通のルールと条件が必要である。
ビザンツ将軍問題とは?
ビザンチン将軍問題は、1982年にMicrosoft Researchのグループによる論文で初めて紹介されました。この問題は、次のように明確に記述されていた。
「ビザンツ軍のいくつかの師団が敵の都市の外に陣取り、それぞれの師団はそれぞれの将軍によって指揮されていると想像してください。将兵は使者によってのみ互いに連絡を取ることができる。敵を観察した後、彼らは共通の行動計画を決めなければならない。
しかし、一部の武将は裏切り者で、忠実な武将が合意に達するのを妨げようとしているかもしれません。武将たちはいつ攻撃するかを決めなければなりませんが、同時に攻撃するためには自軍の強力な多数派が必要です。
将軍たちは、(a)すべての忠実な将軍が同じ行動計画を決定し、(b)少数の裏切り者が忠実な将軍に悪い計画を採用させないことを保証するアルゴリズムを持っていなければなりません。忠実な将軍はアルゴリズムが言うとおりに行動するが、裏切り者は何をやってもいい。アルゴリズムは裏切り者が何をしようとも条件(a)を保証しなければならない。忠誠心のある将軍は合意に達するだけでなく、合理的な計画に合意しなければならない。”
ビザンツ将軍問題は、二将軍問題(二将軍のパラドックス)と似ているが、より一般的なバージョンである。より複雑な形で、ビザンチン将軍問題はより多くのバリエーションを課すことができる。例えば、使者が途中でメッセージを伝え損ねたり、あるいは意図的に元の内容を変更したりすることもあり得る。
暗号におけるBFTとは?
暗号において、具体的には ブロックチェーン技術, Byzantine Fault Toleranceは非常に重要な役割を担っている。ビザンチン将軍問題を暗号に当てはめると、将軍は ノード.ブロックチェーンネットワーク内のすべてのノードは、互いに通信し、コンセンサスに達する方法を見つけなければならない。 コンセンサスアルゴリズム.
Byzantine Fault Toleranceを実現する方法は数多く存在します。したがって、ブロックチェーン空間にも様々なコンセンサスアルゴリズムが存在し、それぞれが最適な効率化のための問題解決策を持っています。
ビットコインその Proof of Work コンセンサスアルゴリズムで、暗号におけるビザンチンフォールトトレランスを達成した最初のものの1つです。2008年の登場以来 プルーフ・オブ・ワーク は、ビットコインの成功とともに、この問題に対する最も安全で信頼できるソリューションの1つであることが証明されました。

実用的なビザンチンフォールトトレランスはどのように機能するのか?
Practical Byzantine Fault Tolerance (pBFT) は、90年代後半にBarbara LiskovとMiguel Castroが、既に利用可能なByzantine Fault Toleranceソリューションの既存の問題点を解決することを目的として発表した合意形成アルゴリズムです。
一般に、pBFTは最初に1つのノードをプライマリ(リーダー)ノードとして、他のノードをセカンダリ(バックアップ)ノードとして割り当てることで動作します。また、プライマリノードが動作しなくなった場合は、どのノードでもプライマリノードになることができます。
さらに、pBFTシステムは、悪意のあるノードの最大数がシステム内の全ノードの3分の1を超えてはならない場合にのみ機能する。
pBFTのコンセンサスラウンドには4つのフェーズがある。
- リクエスト クライアントはプライマリ(リーダー)ノードにリクエストを送信する。
- 事前準備する。 プライマリ(リーダー)ノードが、すべてのセカンダリ(バックアップ)ノードにリクエストをブロードキャストする。
- 準備します。 ノード(プライマリおよびセカンダリ)は要求されたサービスを実行します。
- コミットします。 返信が有効な場合はクライアントに送信されます。

中央集権と分散
ご覧の通り、ビザンチンフォールトトレランスを達成するためには、ネットワーク内の各ノード(または参加者)は、他のノードと通信し協力しなければなりません。誰もが信頼できる情報源は存在しません。したがって、分散型ネットワークのみがビザンチン耐故障を考慮する必要があります。
一方、集中型ネットワークでは、各参加者の間を取り持つ1つ以上のサードパーティが常に存在するため、コミュニケーションとコンセンサスが非常に容易になります。各参加者は相手を信頼する必要がなくなり、すべての情報を仲介者に渡すだけでよい。

暗号におけるBFTに関するFAQ
Proof of StakeはByzantine Fault Toleranceですか?
前述したように、ブロックチェーン技術では、ビザンチンフォールトトレランスを達成するためにコンセンサスアルゴリズムが必要です。その一つであるProof of Stakeは、Proof of Workと同様にByzantine Fault Toleranceの要件を満たすことが可能です。
もっと探す PoSとは何か?なぜビザンチンフォールトトレランスなのか?
TendermintはBFTですか?
2014年に初めて登場したTendermintは、Practical Byzantine Fault Tolerant(PBFT)アルゴリズムから派生したProof-of-Stakeコンセンサスを初めて適応したものである。したがって、BFT Proof-of-Stakeコンセンサス・アルゴリズムとみなされる。
EthereumはByzantine Fault Toleranceなのか?
イーサリアム は現在、Bitcoinが使用しているものと同様のProof-of-Workコンセンサスアルゴリズムを使用しています。将来的には、EthereumはそのネットワークをProof-of-Stakeに切り替える予定です。
いずれにせよ、イーサリアムはビザンチンフォールトトレランスを満たすことができることに変わりはありません。
まとめ
ビザンチンフォールトトレランスとは、一部の参加者が行動しなかったり悪意を持って行動したりすることを考慮した上で、分散システムやネットワークがどのように動作し、コンセンサス(中立的合意)に達することができるかを示す能力である。
この名前はビザンチン将軍問題と呼ばれるパラドックスに由来し、ビザンチン耐故障はこの問題の解決策である。
つまり、ビザンチン将軍問題とは、複数の将軍がある要塞を攻撃しようとするとき、攻撃するか撤退するかを集団で決めなければならない問題を指します。悪意ある行為や通信の失敗があっても、これらの将軍がいかにして合意に達することができるかを見出さなければならない。
ビザンチン将軍問題を暗号に適用すると、将軍はノードになります。ブロックチェーンネットワーク内のすべてのノードは、互いに通信し、コンセンサスに達する方法を見つけなければならないので、私たちがコンセンサスアルゴリズムと呼ぶ方法につながる。
Byzantine Fault Toleranceを実現するための方法は数多く存在します。したがって、ブロックチェーン空間にも様々なコンセンサスアルゴリズムが存在し、それぞれが最適な効率を実現するための問題解決策を持っています。