ビザンチン将軍問題。。。
仮想通貨とブロックチェーンのことを学びはじめた人なら、必ず聞いたことありますよね。
そんなビザンチン将軍問題は、本やサイトでは少しずつ表現が違うものの大まかには次のように解説されています。
ビザンチン将軍問題とは
コンスタンティノーブルを包囲しているものの、ビザンチン帝国は非常に強大であるため、オスマン帝国の将軍たちが一致団結して攻撃するか撤退するか決定し行動しないと多大な被害をうけてしまう状況です。
しかし、それぞれが離れた場所にいるため、伝令をお互いに送りあうことでしか合意形成をすることはできません。
そんな状況で、オスマン帝国の将軍の中に、裏切り者がいた場合、合意形成ができずに敗北してしまいます。
例えば、オスマン帝国に5人の将軍がいたとして、2人が攻撃をするという判断をして、2人が撤退するという判断をした時に、判断を最後まで保留していた一人の将軍が裏切り者だった場合を考えてみましょう。
裏切り者の将軍が、攻撃する判断をした2人には【撤退する】という指示を送り、撤退すると判断をした2人には【攻撃する】という指示を送れば、オスマン帝国側は、【攻撃する】にしても【撤退する】にしても合意形成することができないわけです。
このように合意形成をすることができない問題が【ビザンチン将軍問題】です。
ビザンチン将軍問題を解決するためには、裏切り者が
【裏切ることがメリットにはならない】
という状況を作り出せればいいのですが、【裏切ることがメリットにはならない】状況を作り出す解決策はないだろうと考えられていました。
そこへブロックチェーンが登場し、ビザンチン将軍問題の解決策として一気に注目をあびるようになったわけです。
どうして、このビザンチン将軍問題の解決にブロックチェーンが有効であるか、その理由をどこよりもわかりやすく解説していきます
ビサンチン将軍問題とは
ビサンチン将軍問題とは、冒頭でも説明したように、東ローマ帝国であるビサンチン帝国の首都コンスタンティノーブルを包囲したオスマン帝国の将軍たちの間で起こる裏切り問題から名付けられた合意形成に関する問題のことです。
といってもちょっとわかりづらいので、もっと簡単にすると
裏切り者は常にいる
という問題です。
良い悪いは別として、誰もが集団のためではなく、自分の利益のために最善の選択をしますよね。
日本人が大好きな【集団のため】といって選択していることも、結局はその選択が自分の利益になるから意見をあわせているだけです。
もし、自分が裏切ることによって莫大な利益が得られるなら、良心の呵責さえなければ簡単に裏切って莫大な利益を得るでしょう。
ウソと裏切りの心理戦を展開する【ライアーゲーム】も、主人公である【お人好しの女子大生・神崎直】がビザンチン将軍問題を解決しようとする物語です。
家族旅行の行き先にしても会社の会議にしても選挙にしても必ずこのビザンチン将軍問題が関係しています。
ビザンチン将軍問題は名前を知らないだけで、身近なところでも普通に発生している問題なんですね。
ビザンチン将軍問題を解決するには
最初に答えを紹介したように、ビザンチン将軍問題を解決するには、
裏切り者にメリットがない状況を作る
ことが必要です。
つまり、裏切ることによって莫大な利益が得られるから裏切るのであって、裏切りというストレスがかかる行為に対する見返りがあまりない。もしくは裏切ることで損失を被るという状態になればいいわけです。
でも普通に考えたら、そんなことってありえないですよね〜。
だから長年解決が不可能と考えられていたわけです。
いまわたしたちが享受しているサービスも過去の世界では不可能と思われていたことです。
飛行機にしても電話にしてもインターネットにしても、
そんなことができるわけがない
と考えられていたわけです。
しかしどれもが現実のものとしてその利便性を享受できています。
ほんとテクノロジーの進化というのはすごいんです!
これからも不可能と思われていることがどんどん可能なものになり、普通に使えるようになる未来が待っています。
ブロックチェーンがビサンチン将軍問題を解決する
そんな解決不可能だと考えられていた【ビザンチン将軍問題】を解決したのがブロックチェーンの技術です。
そのブロックチェーンの技術は
プルーフ・オブ・ワーク(PoW)
と呼ばれ、信頼を必要としないコンピュータが集まって合意形成ができるという仕組みです。
よくわからないですよねw
なので、少し【プルーフ・オブ・ワーク】について解説しておきます
プルーフ・オブ・ワークとは
プルーフ・オブ・ワークを知るためには、
ハッシュ関数
を知る必要があります。
【ハッシュ関数】とは、あるデータの集まりを不規則な英数字の羅列(ハッシュ値)に変える関数です。
この【ハッシュ関数】の特徴は、次の2つ
- 元のデータを変えればまったく異なる【ハッシュ値】が出力される
- 【ハッシュ値】から元のデータを規則に基づいた計算で求められない
【ハッシュ関数】は、【ハッシュ値】は簡単に出せるけど、【ハッシュ値】から元のデータを求めるのが難しい関数で、このような関数を【一方向関数】といいます。
ブロックチェーンは、ブロックの中に一定時間ごとに【全ての取引】と【前のブロックのハッシュ値】、【ナンス】が記録されていて、この3つのデータから生成される【ハッシュ値】を新しいブロックに書き込むことでブロックチェーンが形成されていきます。
ここで重要なのは【ナンス】という値で、
一つのブロックの【全ての取引】+【前のブロックのハッシュ値】+【ナンス】=【次のハッシュ値】となり、プログラムによって先頭から【0】が一定個数並ぶ【次のハッシュ値】が生成されるような【ナンス】が指定されます。
この【ナンス】を求めるのが【マイニング】です。
規則的な計算によって【ナンス】を求めることができないため、英数字を一つづつ当てはめて確認していくしか方法がないわけです。
【マイニング】を超簡単に言ってみれば、
無限にある組み合わせからたったひとつの組み合わせをいかに早く見つけるかという単純な作業
です。
【ナンス】を一番早く見つけたコンピューターが発見したことを宣言して、マイニングに参加しているコンピュータがその【ナンス】が正しいことを確認できれば、一定のビットコインが報酬として付与されるというのが【プルーフ・オブ・ワーク】の仕組みです。
同時にブロックが作られないの?
ブロックチェーンは上で説明したプルーフ・オブ・ワークの作業中にも世界中では取引が行われています。
つまり、あるブロックの確認作業が完了する前に次のブロックの取引が行われてしまいます。
取引が遅れることなくおこなえるための仕組みなんですが、結構無茶苦茶ですよね。
さらに、マイニングは世界中で行われているので、ほぼ同時に同じブロックが生成される可能性があります。
もし複数のブロックが同時に作られたときは、その次のブロックが先に作られた方を採用して、短くなった方は取引もなかったことになり、報酬も付与されません。
プルーフ・オブ・ワークが改ざんできない理由
ここで、プルーフ・オブ・ワークが改ざんできない理由を説明していきます。
もし、過去の取引を改ざんしたとすると、この取引があるブロックから計算される【ハッシュ値】は元の【ハッシュ値】と異なるものとなるため、再度【ナンス】の値を求めなければならなくなります。
さらに、このブロックの【ナンス】が変わると、さらにその先にある【ハッシュ値】もかわり、そのブロックの【ナンス】を再度求める必要が出てきます。
このように、過去にさかのぼるほど、改ざんには莫大な労力が必要になるうえ、それを実現するスピードより早く新しいブロックが生成されていきます。
つまり、改ざんに莫大なコストをかけて利益を得ることより、正当な手段で【マイニング】に参加して報酬を受取るほうが合理的だということです。
プルーフ・オブ・ワークは、信頼があるシステムなわけではなく、不正すると損になるシステムなんです。
孟子がいうような【性善説】によって、人が悪事を犯さないということに期待したシステムではなく、人々が【性悪】であったとしても機能するシステムであり、【トラストレス(信頼の欠如)】に基づいたシステムだといえます。
テクノロジーが問題を解決する
世の中には、ほんと想像を絶するようなことを成し遂げる人がいます。
そんな人がいるからテクノロジーがすすみ、より便利な世の中になっていくわけですが、ほとんどの人は自分が知らないものに対して拒否反応を起こします。
ちらっと書きましたが、自動車だって飛行機だってインターネットだって、最初は拒否反応を起こされていたのに、今ではあたりまえのように誰もが利用しています。
知らないからという理由で便利なものを利用しないのは、まったくもってナンセンスです。
逆に誰も知らないからこそ、そこにチャンスがあるわけです。
孫正義育英財団が主催した【未来を創る若者たちへ】で羽生善治氏が最後にこんなことを言っていました。
新しい技術に不安を感じて拒否するくらいなら、いっそのことどんどん新しい技術を組み入れたほうが未来は開けるんじゃないでしょうか?
ブロックチェーンとビザンチン将軍問題の関係性がわかったところで、ぜひ実際に仮想通貨の取引を体験してみて下さい!