Blockchain EXE Whitepaper#1 「BigchainDBとは何か?」

Blockchain EXE Whitepaper は、ブロックチェーン関連のホワイトペーパーを参加者同士で読み、ディスカッションするイベントです。

12月14日(木)に開催した第一回は、分散型ブロックチェーンデータベース BigchainDB のホワイトペーパーを題材に、様々な疑問や意見が交わされました。

今回は BigchainDB のホワイトペーパーの内容とともに、イベントの様子をお送りします。

BigchainDBのホワイトペーパー

今回の題材となるホワイトペーパーは A BigchainDB Primer です。

BigchainDB には詳細に説明されたホワイトペーパーと入門版の2つのホワイトペーパーがあり、こちらはその入門版です。BigchainDB の背景やコンセプトが9ページで分かる内容となっています。

より詳細な仕組みとユースケースについては BigchainDB: A Scalable Blockchain Database にて説明されています。入門版を読んで不明点があればこちらを参照してください。ただし内容は2016年8月時点のものであり、かなり古いため注意が必要です。

和訳版の「A BigchainDB Primer」で輪読

今回はイベントの公開から開催までに日数がなかったため、ホワイトペーパーの和訳を配布しました。

和訳: A BigchainDB Primer

章ごとに、5分程度黙読した後、参加者同士でディスカッションを行うという形でイベントを進めていきました。

BigchainDBの要旨

冒頭の要旨にて、BigchainDB のコンセプトが端的に記されています。

BigchainDBはスケーラブルなブロックチェーンデータベースで、「分散化」、「不変性」、「アセットの作成と転送のためのビルトインサポート」を含むブロックチェーン特性を持ったビッグデータデータベースです。

分散型技術は以前からインターネットの一部でありましたが、Bitcoinの登場で新たな波が生まれました。特に、Bitcoinは、中央の信頼できる第三者に依存することなく、信頼できる不変のトランザクションレコード(台帳)を作成することが可能であることを示しました。多くの人は、Bitcoinの基盤となるブロックチェーン技術であらゆる種類の記録を保存出来ると考えていますが、Bitcoin自体は、現状すべてのレコードを処理できるようにスケールすることはできません。Bitcoinや類似のブロックチェーンをスケールするために、多くのアイデアやプロトタイプがあります。

»ビットコインは完璧ではない?ブロックチェーン技術の問題からみる4つの主要課題

一方、BigchainDBはスケーリングの問題を解決するために異なるアプローチをとっています。実証済みのスケーラブルでビッグデータのデータベースを基本としており、そこに ブロックチェーンの特性を追加しています。

BigchainDBとは?「ホワイトペーパー:第一章〜第三章」

第一章から第三章までは、ビットコインとその他の分散プロトコルの生まれた背景、それに対する問題提起について書かれています。

■1.BigchainDBの概要

BigchainDBはスケーラブルなブロックチェーンデータベースで、分散化、不変性、アセットの作成と転送のためのAPIを含むブロックチェーン特性を持ったビッグデータデータベースです。

この入門部分では、「BigchainDBがなぜ必要なのか」「ブロックチェーンの特性をどのように追加するのか」「分散型エコシステムの残りの部分にどのように適合するか」「どのように試すことができるか」について説明します。

■2.ビットコインとその他の分散型プロトコル

初期のインターネット(ARPAnet)の1つの目標は、核戦争に耐えられる通信ネットワークを作り出すことでした。その目標を達成するために、設計者は、単一障害点である中央集権型の必要性を排除しました。そのため、主要なインターネットプロトコルは分散型となっており、他のインターネットベースのプロトコルも一部分散型となっています(例えば、電子メール、DNS、BitTorrentなど)。しかし、時間が経つにつれて、インターネット上では多くの中央集権型サービスとAPIが普及してきました(FacebookやGoogleの検索など)。

2009年に導入されたBitcoinは、分散型プロトコルであり、この状況に一石を投じました。理由は、中央銀行や他の信頼できる第三者を必要としない、分権化された暗号化の動作が実証されたためです。信頼はプロトコルとその永続的な蓄積(すなわち長期的なBitcoinブロックチェーン)から生まれ、世界中の何千ものコンピュータに一貫して検証可能にコピーされます。

