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