ビザンチン将軍問題
ビザンチン・フォールトトレラント性のあるレプリケーションプロトコルは、かつてはコストがかかりすぎて実用的でないとされていた。1999年、ミゲル・カストロとバーバラ・リスコフは、"Practical Byzantine Fault Tolerance" (PBFT) アルゴリズム(実用的ビザンチン・フォールトトレラント・アルゴリズム)を提唱した。これは、ミリ秒以下のレイテンシを加えただけで毎秒数千の要求を処理できる高性能なビザンチン状態機械のレプリケーションを提供する。
PBFTの登場でBFTレプリケーションの研究が活発化し、Q/U、HQ、Zyzzyva、ABsTRACTsといった低コストで性能を向上させるプロトコルや、Aardvarkのように堅牢性を向上させるプロトコルが登場した。
UpRight は、そういった研究成果を取り入れて開発されたオープンソースのサービス構築用ライブラリである。"up" は故障や障害が発生しても動き続けること、"right" は正しい動作を続けることを意味する。
BFT の応用例としてビットコインがある。Peer to Peer の電子マネーシステムであり、一連のHashcash風のproof-of-workを並列的に生成する。この一連の proof-of-work はビザンチン将軍問題を解く鍵である。
ビザンチン将軍問題(ビザンチンしょうぐんもんだい、英語: Byzantine Generals Problem)とは、相互に通信しあう何らかのオブジェクト群において、通信および個々のオブジェクトが故障または故意によって偽の情報を伝達する可能性がある場合に、全体として正しい合意を形成できるかを問う問題である。フォールトトレラントシステムでの多数決の妥当性や分散コンピューティングの処理の妥当性に関わる問題と言え、二人の将軍問題を一般化したものと言える。
ビザンチン将軍問題に帰結される故障や障害をビザンチン故障(Byzantine Failure、あるいはビザンチン障害)と呼ぶ。また、ビザンチン将軍問題が発生しても全体として正しく動作するシステムをビザンチン・フォールトトレラント性(Byzantine Fault Tolerance)があるという。