■3.ブロックチェーンは他のデータを記録できるのか?

Bitcoinが中央の所有者またはコントローラを必要とせずに信頼できるBitcoinトランザクションのレコードを生成できる場合、Bitcoinまたは類似のテクノロジを使用して、その他の信頼できる重要な情報を記録できますか?出生証明書、大学の成績証明書、特許出願、土地所有権取引、美術所有権取引、サプライチェーン記録、研究室報告書、政府の透明性報告書などを考えてみてください。これらの例の中には、非常に高速にレコードが生成されるものがあります。Bitcoinで対応しきれれるのでしょうか?

BigchainDBとは?「ホワイトペーパー:第四章〜第五章」

第四章と第五章では、Bitcoin と既存データベースの性能比較を通して Bitcoin における問題点を掘り下げ、その上で BigchainDB によるアプローチについて説明しています。

■4.Bitcoinと既存データベースの比較

現状のBitcoinネットワークでは、1秒あたり10トランザクション(平均)未満のトランザクションしか記録出来ず、ノード数を増やしても改善されません。Bitcoinトランザクションには任意の情報を格納できますが、数十バイトもありません。
Bitcoinブロックチェーンの総ストレージ容量は10分ごとに約1メガバイト増加しますが、全てのデータで1メガバイトになります。こちらも、ノードを増やしても保存容量は増加できません。さらにBitcoinトランザクションが確定されるまでに数十分から数時間かかります。

一方、既存のビッグデータデータベースを見てみましょう。トランザクション性能は、1秒あたり数百万回を処理可能であり、ノードを追加すれば性能は上がります。たとえば、Netflixは2011年にCassandra(OSSの分散型DB)をテストしました(図1)。プロットの左下に、50個の分散型Cassandraノードが1秒あたり174,000回の書き込みを処理できることがわかります。300ノードまで増加すると、毎秒110万回の書き込みが可能になりました。3年後のフォローアップ調査では、わずか数十のノードで1秒あたり100万回の書き込みスループットが示されました。

図1:ホワイトペーパーより

既存データベースの他の特性を考えてみましょう。個々のレコードをかなり大きくする(メガバイト)ことが可能で、ノードを追加するにつれて(ペタバイト以上に)合計ストレージ容量を増大する事が可能です。世界規模の分散型データベースのトランザクションの待ち時間は、数百ミリ秒になることがあります(単一のデータセンターでは、主に光の速度によって決まります)。さらに、既存のデータベースはすべて、豊富なクエリと権限をサポートしています。

ストレージコストは、Bitcoinを使用する際の大きな制限です。 2017年初期の時点で、Bitcoinの取引確認時間を短くしたい場合は、取引金額で約25USDを支払う必要があります。これは、格納されている任意の1バイトあたり約1USD、またはギガバイトあたり1,000万USDです。 Amazon Glacier(長期利用可能かつ安全で耐久性のあるデータストレージ) のコストは、ギガバイトあたり0.004USD/月なので40USDあれば800年以上使えます。(実際には時間が経つにつれて安価になる可能性があります)。

Bitcoinや類似のブロックチェーンの調整や改善、スループットの向上、スケーラビリティの向上、ストレージ容量の増加、レイテンシの削減など、多くの提案があります。それらの提案は、ブロックチェーンのプロトコルにデータベースの要素を追加しています。

■5.BigchainDBによる解決策

BigchainDBは異なるアプローチをとっています。大規模なデータベースを土台とした上で、 分散化、不変性、アセットの作成と転送などのブロックチェーン特性を加えています。

グラフ:ホワイトペーパーより

現在、データベースのバックエンドとしてMongoDBまたはRethinkDBを使用できますが、高いパフォーマンス、強力な一貫性、最新のツールを備えた、信頼性の高いエンタープライズクラスのデータベースであるMongoDBを推奨します。図2と図3は、BigchainDBフェデレーション(ID認証)/クラスタのアーキテクチャを示しています。外部クライアントは、クラスタ内のBigchainDB Serverの任意のインスタンスと通信できます。各BigchainDB Serverインスタンスは、MongoDBデータベース内の1つのノードに関連付けられています。

図2:ホワイトペーパーより

BigchainDBによる分散化

