「ブロックチェーンはデータベースではない」件について

ブロックチェーン技術について説明する記事を書いていると、次のような意見を耳にすることがあります。「ブロックチェーン技術を使わずにデータベース管理システムを使えばいいのでは?」──主にITに詳しい人からこの意見が出る場合が多いようです。

筆者の個人的な意見としては、ブロックチェーン技術とデータベース管理システム(DBMS)やKVS(Key-Value Store)は目的も特性も異なる技術なので「別のもの」と考えた方が理解が早いと思います。それ以前に「そもそも、ブロックチェーンとデータベースを比べること自体が間違っている」とのご指摘もあろうかと思います。

現実に、ブロックチェーンの説明で「データベース」という用語を使う事例はいくつかあります。「ダボス会議」で知られている世界経済フォーラムによる解説動画では、パブリックブロックチェーンについて「オープンで脱・中央集権的なデータベース」と説明しています。この表現は間違いではありません。一方、IBMによるプライベートブロックチェーンの解説動画では、「ブロックチェーンは取引データを確認して記録するデジタル技術です」と説明し、データベースという用語を避けています。IBMが多種多様なデータベース製品/サービスを提供する企業であることを踏まえて考えると、この説明スタイルは賢明だと思います。

今回の記事ではあえて「ブロックチェーンとデータベースは何が違うのか」を見ていきます。前提として、今回の記事では主として情報システムのためのブロックチェーン技術、すなわちプライベートブロックチェーン技術を想定して説明をしています。

ブロックチェーンは「利害が対立する当事者どうしが信頼できる記録台帳」

ブロックチェーン技術が従来の情報システムの技術と最も異なる点は「利害が対立する当事者どうしが信頼できる記録台帳」を、ソフトウェアだけで構築していることです。その前提となる課題には、次のようなものがあります。

(1)当事者全員がシステム上の記録を信用できるのか?
例えば、ある営利企業A社がシステムを管理しているとします。A社とは利害が異なる別の企業B社は、A社が管理するデータを鵜呑みにはできません。B社がA社が管理するデータを受け取って自社のシステムに登録する場合には確認・照合作業(リコンサイル)が発生するでしょう。確認・照合作業を不要にするためには、A社とB社の両方が同時に信用できる記録を作り出す必要があります。それを実現する技術は確認・照合作業を削減できるので価値があります。

(2)内部不正の可能性は?
例えば銀行の情報システムは厳重なセキュリティ機能を備えているはずですが、それでも内部不正による横領事件が発生する場合があります。記録内容の偽造が困難な技術は内部不正を困難にするので価値があります。

(3)サイバー攻撃の可能性は?
管理が甘いデータベース管理システムを狙い、データを消去して「身代金」を要求するサイバー攻撃が現れています。このようなサイバー攻撃に強い技術には価値があります。

(4)故障や災害への対策は?
従来の情報システムでは耐故障性の獲得やディザスタリカバリのために多くのコストがかかっていました。このコストを押し下げる技術には価値があります。

こで挙げた課題は、いずれもひとつの要素技術だけでは解決できません。つまり、データベース管理システムという一つの技術だけで実現できる課題ではありません。一方、ブロックチェーン技術は、複数の要素技術(P2P、分散合意アルゴリズム/確率的ビザンチン合意、電子署名、暗号学的ハッシュ関数)を巧みに組み合わせることにより、上記の課題に対応することを目指しています。

ここまでの議論をまとめると「利害が対立する当事者どうしが信頼できる記録台帳」を作れることがブロックチェーン技術の価値です。これはデータベース管理システムという要素技術だけでは提供できない価値であるといえます。

プライベートブロックチェーンはサイバー攻撃、内部不正に強い

別の観点からブロックチェーン技術とデータベース管理システムを比べてみます。ブロックチェーン技術では標準機能として備えているが、従来のデータベース管理システムは標準機能として備えていない機能を考えてみます。大きくは以下の3点といえるでしょう。

(1)耐改ざん性(ブロックチェーンはデータ本体、その記録者の電子署名、タイムスタンプを改ざん/抹消が困難な形で記録します)
(2)耐故障性(ブロックチェーンを構成する全ノードが故障しない限りシステムは停止しません)
(3)勘定の概念(例えばビットコインのブロックチェーンの場合、残高が必ず釣り合うデータ構造となっています)

これらの特性により、ブロックチェーン技術を活用することでサイバー攻撃や内部不正に対して非常に強いシステムを構築できると考えられます。

このような問題意識で見直すと、従来のデータベース管理システム(あるいはKVS)の弱点は「サイバー攻撃や内部不正に対して相対的に脆弱であること」という見方ができます。現実の情報システムではファイアウォールや物理的なセキュリティ(施設の施錠など)、それに人の動きを規制する業務プロセスによってデータベースの記録内容を守っている訳ですが、これらの防壁を突破されて管理者権限を奪取されてしまうともはや何も守れません。また、内部不正への対処についてはシステム技術だけで対応することには限界があります。

ブロックチェーン技術では、例えば悪意があるユーザーが特定の1ノードを乗っ取ったとしてもブロックチェーンの記録内容を書き換えることはできません。また、ブロックをハッシュで結ぶデータ構造(ハッシュチェーン)、それに情報の記録のさいに分散合意アルゴリズムによる承認が必要なことにより、ブロックチェーンの記録を改ざんすることはきわめて困難な作りになっています。これは内部不正を困難にします。

