ブロックチェーンの技術要素とその特徴
ブロックチェーンを構成する技術要素は大きく3つあります。その3つとはP2Pネットワーク、暗号技術、コンセンサスアルゴリズムです。これらの3要素がブロックチェーンにどのような特徴を生み出しているのかを解説します。
(1) P2Pネットワーク
P2Pネットワークは、複数のコンピューターが対等の関係で通信しあうネットワーク構成方式です(図1)。クライアント・サーバー方式のようなコンピューター間の関係差はありません。ブロックチェーンでは、P2Pネットワーク上の各コンピューターのことをノードと呼びます。以降では、このようなブロックチェーンのP2Pネットワークのことをブロックチェーンネットワークと呼びます。
ブロックチェーンネットワーク上のノードは前述のように対等な関係であり、各ノードが保持するデータも全く同一のものです。つまり、ブロックチェーンではデータが共有されることになり、これがブロックチェーンの特徴のひとつ(データの共有)です。また、P2Pネットワークは多数のノードで構成されているため、1台や2台のノードが故障したとしても、代替のノードさえあれば機能し続けます。こういった点で実質的にゼロダウンタイムシステムとみなせる点も特徴です。
(2) 暗号技術
ブロックチェーンでは、主に2つの暗号技術が用いられています。ひとつは暗号学的ハッシュ関数で、データの完全性を証明したりチェックしたりするためのものです。例えば、暗号学的ハッシュ関数により任意の2つのデータのハッシュ値を計算し、計算結果のハッシュ値を比較します。ハッシュ値が一致すれば、2つのデータは完全に同一で、改ざんされていないと考えられます。もうひとつはデジタル署名で、データ送信者の本人確認、および、データが改ざんされていないことを証明するために使われます。
これら2つの暗号技術は、ブロックチェーンを構成する主要なデータ構造である、トランザクション(図2)、ブロック(図3)、データ構造としてのブロックチェーン(図4)、スマートコントラクトなどのデータの格納などに使われるハッシュツリー(またはマークルツリーともいいます)に使われます。
このような暗号技術を利用したデータ構造により、ブロックチェーンの各ノードでは、ブロックチェーンネットワークを流れる共有データに対し、改ざん有無などの正しさのチェックを行うことができます。ノードは、同じブロックチェーンネットワーク上の任意のノードからデータを取得し、正しさを暗号学的に検証します。検証により正しさを確認したらそのデータを取り込み、誤りや改ざんを検知したらそのデータを捨てて別のノードから再度データを取り寄せればよく、結果としてどのノードでも正しいと判断されるデータは同じになるはずです。それゆえに、ブロックチェーンではデータが共有されているにもかかわらず、耐改ざん性の特徴を持っています。
(3)コンセンサスアルゴリズム
コンセンサスアルゴリズムは、ブロックチェーンネットワーク内のノード間の合意ルールです。ブロックチェーンのブロックは、コンセンサスアルゴリズムのルールに従って作成されます。また、前述の暗号学的な検証を通ったブロックのみがブロックチェーンに接続するための新しいブロックとして認められます。コンセンサスアルゴリズムには複数の種類があります。主なアルゴリズムとして、Proof of Work(PoW)、Proof of Stake(PoS)、Proof of Authority(PoA)があります。PoAには特性が異なるさまざまな実装バリエーションがあります(Clique、Raft、IBFT、QBFTなど)。
ブロックチェーンでは、コンセンサスアルゴリズムに従ったブロック作成が機能していることが、システムとしてブロックチェーンが機能していることになります。このため、ブロックを作成するノードがシステムを実質的に制御する権限を持つことになります。ただし、ブロック作成の役割は特定の運用者が持つノードに集中させる必要はなく、不特定多数のノードに分散させることができます。これにより、クライアント・サーバーシステムのような特定のサーバーの制御下で中央集権的に運用されるシステムとは異なる、非中央集権的なシステムを実現することができます。
一方で、ブロックチェーンネットワークに不特定多数のノードが参加するようになると、ノード集団の中に、ブロックチェーンネットワークを破壊するような挙動をするもの(故意や悪意だけでなく、ノード故障等も考えられます)が現れる可能性もあります。このような破壊的な攻撃に対しても、ビザンチン故障耐性(Byzantine Fault Tolerance:BFT)の性質を持つコンセンサスアルゴリズムを採用すれば、一定数のノードの攻撃には耐えることができます。ビザンチン故障耐性のあるコンセンサスアルゴリズムには、PoW、PoS、IBFTなどがあります。このような点で、ブロックチェーンは非中央集権性の特徴を持つシステムであると言えます。
以上をまとめると、ブロックチェーンの技術要素から生み出されるブロックチェーンの特徴は、データの共有、ゼロダウンタイム、耐改ざん性、そして非中央集権です。次に、これら4つの特徴とスマートコントラクトの関係を解説します。