重要な要件の1つは、クラスター内のすべてのノードを別の人や組織が所有して操作する必要があることです。これはコードによって処理されません。BigchainDBクラスタを監督する組織によって強制されなければならないものです。その組織では、参加者/ノードの追加や削除(ガバナンスが必要)などのルールとプロセスが必要です。民主主義/独裁政治の程度は、組織によって異なる場合があります。理想的には、ノードは多くの国、法的な管轄区域、ホスティングプロバイダーに置かれるべきであるため、1つの問題はそれらすべてに影響しません。他のブロックチェーンと同様に、有効な転送トランザクションを作成できるのは、必要な秘密鍵を持つ人だけです。ノードオペレータを含む他の誰もそれを行うことはできません。取引する権限は分散されています。 BigchainDBのロードマップには、他の分散機能を追加するための計画が示されています。

図3:ホワイトペーパーより

BigchainDBによるブロックチェーンの不変性

ブロックチェーンは強力な改ざん耐性があります。改ざんが行われても、暗号署名、ハッシュチェーン、マークルツリーの広範な使用のために、それが検出(および拒否)されます。ブロックチェーンコミュニティーでは、これらの特性はしばしば「不変性」と呼ばれます(これは通常の意味とは異なりますが、言語は生きたものであり、単語はしばしば付加的な意味で過負荷になります)。 BigchainDBはまた、暗号署名とハッシュを幅広く利用しています。たとえば、すべてのトランザクション、ブロック、投票が署名されます。また、トランザクションとブロックはハッシュによって識別されます。改ざん耐性も、データの複数のコピー(すなわち、高い複製因子)を有することによって増加する。 改ざん耐性は、セキュアなバックアップやセキュアなクラスタインフラストラクチャ(セキュアなネットワーク、セキュアなオペレーティングシステムなど)などの標準的な技術によっても増強できることに注目してください。他の改ざん防止機能を追加する計画については、BigchainDBのロードマップで概説されています。

BigchainDBによるアセットの作成と転送のためのビルトインサポート

銀行は常に資産を移転するためにデータベースを使用していますが、データベース自体には資産の概念が組み込まれていません。その機能はアプリケーション層に追加されます。 BigchainDBには、大部分のブロックチェーンと同様に、組み込みのトランザクション妥当性チェック(例えば、署名のチェック、二重支出のチェック、出庫が有効なトランザクション内でのチェックなど)が組み込まれています。

BigchainDBによるシビル耐性

一部のブロックチェーンネットワーク(Bitcoinなど)では、誰でも自分のノードをネットワークに追加することができます。そのため、誰かが非常に多くのノードを追加してネットワークを効果的に制御できるという懸念があります。これはシビル攻撃と言われます。Bitcoinでは、シビル攻撃を行なうためには法外なコストが必要なので起きにくいです。BigchainDBネットワークでは、ネットワークの背後にある統治組織がメンバーリストを管理しているため、シビル攻撃は問題ではありません。

BigchainDBとは?「ホワイトペーパー:第六章〜第九章」

第六章から第九章までは、分散型エコシステムにおける BigchainDB の立ち位置や利用方法を示し、その後結論をまとめています。

■6.分散型エコシステムにおけるBigchainDB

BigchainDBは、分散型処理/スマートコントラクト(例えば、EthereumやEnigma)、分散ファイルシステム(IPFSなど)、コミュニケーション基盤(電子メールなど)を補完するものであり、高レベルの分散コンピューティングプラットフォーム(例えば、MonaxやTendermint)に含めることができます。また、ID認証プロトコル、金融資産プロトコル(Bitcoinなど)、知的財産資産プロトコル(SPOOLなど)、グループロトコル(例えばpegged sidechains、Interledgerなど)と並用可能です。スマートコントラクトに対するスケーラビリティの向上は、完全分散型アプリケーションがBigchainDBのスケーラビリティ特性をより有効に活用するのに役立ちます。

BigchainDBはより集中化されたコンピューティングシステムでも動作します。 1つのユースケースでは、ストレージの分散化が大きなメリットをもたらします。もう1つのユースケースは、スケーラビリティニーズが既存の分散処理テクノロジの機能よりも大きい場合です。この場合、BigchainDBは最終的には完全分散システムへの架け橋となります。

図4は、BigchainDBにおける完全分散化する場合と、中央集権型サービスからの拡張を行なう場合を示しています。

