PR

複数のデータ管理者でP2Pネットワークを作る

 デジタル署名とハッシュチェーンを組み合わせたとしても、信頼のできないデータ管理者ができてしまう不正が一つある。「登録データを握り潰す」ことだ。データ生成者から登録の依頼を受けた署名済みデータを登録せずに放置する不正は可能だ。

 この不正を防ぐために、ブロックチェーンではデータ管理者を複数設け、データ管理者間をP2Pネットワークで接続する、という構成を採っている。

 データを登録したい生成者は、複数存在するデータ管理者のうち、誰に登録依頼を出してもよい。データ管理者が相互に登録依頼データを伝搬させて、多くのデータ管理者にこのデータが届くようになっている。

 データ管理者が複数いる場合、どのデータをどのような順番で「履歴」として蓄積するかは、データ管理者間で合意して決めなくてはならない。P2Pネットワークで共有されたデータは、必ずしも全員のデータ管理者に同じデータが、同じ順番で伝わっているとは限らないからだ。

 こうした分散システム間の合意形成アルゴリズムは、1980年代から「ビザンチン・フォルト・トレラント(BFT)プロトコル」として研究されてきた。

 BFTプロトコルは、データ管理者の役割を負うシステムのいくつかが故障したり、不正を行ったりしても、残りのデータ管理者間で合意できる仕組みを提供する。ただし、BFTプロトコルを適用できるのは、事前に誰がデータ管理者なのか全員がわかっているシステムに限られる。

 ここに、ビットコインのブロックチェーンが注目を浴びた理由がある。ビットコインの発明とは、「ほかの誰がデータ管理者なのか全てを把握していない」システムでも、どのデータをどの順番で登録するか、データ管理者で合意するためのルールを編み出した点にある。

 ビットコインのブロックチェーンではこのルールとして「Proof of Work」を採用する。具体的には暗号パズルを最も早く解いた人がどのデータを登録するかを決める、いわば「早い者勝ち」ルールである。

 各データ管理者は、自分のところに集まってきた履歴候補のデータをひとまとめのブロック候補にする。そして、現在の最新のブロックのハッシュ値と、ひとまとめにしたブロック候補のデータの値に依存する暗号パズルを解く。パズルが解けたら、パズルの答えとブロック候補をほかのデータ管理者にP2Pネットワークで同報する。

 ほかの人は、そのパズルの答が正しければ、それを「新しいブロック」とみなす。そして、自分のところに集まってきた履歴候補のデータをこの新しいブロックにつなげようと、次の暗号パズルに挑戦するのである。このような順番でつながった「ブロック」の「チェーン」に含まれるデータが、このブロックチェーンが蓄積し、管理する「履歴データ」となる。