なるほど!をお届けする仮想通貨情報メディア

  • BTCBTC

    788,583円

  • ETHETH

    15,864円

  • ETCETC

    413.16円

  • LTCLTC

    4,827.7円

  • BCHBCH

    22,525円

  • XRPXRP

    24.115円

  • LSKLSK

    0.0000円

  • XEMXEM

    0.0000円

仮想通貨における「ビザンチン将軍問題」とは?

    ビザンチン将軍問題」という言葉を聞いたことがあるでしょうか。一般的に情報伝達を行いながら意思決定をする場合に起こりうる問題についての例えとして用いられますが、実はこの言葉、ブロックチェーンとも深く関わる言葉なのです。仮想通貨について調べていて行き当たったことがある人も多いのではないでしょうか。なんとなく説明を聞いても分かりにくい「ビザンチン将軍問題」について、今回は詳しく説明していきたいと思います。

    ビザンチン将軍問題とブロックチェーン

    仮想通貨で「ビザンチン将軍問題」が話題に上がるのは主にP2Pのネットワークの「合意形成問題」について議論される時です。しかし、この用語自体はブロックチェーン興隆以前からある言葉で、情報伝達を行いつつ意思決定を行う際に想定される問題について示している語です。

    ビザンチン帝国時代に将軍たちが敵国を落とそうとしたとき起きた問題と似ているため、このような名前で呼ばれるようになりました。尚、英語でも日本語のニュアンスと同様のByzantine Generals Problemと呼ばれています。

    ビザンチン将軍問題は非中央集権的な意思決定において起こる

    ビザンチン将軍問題は、参加者がみな対等な権限を持っている場合において意見をまとめる時におこる問題です。中央集権的な意思決定においては序列の高い一部の人間が意思決定を行うことができるのでこの問題は発生しません。例えば、会社であれば最終的な意思決定は社長によって行われれるので、参加者が対等な場合に起こりうるような問題を回避することができます。

    一方、中央集権的な意思決定は一部の人間が権益を得やすいような決定が下される可能性が高くなってしまうなどの問題があります。ブロックチェーンではそのような状態を避けるために非中央集権的な運用形態を目指しています

    一般的に、ブロックチェーン技術はこのビザンチン将軍問題を解決していると言われています。果たして本当に克服できているのか、またどのように克服したのかを後述していきたいと思いますが、まず次章ではビザンチン将軍問題がどのような問題なのか説明していきます。

    ビザンチン将軍問題とは

    ビザンチン将軍問題は、ビザンチン帝国時代に複数の将軍が敵国の都市を落とそうと結託して攻め入った際の出来事に由来しています。

    その時、ビザンチン帝国の軍は敵国を落とそうと目論んでおり、敵国の都市の周りをそれぞれ軍を率いた複数の将軍で包囲していました。将軍同士は離れた場所にいるため、フェイストゥフェイスで意思の疎通を取ることはできませんでしたが、手紙によってお互いの意見を伝達し合うことができます。今回の侵攻では全員が一丸となって侵攻しないと相手の都市を陥落することができないため、多数決によって「全軍での一斉攻撃」か「撤退」かを決めることになっていました。

    悪意を持った将軍がいる可能性

    全員が真面目に情報伝達を行なっていた場合、将軍たちの意見はきちんとまとまり「全軍での一斉攻撃」あるいは「全軍撤退」のいずれかの決定がなされるはずです。しかし、ここでもし将軍のうちの1人が悪意を持っていたらどのようになるでしょうか。

    例えばビザンチン帝国軍の将軍が全部で9人いて、そのうち善意の8人の票が「攻撃4票、撤退4票」に割れていたとします。こよ時、最終的な判断は最後に残った1人の決定に委ねられることになります。もしこの1人が悪意を持った裏切り者だった場合、半分の将軍に「自分は攻撃に票を入れた」と伝達し残りの半分には「自分は撤退に票を入れた」と伝えることができてしまいます。すると、攻撃票を入れた連絡をもらった前者の将軍たちは都市を攻撃し、後者の将軍たちは撤退してしまいます。結果、侵攻した将軍たちは倒され攻略は失敗に終わることになるのです。

    このように意図的に悪意を持った人が嘘の情報を伝える可能性もありますし、そうでなくても手紙を持っていく使者が途中で事故にあったり、間違った手紙を渡してしまう可能性も否定できません。

    P2Pネットワークにおけるビザンチン将軍問題

    P2Pネットワークは、分散型かつ非中央集権のネットワークであり、ネットワークに参加している全ての人に権限があります。したがって、ビザンチン将軍問題のように意見がバラバラになってしまう可能性を孕んでいます。

    悪意を持った参加者がデータを改ざんする可能性もありますし、悪意がなくても誤っての情報を流してしまったり、あるいはネットワークに参加している機械の故障によってコミュニケーションに問題が起こる可能性もあります。このような種々の不具合によってネットワークの十全な機能が損なわれている状態=意見がうまくまとまらない状態を「ビザンチン故障」と呼びます。

    ネットワーク構築の際にはこの「ビザンチン故障」がなるべく起こらないような仕組みが採用されますが、ビザンチン故障が起こらないようになっている状態のことを「ビザンチン・フォールトトレラント性 (BFT) がある」と呼びます。

    ブロックチェーンはビザンチンフォールトトレラントなのか

    ビザンチン将軍問題は複数の意見がまとまらないという事が問題でした。非中央集権的な意思決定を採用するブロックチェーンでは、一見するとビザンチン将軍問題が起こりやすいように思われますが、実は全体で見るとブロックチェーンは「ビザンチンフォールトトレラント」性があると言えます。なぜそのように言えるのか、以下で見ていきましょう。

    ブロックの追加されるときの流れ

    例えば、一番代表的な仮想通貨でありPoWを採用しているビットコインでは、一番早くナンス値を見つけブロックを承認した人に報酬が与えられる仕組みになっています。もし正しいと思われるブロックをほぼ同時に見つけてしまった場合、ブロックチェーンは分岐します。

    ビットコインでは、ブロックや取引を検証する個々のPCである「ノード」が全て相互に網状につながっているのではなく、チェーンのように直線的に繋がっています。AさんのノードはBさんのノードに、BさんのノードはCさんのノード、CさんのノードはDのノード・・・といった形で全世界的な広がりを持っているのです。従って、直接的なつながりを持たないノード同士であってもほかのノードを辿ると最終的には繋がるようになっているのです。

    Aさんが新しいブロックを発見した場合、直接的なノードのつながりがあるBさんに検証してもらいます。Bさんが正しいと判断したら、Cさんに・・・というプロセスが繰り返され、ある程度の判断が積み重なると近くのフルノード(過去のブロックをすべて記録しているノードのこと。フルノード以外のノードは一部分を切り取って検証しているにすぎません)に送ります。そのフルノードが正しいと判断した場合に、世界中のフルノードに新しいブロックが出来たという報告がなされ、フルノードは自身のブロックチェーンにそのブロックを追加するという流れです。

    分岐が起こる場合

    ブロックチェーンでは、場面場面で見ると正しいブロックがどれなのか決まらないことがあり、そのような場合にはチェーンの分岐が起こってしまいます。しかし、それはブロックチェーンのビザンチン・フォールトトレラント性を何ら損ねるものではないのです。

    aが新しいブロック(α)を発見し、ほぼ同時に別の人が新しいブロック(β)を発見しました。aに連なるノードはαを検証し直近のフルノードは自身のブロックチェーンにαを追加します。別のフルノードではβが追加されます。ここでαが正しいかβが正しいか決めなければいけません。

    基本的には「dificulty」の高い方が追加されますが、αβどちらもほぼ同じのdificultyの場合はチェーンの分岐が起こります。今のブロックから出ているチェーンが2つに枝分かれしてα、βそれぞれにつながるイメージです。

    αβどちらが今後使われていくかは、その次のブロックが先に見つかった方という事になっています。先にαにつながるブロックγが見つかった場合、αのチェーンはβのチェーンより長くなるので、ブロックチェーン2が長いチェーンの方が正しい(=累計dificultyが高くなるため)と考えられるようになります。その結果、マイニング報酬を貰うためにマイナーたちにはαの方のチェーンだけをマイニングするインセンティブが生まれ、結果、分岐は収束します。結果的にこのブロックチェーンにはビザンチン・フォールトトレラント性があると言えます。

    不正をしてブロックを作成できるのか?

    先程はチェーンの分岐が偶然発生した例を紹介しました。では、ビザンチン将軍問題の例の時のように悪意あるマイナーが不正を行ってブロックを作成した場合はどうなるでしょうか。少数の悪意ある人が不正なブロックを作成しても、他の大多数のマイナーがそのブロックを正しくないと判断する限りチェーンのマイニングは行われず承認されません。結果、マイニング報酬がもらえなくなってしまうので、不正を働くインセンティブは低いと言えます。取引データの改ざんに関しても同じことが言えます。

    マイニングには機器の導入や電力といったコストがかかります。コストをかけてマイニングする以上、マイナーには儲けたいというインセンティブが働きます。したがって、正しいマイニングが行われる可能性が高くなるのです。

    ノードに故障や不具合があったケース

    P2Pネットワークにおいて個々のノードに故障や不具合があった場合はどのようになるでしょうか。ビザンチン将軍の例でいうと伝令を伝える使者に事故や間違いがあったケースです。中央集権型のネットワークでは、中心のサーバーが故障や不具合を起こしてしまうとそのネットワーク全体が支障をきたしてしまいますが、P2Pネットワークは分散型ネットワークなので全てのノードが同じ情報を共有し同じ機能をはたしています。従って一部のノードが使えなくてもネットワーク全体としては問題なく機能するのです。

    実際にブロックチェーンのビザンチンフォールトトレラント性が脅かされた例も

    現状、P2Pネットワーク全体としてはビザンチンフォールトトレラント性があるとされていますが、過去には悪意あるユーザーによる攻撃によってそれが脅かされた事件もありました。

    異、ビットコインなどが採用するPoWにおいてはビザンチンフォールトトレラント性は大多数のユーザーが善意のユーザーであるという信頼の元に成り立っており一定の脆弱性を孕んでいます。今後、分散型ネットワークがさらに発展していくためにはより精度の高いビザンチンフォールトトレラント性を追求する必要がありそうです。

    まとめ:ビザンチン将軍問題は分散型ネットワークにとって無視できない課題

    ビザンチン将軍問題について、ブロックチェーンとの関係やその由来について説明してきました。現状、ブロックチェーンは一定のビザンチンフォールトトレラント性を確保していますが、悪意ある攻撃を想定し今後も常に向き合っていくべき問題であることは間違いなさそうです。