今回は、ブロックチェーン技術が具体的にどのような仕組みで動いているのかを説明します。ブロックチェーン技術は仮想通貨の「ビットコイン」から始まっていますので、まずはビットコインを例に、基本的な仕組みを解説します。

 ブロックチェーン技術は、インターネット上で利用する電子マネー(仮想通貨)システムを実現するために誕生した概念です。通常、通貨を扱うシステムは、通貨を保証する主体(中央銀行など)が一元的に管理しますが、ビットコインにはその主体が存在しません。このビットコインの特徴は、ブロックチェーン技術があればこそ実現できたと言えます。

 ブロックチェーン技術の特徴は、「改ざんが困難でありながら検証が容易なデータ構造」を持っている点です。これは一般的なシステムから見ると、一見特異な構造・処理手順になっています。

 ブロックチェーン技術では、金銭の出し入れなど取引情報の履歴データを複数集め、時系列に並べてブロックの形を作ります。そのときに、前のブロックをハッシュ関数に代入して得たハッシュ値とナンスを次のブロックに含めます。ハッシュとはデータの「要約」のようなもので、元データが少しでも変わると全く別の値になる性質を持っています。ナンスとは、要約する際に使用するパラメータです。この値が決まるとハッシュ値が決まる関係にあり、ビットコインでは、ある条件に合致したナンスを見つけることが、ブロックを作成できる条件になっています。

 ブロックが作成されると、下図のように一つのブロックが前のブロックの情報をハッシュ値の形で持つことになります。これらのブロックを時系列に並んだチェーン状のデータ構造にしたのが、ブロックチェーンです。このブロックチェーンのデータを、P2Pネットワークでつながった全コンピュータがやり取りし、取引履歴が正しいことをすべてのコンピュータで保証しあうのです。

ブロックチェーンのデータ構造
[画像のクリックで拡大表示]

 ブロックチェーンの特徴は、「改ざんが困難」と言いました。なぜ困難なのでしょう? それは、取引の履歴の一部(ブロックの一部)が改ざんされた場合、その影響は後続のブロックすべてに影響するからです。後続のブロックには前のブロックを基に作ったハッシュ値が入っているので、改ざん者はそれ以降のブロックをすべて作り直さなくてはなりません。すなわち、ブロックチェーンが長ければ長いほど改ざんしにくくなるのです。

改ざんが困難な構造
[画像のクリックで拡大表示]

 P2Pネットワーク上でブロックチェーンを扱うコンピュータの役割を3種類に大別することで、処理の手順を理解できます。なお、ブロックチェーンのネットワークに参加しているコンピュータを「ノード」、ブロックを作成するノードを「マイナーノード」と言います。

(1)利用者:取引の発行
(2)マイナーノード(ブロックチェーンの参加者):ブロックの作成
(3)上の(2)とは別のノード:ブロックの検証と参照

 (1)の利用者が、ビットコインの取引を要求します。取引の要求自体は、不正な利用者が勝手に始めないよう、電子署名で本人証明を行っています。この取引の情報は、ブロックチェーン参加者全員に送られます。

 (2)で、取引の開始を受信したマイナーノードがブロックを作成します。ただし、特定の条件を満たすナンスを一番最初に見つけたノードだけがブロックを作成できるという決まりがあります。誰でも簡単に作成できてしまうと、高性能なコンピュータがあれば偽造できてしまうからです。作成したブロックは、すべてのノードに送られます。

 (3)は、このブロックを受け取ったノードです。受け取ったブロックが正しい手順で作成されたものかどうかを検証します。具体的には、ブロック内のナンスとその前のブロックを引数にしてハッシュ関数を実行した結果がブロック内のハッシュ値と一致しているかを確認するのです。正しいと認めたブロックは、自分が所有するブロックチェーンにつなげます。

 この処理フローによって、多数のノードが正しいと判断したブロックだけが残り、不正なものは破棄されます。

 ブロックチェーンにおいては、この(2)と(3)のノードによる合意形成は重要な要素です。これをコンセンサス・アルゴリズムといい、ビットコインの方法はプルーフ・オブ・ワーク(PoW)と呼ばれます。

 PoWとは、ブロックを作成したマイナーノードに報酬として新しいコインを発行する仕組みです。参加者がCPUを使うこと(自分のコンピュータでハッシュ値を計算すること)に対するインセンティブを与え、ビットコインのシステムをすべてのノードで支えるようにしているのです。