もちろん、絶対に安全な技術はあり得ません。ブロックチェーンの安全性に関しても議論があります。ノード数が少なく特定の運営主体が存在するプライベートブロックチェーン技術は、特定の中心を持たずノード数が非常に多いパブリックブロックチェーン技術に比べれば脆弱ではないかという指摘もあります。そうだとしても、データベースの管理者権限を1回奪取されるとお手上げとなる伝統的な情報システムに比べると、ある台数のノードの攻撃に同時に成功しないとシステムに影響を与えることができないプライベートブロックチェーン技術はサイバー攻撃に対してより強靱であるという言い方は成り立つでしょう。また、ブロックチェーン技術では、熟練者による運用管理や外付けのアプリケーションに頼るのではなく、ソフトウェアの標準機能として耐改ざん性と耐故障性を備えている点も重要であると考えられます。

ここで補足しておくと、ブロックチェーン技術はデータの不正な書き込みや改ざん、抹消を防ぐためには厳重な対処が施されていますが、データの読み出しに関するセキュリティに対しては、今のところ特別な配慮があるわけではありません。ブロックチェーン上のデータの秘密を守るための技術はまだ研究開発の段階です。例えばMIT Media Labから生まれたEnigmaプロジェクトがあります。BCCC(ブロックチェーン推進協会)では秘匿計算とブロックチェーンの組み合わせを検討しています。

データベース管理システムとは「使いどころ」が大きく異なる

次に、ブロックチェーン技術が従来のデータベース管理システムに及ばない部分を考えてみます。結論から述べると、ブロックチェーン技術は、大量のデータを管理/分析する用途や、関係データベース(リレーショナルデータベース)を前提としたデータモデリング手法に基づいて複雑なデータモデルを表現する用途には向いていません。

ブロックチェーン技術は、ブロックサイズ、トランザクションのサイズ、ブロック承認時間という3つのパラメータにより、単位時間あたりに記録できるトランザクション数の仕様上の上限が決まります(前回のコラム記事「秒間3000~4000取引の処理性能に到達したプライベートブロックチェーン」参照)。つまり、単位時間あたりに記録できるデータの容量に上限があります。トランザクション処理性能という観点ではプライベートブロックチェーンは高い水準まで来ています。しかし大量のデータをブロックチェーンにバルク転送して更新したり、ブロックチェーン上のデータを高速に検索して読み出す用途には向いていません。

ここで例を出すと、ビットコインのブロックチェーンの記録内容を参照できる「ブロックエクスプローラー」と呼ぶサービスがあります。その内部ではブロックチェーンに記録されたデータをデータベース管理システムに転送してサービスを構築しています。つまり、ブロックチェーン技術とデータベース管理システムは、それぞれの使いどころがある技術という訳です。

複雑なデータモデルの表現はRDBMSの独壇場

筆者が参加したあるイベントの参加者の質問で印象深いものがありました。「ブロックチェーンは複雑なデータモデルを表現できるのですか?」というものです。

この質問の背景として、エンタープライズITの分野で発達したデータモデリングの手法があります。業務プロセスと業務に必要なデータを精緻に分析して論理データモデルを構築し、それをリレーショナルデータベースで実装できる物理データモデルに落とし込んで実装する手法です。筆者は、ある大手企業の基幹システムに関する取材のさい、A3用紙で数十枚の規模におよぶ規模の論理データモデルを見せてもらったことがあります。物理データモデルもテーブル数2000に近い規模でした。このような複雑で大規模なデータモデルを扱うには、実績があるリレーショナルデータベース管理システムが適切でしょう。そのうえで、特に耐改ざん性や耐故障性や高度なセキュリティが求められるデータの記録/保存のためにブロックチェーン技術を使うアプローチはあり得るでしょう。ブロックチェーンはいわばデータの「原本」のための技術といえます。

なお、以上の説明は、「ブロックチェーンは関係モデル(リレーショナルモデル)を扱うのに向いていない」「ブロックチェーンはデータベース管理システムではない」ことを言っているに過ぎません。例えば、ビットコインはトランザクション中にスクリプト(一種のプログラム)を含めることができ、「期限がこないと送金できないお金」や「電子署名が揃わないと送金できないお金」などを作り出すことが可能です。別のブロックチェーン技術Ethereumはコントラクトと呼ぶプログラムを動かすプラットフォームとしての性格を持っています。このようにプログラムと「お金」を結びつける手段を備えているブロックチェーンの表現力には大きな可能性があるので、そこは強調しておきたいと思います。

以上、ブロックチェーン技術の得意分野と不得意分野を見てきました。現実の情報システムにブロックチェーン技術を導入する場合には、「ブロックチェーンは標準機能として耐故障性と耐改ざん性を備え、サイバー攻撃や内部不正に強い」という得意分野と、「ブロックチェーンは大量データの管理、検索、分析には向かない」という不得意分野をそれぞれ考慮しつつ、データベース管理システムやKVSと組み合わせてシステムを設計していくことになるでしょう。