ビットコインについて調べている際に、ビザンチン将軍問題という言葉をよく目にしませんか?
ビザンチン将軍問題とは、P2P(サーバーが無く、パソコン同士が通信を行う通信方式)ネットワークで生じる、情報の信頼性の形成に関わる重要な問題です。
P2Pネットワークは、『 悪意ある参加者がネットワークに参加している、あるいは、送られてくる情報に信ぴょう性がない場合、ネットワーク全体で1つの意思決定ができない』という意味である『合意形成問題』を抱えています。
ビットコインは「Proof of Work(POW)」という仕組みを利用することにより、ビザンチン将軍問題を解決に導けるということで注目を集めました。
本記事では、ビザンチン将軍問題の詳しい内容と、POWを説明します。
ビットコイン・ブロックチェーンを深く知るには必要不可欠な情報ですので、抑えておきましょう。
目次
ビザンツ帝国での合意形成問題
ビザンチン将軍問題と聞いても、「ビザンチンとか将軍って言葉が入っているけど、いったいどういう意味?」とピンとこないですよね。
ビザンチンは国の名前で、ビザンチン国を侵略しようとした将軍が起こした問題をとって「ビザンチン将軍問題」と言われています。
ビザンチン国を、9人の将軍からなる軍隊が包囲しました。
ビザンチン国は非常に強く、9つの軍隊が一斉に攻撃を行わなければ侵略できません。
しかし9つの軍隊が一斉に攻撃を仕掛けることは難しく、リスクを伴います。
そこで9人の将軍は『多数決』によって、侵略か撤退かを決定することにしました。
将軍はそれぞれ配置場所にいるため動けないので、伝令を用いて侵略か撤退の表明を他の部隊に伝えます。
その結果、侵略が『4票』・撤退が『4票』となり、最後の1人の将軍に決断が委ねられました。
しかし最後の将軍はビザンチン帝国側の人間で、侵略を良しと思っていません。
それどころか、包囲している部隊に最大限の被害を与えたいと考えていました。そこで、最後の将軍は「侵略派に侵略」と伝え、「撤退派に撤退」と伝えました。
すると、侵略派の部隊は5票集まったことにより侵略を開始し、撤退派の部隊は撤退を開始します。
9部隊揃っていないと侵略はできないため、侵略を行った部隊は壊滅し、大打撃を受けることとなりました。
これがビザンチン将軍問題の概要であり、『1つの悪意ある参加者の、信ぴょう性のない意見のせいで、全体の意思決定ができない』という意味の『合意形成問題』の代表例として扱われています。
なぜPOWはビザンチン将軍問題を解決するのか
ビットコインが通貨として成り立つためには、取引の改ざんができないような仕組み作りが求められます。
ビザンチン将軍問題に例えると、裏切り者の将軍を排除する必要があるのです。
この裏切り者の排除のために、「Proof of Work(POW)」を用いたブロックチェーン技術が発明されました。
ではなぜPOWがビザンチン将軍問題を解決するのでしょうか。
それはブロック生成の順番とその承認方法にあります。
本項では、POWのブロック生成の方法と承認方法について説明します。
ブロックの生成の順番について
ブロックチェーンはその名の通り、取引データをまとえたブロックを鎖状につなげていく技術です。
このブロックを不特定多数の人間が自由に生成してしまうと、データを改ざんしたブロックをつなげてしまう可能性があるので、ブロック生成に関して決まりを作ることにしました。
『ナンス』と呼ばれる、ブロック生成に必要な数値を一番早く求めた者が、ブロックチェーンへの追加を行う権利を有する」というものです。
世間で「マイニング」と呼ばれる行為がこちらに当たります。
ナンスの計算問題は処理量が膨大な為、これにより悪意ある人間の自由なブロック生成を防いでいるのです。
このナンス+今回行った取引のデータ+前回生成されたブロックのハッシュ値(データを暗号化したもの)を格納することで、1つのブロックが生成されます。
つまり、新しいブロック=ナンス値+今回の取引データ値+前回のハッシュ値という式が成り立ちます。
ブロック承認の仕組みについて
先ほど、「ナンスを一番最初に求めた者が、ブロックチェーンへの追加を行う権利を有する」と説明しました。
これだけでは計算に対する答えが本当に合っているかの判断が難しいです。
ですので、1番最初に計算問題を解いた者は、他の参加者に報告を行う必要があります。
他の参加者がこの答えを正しいかを確認し、正解と判断された場合に初めてブロックチェーンへの追加が行われます。
ナンスを求める為の膨大な計算量と、複数の参加者による答え合わせを行うことで、悪意ある人間の不正から取引情報を守っているのです。
なぜPOWはビザンチン将軍問題を解決するのかまとめ
悪意ある参加者がある1ブロックの改ざんを行おうと画策したとします。
そのブロックのデータが改ざんされたとすると、データを暗号化したハッシュ値が変わります。
このハッシュ値が変わると、『前回のブロックのハッシュ値』を盛り込んでいる次のブロックの数値も変わってしまいます。
このブロックの数値が変われば、その次も……とどんどん変化します。
ブロックの数値が変われば改ざんがすぐにばれてしまうので、ばれないようにブロックの数値はそのままにしておきたいですよね。
つまり、新しいブロック=ナンス値+今回の取引データ値+前回のハッシュ値という式の「取引データ値」を変更かつ「新しいブロック」の数値を同じにしなければなりません。
前回のハッシュ値は変更できないので、ナンスを再度見つけなおして、新しいブロックの値を同じにする必要があります。
このナンスを求めなおす処理を改ざんしたブロックより後のブロックすべてで行わなければなりません。
その間にも新しいブロックは生成され続けているため、膨大な計算処理が間に合わないのです。
この仕組みによって、ビザンチン将軍問題のような「悪意ある参加者」を排除しています。
まとめ
ビザンチン将軍問題を要約すると、以下のようになります。
- 悪意ある参加者の信ぴょう性の無い意見のせいで、全体の意思決定ができない問題のこと。
- 問題解決するには、悪意ある参加者を排除しなければならない。
- POWにより、悪意のある参加者の排除が可能
- POWの仕組み上、データ改ざんには労力が必要で現実的ではない
ビットコインが信頼性のある通貨と言われている理由は、上記の改ざんに対しての対策がしっかりしているという点です。
ブロックチェーンは今後も普及して行くことが予想される画期的な技術です。
ビザンチン将軍問題は難しい言葉が多くややこしいですが、ブロックチェーンを詳しく知る為に少しでも理解を深めておきましょう。
コメントを残す