【完全保存版】ブロックチェーンでのビザンチン将軍問題をしっかり理解しよう!
1 ビザンチン将軍問題について
1 余談
ビザンツ帝国とは、ローマ帝国の東半分が東ローマ帝国として独立した国家です。
今回は、ここの将軍たちが、ある都市を攻める際に起きる問題の話です。
2 概要
まず、5人の将軍たちが、都市を囲んでいます。(人数は例です。)
スマホなどがないので、全員の合意を得るのが難しいです。
彼らには、「攻撃」か「撤退」の選択肢があります。
ただ、5人全員で一斉に攻めないと、戦力不足で負けてしまいます。
ここでは、ある将軍が、他の将軍にメッセージを送った時、どのような問題が起きるかを見てみましょう。
2 どんな問題が生じるか
では、どんな問題が生じるか見てみましょう。
1 伝達できない問題
まずは、伝達できない問題があります。
使者がつかまってしまったり、そもそも将軍が身動きが取れない状態になっているかもしれません。
2 裏切り者問題
下のように、裏切り者がいるかもしれません。(B将軍です。)
その場合、2つの種類のメッセージを受け取ったC将軍はどちらが正しいかわかりません。
3 異なるメッセージ問題
異なるメッセージを受け取るのは、裏切り者がいる場合に限られません。
下のように、C将軍は「撤退」、E将軍は「攻撃」と伝えました。
どちらも改ざんされていないメッセージですが、A将軍はどうすれば良いかわかりません。
わからないならまだしも、A将軍が裏切り者だったら大変です。
例えば、E将軍に対して、B将軍からのメッセージが「攻撃」だと伝えます。
すると、E将軍は他の将軍たちも「攻撃」だと考えてまい、攻撃してしまします。
裏切り者のA将軍はB将軍には「撤退」と伝え、B将軍は撤退してしまいます。
3 ビットコインでの解決方法について
では、このような、ビザンチン将軍問題を、ブロックチェーンがどう解決しているのか、ビットコインを例にして考えてみましょう。
1 伝達できない問題について
これについては、下のように、他の正常なノードから通信が来ます。
そのため、一部故障などがあっても、全体としては問題ありません。
2 裏切り者問題について
仮に、下のように改ざんされたとしても、ブロックチェーンでは、検証することで改ざんを見破れます。
「検証」というと難しそうですが、そんなことはありません。
下のように、「先頭○桁」が0かどうかで簡単に検証することができます。
イメージがつかめない場合は、こちらの記事もご確認ください。
3 異なるメッセージ問題
では、最後に、改ざんされているわけではないものの、下のように異なるメッセージが来た場合はどうすれば良いでしょう。
ブロックチェーンの場合では、下のような状況です。
どちらもブロックとしては、正しい状況です。
これは、ルールで対応します。
ビットコインには、「最長のブロックを有効なものとする」というルールがあります。
そのため、下のようになります。
なお、このあたりが「ファイナリティ」の話に繋がってきます。
上のように、ブロックに入れられても、無効となってしまう可能性があるためです。
そのため、ブロックに入った時点では確定させず、いくつかブロックが続いて作られてから確定させるということが行われます。(6ブロックが多いです。)
今回は以上です。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