ブロックチェーンの特徴とスマートコントラクトの関係
ブロックチェーンの特徴は、スマートコントラクトの特徴としてもそのまま当てはまります。スマートコントラクトのコードと内部状態のデータはブロックチェーン上にあります。このため、スマートコントラクトはすべてのノードに共有され、どのノードでも中身を見ることや実行することが可能です。また、スマートコントラクトの実行は、実質的にゼロダウンタイムです。ブロックチェーン上のすべてのノードが停止しない限り、スマートコントラクトの呼び出しができなくなることがないからです。耐改ざん性についても同様です。各ノードがデータの正しさを検証することで、結果としてスマートコントラクトのコードと内部状態は改ざんの余地なく正しい状態に維持されます。
そして、スマートコントラクトの実行は非中央集権的です。ここでは、実行の仕組みの詳細を保留して(これは、以降の連載で解説予定です)、何がスマートコントラクトの実行に相当するのかと、その結果としての特徴を説明します。
スマートコントラクトの実行では、参照系APIの呼び出しと更新系APIの呼び出し(こちらにはデプロイも含まれます)では挙動が違います。参照系APIの呼び出しは各ノードが持っている改ざんチェック済みの共有データを参照する処理となり、各ノードで即時に実行されます。一方、更新系APIの呼び出しはトランザクションとして表わされます。トランザクションは、ブロックチェーンに接続される新しいブロック内に格納されるときに呼び出し内容に従って実行されることになります(これが前述の更新系APIが非同期処理になる理由です。トランザクションが送信された後からブロックが作成されるまでの間、一定の時間がかかるためです)。また、新しいブロック作成とともに、参照系APIで使われる共有データも更新されます。
つまり、スマートコントラクトのAPI呼び出しと実行は、ブロックチェーンネットワーク上でコンセンサスアルゴリズムに則った新しいブロックが作られることに依存します。ブロック作成処理は非中央集権的に行うことが可能なので、結果としてスマートコントラクトの実行も非中央集権的な特徴を持てるわけです。
スマートコントラクトの差別化ポイント
ここまで解説した内容から言えることのひとつは、ブロックチェーンのスマートコントラクトで提供されるサービスは、従来型のクライアント・サーバーシステムで提供されるサービスに比べ、特徴としてより高い公正性や透明性を持つということです。ここで公正性や透明性とは、システムの中でどんな処理が行われて結果に至るのか、仕組みに不正や悪意がないかどうか、もし望めば誰でも直接見たり検証したりすることが可能といったことです。
公正性や透明性について最近の世間一般の状況を鑑みると、政治や行政からビジネスの世界まで、組織の運営や活動の状況、制度の仕組みなどに対する情報開示の要求、およびそれに応える重要度が増している状況ではないでしょうか。例えばビジネスの世界では、巨大IT企業の提供するサービスがユーザーには直接見えない形で個人情報を収集し、莫大な収益を生み出している不透明な現状に対して、さまざまな危機感が生まれています。
従来型のクライアント・サーバーシステムで提供されるサービスは、結局のところブラックボックスです。サービスを利用するユーザーの興味は、たしかに提供されるサービス自体であり、無料で使える便利なサービスであれば、実際に中で何が行われているか二の次であるかもしれません。このような状況下は、意識しているか無意識なのかの違いはあるにせよ、サーバーの運営者を信頼してサービスを利用していることにはなります。
一方、ブロックチェーンを実行プラットフォームとするスマートコントラクトのサービスはそうではありません。基本的に、スマートコントラクトの内部は、誰でも見て検証できるようにすることができます。実行プラットフォームとしてのブロックチェーンで信頼する必要があるのは、使われている技術要素、ノードと呼ばれるブロックチェーンを動かす自分のコンピューター、および自分と不特定多数のノードの集まりが作り出すブロックチェーンネットワークであって、特定の企業が運営するサーバーに依存する必要はありません。この点が、従来の特定企業への依存型サービスとは大きく異なります。
まとめ
開発者の方にとってスマートコントラクトは、オブジェクト指向言語でいうクラスです。APIと内部状態を持ち、プログラミング言語で実装します。クラスのインスタンス化に相当することが、スマートコントラクトのデプロイです。また、システム機能の粒度的には、マイクロサービスのように独立したひとつのサービス機能を提供するもので、そのような一例がNFTです。
スマートコントラクトの実行プラットフォームであるブロックチェーンの特徴は、ブロックチェーンを構成する技術要素とそれを利用した仕組みから生み出されます。技術要素は大きく3つあり、P2Pネットワーク、暗号技術、コンセンサスアルゴリズムです。3つの技術要素を使った仕組みから生み出されるブロックチェーンの特徴は4つに整理でき、データの共有、ゼロダウンタイム、耐改ざん性、そして非中央集権です。技術要素のまとめを表1、特徴のまとめを表2に示します。
| 技術要素 | 説明 |
|---|---|
| P2Pネットワーク | 複数のコンピューターが対等の関係で通信しあうネットワーク構成方式です。ブロックチェーンでは、P2Pネットワーク上の各コンピューターのことをノードと呼びます。 |
| 暗号技術 |
ブロックチェーンでは、主に2つの暗号技術が用いられます。 ①暗号学的ハッシュ関数 ②デジタル署名 これらの暗号技術は、ブロックチェーンを構成する主要なデータ構造で使われます。 |
| コンセンサスアルゴリズム | ブロックチェーンネットワーク内のノード間の合意ルールです。ルールに従って作成されたブロックのみがブロックチェーンの新しいブロックとして認められます。主なアルゴリズムにProof of Work(PoW)、Proof of Stake(PoS)、Proof of Authority(PoA)があります。 |
| 特徴 | 期待される内容 |
|---|---|
| データの共有 | ブロックチェーンネットワークの参加ノードは信頼できる同一のデータを保持します。 |
| ゼロダウンタイム | ノード障害が発生しても代替ノードがある限りシステムは機能し続けます。 |
| 耐改ざん性 | データが変更、改ざんされていたり、内容が不正だったりすることをノードが検証できます。 |
| 非中央集権 | システムの制御を司る権限を、特定のノードに集中させず、権限分散させることができます。 |
ブロックチェーンの特徴は、スマートコントラクトの特徴としてもそのままあてはまります。つまり、スマートコントラクトのコードやデータは耐改ざん性のある形で共有され、実行環境はゼロダウンタイムで、従来型システムのように特定の企業のサーバーに依存せずにブロックチェーンネットワークの中で非中央集権的に実行できます。
以上をまとめると、スマートコントラクトを利用して提供されるサービスは、従来型システムでのブラックボックスの処理で提供されるサービスよりも、公正で透明性のあるサービスとして訴求することができます。
次回は、ブロックチェーンを構成するノードが持つ役割と、ノード上でのスマートコントラクトの実行の仕組みを解説する予定です。
