ブロックチェーンの4つの特徴と代替の選択肢
連載第2回で解説した通り、ブロックチェーンはP2Pネットワークで接続された多数のコンピューター(ノード)の集まりで構成される分散型のシステムです。また、ノード間で合意形成(コンセンサス)を取りながら動作するため、従来のクライアント・サーバーのような中央集権型システムと比べると、ブロックチェーンはシステム構成が複雑で、動作も非効率だと言えます。それでもなおブロックチェーンを検討する理由は、非中央集権、データの共有、ゼロダウンタイム、耐改ざん性というブロックチェーンの4つの特徴(表1)がシステムにとってすべて重要で、現在の選択肢としてはブロックチェーンが最良だから、といった流れであれば無理がないと思います。4つの特徴のすべてが重要でないなら、あえて非効率なシステムであるブロックチェーンを採用する必要はないかもしれません。
特徴 | 期待される内容 |
---|---|
非中央集権 | システムの制御を司る権限を、特定のノードに集中させず、権限分散させることができます。 |
データの共有 | ブロックチェーンネットワークの参加ノードは信頼できる同一のデータを保持します。 |
ゼロダウンタイム | ノード障害が発生しても代替ノードがある限りシステムは機能し続けます。 |
耐改ざん性 | データが変更、改ざんされていたり、内容が不正だったりすることをノードが検証できます。 |
例えば、4つの特徴のうち非中央集権を重視せず、対改ざん性を持つデータベースが欲しいだけなら、ブロックチェーンと機能的に類似の代替プロダクトが採用できます。候補として、AmazonのQLDBやOracleのBlockchain Tableが考えられます。これらのプロダクトは中央集権型のシステムなので、分散型システムのブロックチェーンと比較して、システム構成がシンプルになったりコストや性能などの点が優れていたりといった点で、総合的に見てよい選択肢となるかもしれません。
ブロックチェーンのサービス構成例
ここまで本連載では、ブロックチェーンの特徴やスマートコントラクトの動作、ノードの役割などを説明してきました。まとめとして、ブロックチェーンを用いて展開される実際のサービスのイメージをNFTの世界を例に解説します。ブロックチェーンを用いたサービスの世界は、スマートコントラクトに加えて複数の要素の組み合わせで実現されます(図1)。スマートコントラクトはマイクロサービスのような自律した要素で(連載第2回参照)、非中央集権的なブロックチェーンネットワークに参加しているメンバーであれば基本的に誰でも直接アクセスすることが可能です。このような点で、各要素間の関係は階層構造というよりは、自律的な要素が相互に関わりあうネットワーク構造と考えられます。
スマートコントラクトの位置付けは、従来のシステムで言うバックエンドのサーバーサイドロジックです。技術的な制約により、スマートコントラクトには不得意なことがいくつかあります。例えば、ブロックチェーンの外側の世界(オフチェーン)の情報に直接アクセスできないこと(連載第4回で解説したオラクルを参照)に加え、サイズの大きなデータを保存できないこと、UI/UXの機能を持てないことなどがあります。理由として、スマートコントラクトの処理はブロックチェーンのデータ共有やコンセンサスアルゴリズムによるブロック作成の仕組みと関連があるため、データが大きすぎてしまうと共有が大変なうえにブロック作成で処理しきれない可能性があるからです。また、スマートコントラクトの処理はブロック作成を待たなければ進まず、UIイベントへの応答に求められるような即時処理向きでないからです。
スマートコントラクトでないその他の要素は、スマートコントラクトの不得意な点を補完するフロントエンドの位置付けです。サービスとしては、フロントエンド要素とバックエンド要素のスマートコントラクトがセットです。このようなセットのアプリケーションのことをDapp(Decentralized application=非中央集権型アプリケーション)と呼びますが、以降で見ていく通り、実際にはフロントエンド側要素は中央集権型システムの場合があります。その場合、非中央集権と中央集権のハイブリッド構成となりますが、ひとつの非中央集権型バックエンド要素を多数のフロントエンド要素で共有することができ、それにより非中央集権の特徴をある程度持つことから、Dappの仲間と考えてよいでしょう。
それでは、以降にてNFTのサービスを構成する各要素を見ていきます。