前回はビットコインの仕組みに関する話をしました。
ビットコインはP2Pという仕組みで動いていますが、単なるP2Pではなく、そこにブロックチェーンの仕組みを導入することで、既存のP2Pの問題点を解消したという点で、優れたシステムであると言われており、だからこそ他のビジネスに応用できないかという議論が現在盛んにおこなわれています。
この、既存のP2Pの問題点の一つにビザンチン将軍問題というものがあるので、教養のを付けるという意味合もこめて説明しておきます。
P2Pネットワーク復習
詳しくは前記事を見ていただきたいのですが、一応ここでもざっと復習。
ITについて何も知らなくてもわかる「P2Pとは何か」 - バナナでもわかる話
要は、何か一つの権限の大きいサーバーが重要な情報を管理するのではなく、各ユーザーがバラバラに重要な情報を管理する分散型方式。
それがP2Pでした。
ビザンチン問題とは何か
ここでP2Pのシステムの状況を考えてみてください(ビットコインの仕組みではなく、P2Pです。)
P2Pは皆で情報を管理しているので、中の情報をいじることの出来る参加者が大量にいることになります。
ここで、もし、その参加者の中に、悪意を持ったユーザーがいるとしたらどうなるでしょう。
意図的におかしな情報を流したり、情報を改竄したりすることも出来てしまうわけです。
これをビザンチン将軍問題と言うわけです。何でビザンチン将軍とかいうよくわからん人が登場してくるのかについてを次に説明します。
ビザンチン将軍問題
大昔のヨーロッパ、そこにあったビザンツ帝国の話です。
ある日、ビザンツ帝国は、ある都市Aを攻め落とそうと考え、ビザンツ帝国傘下の9人の将軍に依頼しました。
その際、綿密な事前調査の末、次のことが分かりました。
都市Aは、将軍9人が協力した場合は攻め落とせるが、一人でも欠けた場合は手痛い反撃を受けるだろう。
そしてその事前調査を受けた9人の将軍は、自分の領土と兵士の状況も考えた上で、各人が「攻めるべき」か「やめておくべき」かの決断を下しますが、もし9人で攻める場合は、都市Aが力をつける前に早急に攻めねばなりまません。
しかし、現代ではスマホやら電話やらインターネットやらで簡単にやり取りが出来ますが、この時代はそんなものはありませんし、移動手段も限られているため、9人全員で話し合いを開くなんてことも一苦労です。
そこで、次の方法を取りました。
まず、各将軍が「攻めるべき」か「やめておくべき」かを決める
そして、伝達者を使って他の将軍たちに自分の意思を伝えます。
何かこの構造P2Pに似てませんか?
そして、各将軍は次のように意思決定するよう事前に取り決めをしておきます。
「多数決の結果、多数派となった意見に全員で従う」
つまり、攻めるべきが5人いたら、9人全員で攻める
やめるべきが5人とか6人とかいたら9人全員で攻めるのをやめる
しかし、ここで注意しなければならないのは、各将軍は将軍同士で直接話し合ったわけではなく、「伝達者を介して聞いている」という点です。
つまり、例えば真ん中にいる将軍5が次のような伝達を行ったとします。
これは、真ん中の将軍5が将軍1~4には「攻めるべき」と伝え、将軍6~9には「やめるべき」と伝えている例です。
この状態だと、
左側の将軍1~4は「攻めるべき」が5票、「やめるべき」が4票で「9人全員で攻める」という意思決定に決まったと勘違いします
一方
右側の将軍6~9は「やめるべき」が5票、「攻めるべき」が4票で「9人全員で攻めない」という意思決定に決まったと勘違いします
この結果、将軍1~4のみが進軍し、ビザンツ帝国は敗北します。
悪意のある参加者(将軍5)によって、契約がゆがめられるという結果になりました。
これをビザンチン将軍問題と呼んだわけですね。
ビザンチン将軍問題を回避したブロックチェーン
ビットコインの仕組みでこの状況が発生しないことは皆さんもう大丈夫ですね。
ビットコインの仕組みでは、最も早く条件が満たされたブロックが全員に共有されるため、取引契約におかしな結果が介在したり、一部のユーザーにだけ改竄された異なる情報が伝わるというような余地がありません。
こういう点で既存のP2Pよりも優れた仕組みであるというわけです。
この話、ゲーム理論でより深く説明したり理解することが出来そうですね。
今度気が向いたときにゲーム理論と絡めてもう一度ビザンチン将軍問題の話を記事にしてみようかなあ。