今回は「分散型データベースとパーミッションブロックチェーンはどう違うのか」という疑問について、以前調べたことをまとめたいと思います。
今回書いていく内容は以下の通りです。
- パーミッションブロックチェーンとは何か
- 「パブリックブロックチェーン」「分散型台帳」という言葉との関係
- 分散型データベースとパーミッションブロックチェーンの違い
では以下順番にみていきます。
パーミッションブロックチェーンとは何か
まずパーミッションブロックチェーンとは何かという言葉の定義についてですが、おおよそ「参加できるコンピュータが限定されているブロックチェーン」ということになります。特定の管理権限を持つコンピュータによりネットワークへの参加が承認される意味で、広義のプライベートブロックチェーンともされています。
これと反対の概念がパブリックブロックチェーンであり、パブリックブロックチェーンにおいては世界中の全てのコンピュータがブロックチェーンへ参加することが可能です。
代表的なものがビットコインやイーサリアムと言った「仮想通貨」です。これらは悪意あるコンピュータも含めて全てのコンピュータ、すなわちノードがネットワークに参加することができるため、それでもなお悪意ある意思決定を排除するためのコンセンサスアルゴリズムが重要になってきます。
反対にプライベートブロックチェーンにおいては参加者が限定されています。参加者が一つの会社であれば「プライベートブロックチェーン」、複数の参加者がいれば「コンソーシアムチェーン」もしくは「コンソーシアム型」などと呼称されます。
代表例がLinux Foundation主導のHyperledgerでしょう。Hyperledgerはオープンソースで開発されており、その上にはIBMが主導するHyperledger Fabricやソラミツ主導のHyperledger Irohaなど、10のプロジェクトが動いています。
「パブリックブロックチェーン」「分散型台帳」との違い
さて先述したようにパブリックチェーンとは参加者が限定されている点が異なっているのですが、ユースケースも全く異なっています。パーミッションチェーン、特にコンソーシアム型のチェーンは既存の銀行のような金融機関同士が国際送金システムを作ったりすることに使用されることが多いのに対して、パブリックブロックチェーンにおいてはビットコインに代表されるようにそもそも銀行を介さないで国際送金をするための仕組みとして開発されている点にそれが顕著にみられます。
また最近よくメディアでは「ブロックチェーンは分散型台帳!」という言い方がされていますが、確かにパーミッションブロックチェーンは分散型台帳ではあるものの、パブリックチェーンは分散型台帳に限定されているものではありません。
そもそもコンピュータが取引を記録する台帳(取引を記録しておくためのコンピュータファイル)をこれまでは一つのコンピュータが記録していたのに対し、同一の記録がされた内容をネットワークに参加する複数のコンピュータが保持することで利害関係の異なる複数当事者同士が不正を防ぎ、マシンコストを引き換えにビジネスコストを下げようとするものが、分散型台帳です。
しばしばメディアなどで「ブロックチェーンは低コストで高セキュリティを実現!」という言い方がされますが、これも厳密にコストの中身を見る必要があります。ブロックチェーンが下げているコストは合意決定をプロトコルで規定することでビジネス上の摩擦を避ける、すなわちソーシャルコストであって、従来一つのコンピュータが管理していた情報を何台ものコンピュータが持っていること自体はどう考えても物理的なコンピュータ管理コストは上がっています。
結局ブロックチェーンは、一度合意されたすり合わせの社会的コストをマシンパワーで自動化することで引き下げるシステムなので、プライベートかパブリックかの分岐点は、すり合わせる対象が不特定多数なのかある程度の仲間内なのかだけで、マシンコストと引き下げられる社会的コストとの天秤でしかない
— なまはげ (@_namahagesan) January 10, 2019
この点大手ブロックチェーン企業Consensysも自社メディアで言及していたように、分散型台帳=パーミッションブロックチェーン(特にコンソーシアムチェーン)という図式は確かに成り立ちます。
一方でパブリックブロックチェーンというのは全てのコンピュータがネットワークに参加できます。ゆえに不正を働くコンピュータをいかに排除しながら取引の承認およびブロックの生成を行うかが鍵となります。そのためのブロック生成にかかる意思決定をプロトコルレベルで規定しているのが、ビットコインのPoWや、イーサリアムが今後移行を予定しているPoSと言ったコンセンサスアルゴリズムです。この点が、ブロックの生成権が承認された者のみに与えられているパーミッションブロックチェーンと決定的に異なります。
分散型データベースとパーミッションブロックチェーンの違い
ではパーミッションチェーンと「分散型データベース」にはどのような違いがあるでしょうか。
- レプリケーション。他のDBで新しいデータが更新されているのを発見次第、自分のDBも更新しようとする仕組み。ただ分散しているDBの数が多いほど処理に時間がかかり、計算資源も使うし、処理のスピードがDBによって違うために一時的にDB間でデータが矛盾する
- デプリケーション。一つのDBをマスターとして決めておき、決められた時間に一斉に他のDBがマスターの複製を行う。この場合、データの更新などはマスターDBにだけ行われ、他のDBはデータの更新を行わない。
- ノードが管理するのが個別の台帳であるか、同一台帳であるか
- 台帳の取引記録について、現在の値のみを保存しているのか、過去の取引もログとして残しているのか
の2点が決定的に異なっていると言えます。
- データのシームレスな共有を目的とするか、
- 合意形成にかかるコストを軽減するか