■分散型システムのネットワーク上に嘘つきがいた場合、合意できるか?
ビザンチン将軍問題は、異なるコンピューター間の通信ネットワーク上に間違った情報を流す者がいた場合、意見を一致させることができるかどうかという問題です。ビットコインは特定の管理者を持たない分散型システムで運営されています。中本哲史氏は、ビットコインを発案した論文の中で、ビザンチン将軍問題を解決したと書いています。
分散型システムのネットワークは、1対1の通信を集合したようなものです。大きな会議場に集まって意見を交換するのではなく、互いに手紙を書いてやり取りするのに似ています。仮想通貨のようなシステムを運営させるには、ある取引のデータに不正や間違いがないか、正しいデータかどうかについて、承認者間で合意を得たうえで、承認作業をする必要があります。すべての承認者が誠実に手紙を書けば、自分のところに集まった手紙をすべて開封し、多数決によって意思決定することができます。ですが、悪意を持ったものが手紙を書き換えたり、嘘の情報を書いてしまったりすると、何を信じていいのかわからなくなってしまいます。そのため、正しい意思決定ができなくなるばかりか、システムそのものが故障してしまう可能性もあります。
このような問題を、ビザンチン帝国が敵国を攻撃するかどうかを意思決定する思考実験に例えて、ビザンチン将軍問題といいます。ビザンチン将軍問題におけるシステム故障を、ビザンチン故障といいます。
■ビットコインは、ビザンチン将軍問題を解決したという主張
ビットコインがこの問題を解決したという主張は、次のように説明できます。ビットコインの仕組み(プルーフ・オブ・ワーク)では、計算問題を最初に解いたマイナーが承認作業をする権利を与えられます。多数決や全会一致ではありません。お互いに意見を公開したうえで意思決定をするわけではないので、嘘つきがいたとしても、影響はありません。
仮にそのマイナーが悪意を持って不正なデータを作成したとしても、ブロックチェーン上の整合性がとれなくなるため、発覚するようになっています。全てのブロックチェーンを書き換えるには相当の労力が必要のため、結局真面目にマイニングをしたほうが得をするということになります。
分散型システムでありながら、プルーフ・オブ・ワークとブロックチェーンという仕組みを持つことによって、ビザンチン将軍問題を克服したのです。
■ビットコイン誕生以前の克服法
プルーム・オブ・ワークを使用する以外にも、条件付きですがビザンチン将軍問題を克服する方法があります。他の承認者から受け取った手紙の内容を、「Aさんの意見は○、Bさんも○、Cさんは×、…」という具合に一覧にして、あらためてお互いに他の承認者たちに送ります。この一覧を受けとったら、その内容をまた一覧にします。その中で「Aさんの意見は×だった」と書いてあるものがあれば、誰かが嘘をついていることになります。その場合、少数意見だった人を嘘つきとみなします。これを繰り返すと、嘘つきを排除して合意に至ることができます。
ただし、この方法では、嘘つきが全体の三分の一以上いると使うことはできません。やはりビザンチン将軍問題を解決するには、ビットコインの仕組みが最も有効であるといえます。