図4:ホワイトペーパーより

■7.BigchainDBを試す

BigchainDBを試してみたい場合、接続するBigchainDBクラスターが必要です。 やり方の1つは、自身のローカルマシンに、シングルノードのBigchainDBクラスターをインストールすることです。“BigchainDB Server docs”のクイックスタートに、インストール手順が記載されています。もう1つのやり方は、IPDBテストネットワーク(IPDB Foundationによって管理)など、既存のBigchainDBクラスタに接続することです。

接続するBigchainDBクラスターがあれば、BigchainDB HTTP APIを使ってやり取りすることができます。BigchainDBは、WebSocket Event Stream APIも提供しています。BigchainDBトランザクションを作るのに役立つ多くのツールやライブラリ(CLI、Pythonドライバ、Javascriptトランザクションビルダ、Javaドライバ、Goドライバなど)があります。リスト1に、BigchainDB Pythonドライバを使ったPythonコードの例を示します。

グラフ:ホワイトペーパーより

4行目は、アリスという名前のユーザーの公開鍵/秘密鍵ペアを生成します。 5行目〜11行目は、new_assetという名前のPython dictを作成します。12〜15行目は、アリスのためにnew_assetに基づいてアセットを作成するための生の(符号なしの)BigchainDB CREATEトランザクションを作成します。16~18行目は、アリスの秘密鍵を使用して、そのトランザクションに署名しています。 19行目は、BigchainDBクラスタにそれを送信します。 Python driver docsには、さらに多くのサンプルコードがあります。

■8.製品化に向けて

前述のように、BigchainDBクラスタは、複数の異なる人や組織によって運用される必要があります。たとえば、単一の企業内では、各ノードを別のビジネスユニットで運用することができます。またはコンソーシアム内で、各参加組織はノードを実行できます。各オペレーターは、BigchainDBサーバーのインスタンス、MongoDBのインスタンス、MongoDB用のストレージ、および潜在的に他のコンポーネントを含む「BigchainDBノード」をインストールして実行する必要があります。 BigchainDB Production Nodesに詳細があります。

■9.結論

多くのアプリケーションでは、Bitcoinのように分散されたものを使用できますが、大量の任意のデータを短時間で、不変に、低遅延で格納することができません。 BigchainDBは、その課題に対する私たちの答えです(分散化、不変性、資産の作成と転送のための組み込みサポートを含むブロックチェーン特性を備えた大規模なデータベース)。

詳細は、BigchainDBのウェブサイト(bigchaindb.com)を参照してください。

ディスカッション

ディスカッションの中では、「初期のインターネットが非中央集権を目指して生まれたということを初めて知った」「中央集権だとどんな問題があるのか、例えば検索エンジンが中央集権だとどんな問題があるか」といった感想や議論が話題に上りました。

「ブロックチェーンの文脈におけるアセットとは何か」という質問もありました。第三章における「出生証明書、大学の成績証明書、特許出願、土地所有権取引、美術所有権取引、サプライチェーン記録、研究室報告書、政府の透明性報告書」がまさに当てはまります。

BigchainDB は、これらのアセットをブロックチェーンに保存するのではなく、ブロックチェーンの特性を持ったデータベースに保存しようというアプローチで作られたソフトウェアだと言えます。

参加者からの感想

参加いただいた皆さまからの感想を一部紹介させていただきます。

  • Ethereum にはデータがのせられないので興味を持ってきた
  • この人数だとディスカッションができてちょうどよかった
  • 事前にチャットなどで内容を話してから集まると面白いのではないか
  • どういう問題意識でその技術が生まれたのか、どういうところで使えるのかをもっと話したかった
  • ホワイトペーパーを読んだことがなかったが、どんなものかよく分かった
  • ホワイトペーパーはよく読むが、ものによって全く中身が違う。企画書もあれば技術書もある。ICOについて話してるものもあれば世界観について話してるものもある。切り口や順番も違う。いろんなものを読んでみたい
  • プラットフォーム系が取り上げられることが多いが、ICOでよく公開されるホワイトペーパーはサービス系。steem など、もっとサービス系のホワイトペーパーも読んでみたい

いただいたご意見は、今後のイベント運用に活用させていただきます。

おすすめの記事