skip to Main Content
  • 更新日: 2020年9月1日

本記事では、ブロックチェーンとデータベースの両方の性質を備えた分散型ブロックチェーンデータベース「BigchainDB」について解説します。

 

BigchainDBとは

Bitcoinが誕生してから10年以上がたち、Bitcoinをはじめとする多くの仮想通貨ネットワークを支えるブロックチェーンの検証や導入が各業界で進んでいることは、本ブログでもお伝えしてきました。ブロックチェーンには、改ざんが非常に難しく、複数ノードからなるネットワークは堅牢であるというメリットがある一方、データの保存先としては癖があり、処理スピードの面でも課題を抱えているものも少なくありません。

これらの課題を解決するべく、ドイツの首都ベルリンに拠点を置くBigchainDB GmbHは、データベースのように扱えるブロックチェーンベースの分散型データベースBigchainDBを開発しました。BigchainDBの歴史は、BigchainDB開発のきっかけとなった前身のAscribeも入れると2014年から、BigchainDB自体の開発も2016年からと長く、本ブログでもBigchainDBの初期の取り組みを2017年に紹介しました。

2018年には、BigchainDB GmbHがデータマーケットプレイスとそのプロトコルOcean Protocolの開発に専念することになり、IPDB FoundationがBigchainDBのソフトウェアやネットワークの管理を引き継ぎました。IPDB Foundationはブロックチェーン技術と分散型ガバナンスの研究開発を促進する非営利団体で、BigchainDB GmbH同様ベルリンに拠点を置いています。IPDB Foundationのメンバーとしては、BigchainDB GmbHのほか、ドイツテレコム、IPFS、Internet Archive、Tendermintといった企業や組織の名前が挙がっています。

BigchainDB v1からv2へのアップデートでは、書き込みを行うノードやデータベース自体が分散化され、合意形成にはブロックチェーンベースの分散型合意形成エンジンTendermintが採用されるなど、多くの重要な改善が加えられました。

 

BigchainDBの仕組み

ネットワークの全体像

下の図のように、BigchainDBのネットワークは複数のノードから成り立っています。それぞれのノードはローカルに独立したmongo DBを持ち、ネットワークが扱うデータの完全なコピーを持っています。ノード間のコミュニケーションは合意形成エンジンTendermintを介して行います。
※  Tendermintについて詳しくは本ブログの記事「ブロックチェーンアプリケーションエンジンTendermint」を参考にしてください。

BigchainDBは、Tendermintを利用することで、ノードの三分の一までの故障であればネットワーク全体が正常に機能し続け、ビザンチン将軍問題への耐性を実現しています。スケーラビリティの面では、Tendermintの処理能力が5大陸7データセンターの64ノードで秒間数千トランザクション、トランザクション確定までの時間が1、2秒であることを引き合いに出し、Bigchain DBにも同程度の処理能力を期待できるだろうとしています。さらに、Tendermintは、BigchainDBのネットワーク同士を相互接続するインターフェイスとして機能する可能性もあります。

また、BigchainDBのネットワークでは、誰もがノードを運用できるわけではなく、ネットワークの主体がノードのリストを管理するため、悪意のある人や組織がたくさんのノードを使ってネットワークを攻撃するような事態は起きないとされています。

画像: 4つのノードからなるBigchainDBのネットワーク(BigchainDB 2.0 ホワイトペーパーより)

データ構造

各ノードが持つmongo DBはNoSQLという種類のデータベースで、MySQLに代表されるリレーショナルデータベースのように予めスキーマが定義されたテーブルにデータを書き込むのではなく、ドキュメントと呼ばれる形で柔軟にデータを扱います。BigchainDBで扱うデータは「アセット」と呼ばれ、ユーザーはアセットを「create」(作成)し、他のユーザーにアセットを「transfer」(転送)できます。ここにブロックチェーンで取り扱われることの多い所有権の宣言とその移転の発想が垣間見えます。BigchainDBではアセットとして、自転車のような物理的なものの所有権だけでなく、トークンや文書、ステートマシンまで、あらゆるデータを扱えます。

リクエスト処理

BigchainDBのネットワークに対して処理を要求するには、BigchainDB HTTP APIを利用します。リクエストはネットワークのどのノードに対してでも行えます。アセットの作成および移転処理はどのノードも共通して行いますが、ローカルデータベースのインデックスの作り方、ローカルデータベースから提供するデータの種類や方法は各ノードで自由に決めることができます。

ノードは書き込みリクエストを受け取ると、ノード内のBigchainDBサーバーが有効なリクエストかどうかを検証します。有効なリクエストであればJSON形式に情報をまとめ、トランザクションとしてノード内のTendermintに渡します(無効なリクエストに対してはリクエスト元に400エラーを戻します)。トランザクションはローカルのTendermintのメモリプールに蓄えられ、ネットワーク内のノードがTendermintプロトコルに基づいて合意形成にあたります。BigchainDBサーバーはTendermintからCommitメッセージを受け取って、はじめてデータをmongo DBに書き込みます。

BigchainDBでのトランザクション処理の詳細など、詳しくはBigchainDB 2.0のホワイトペーパーが参考になります。

BigchainDB 2.0 ホワイトペーパー

 

BigchainDBの用途

BigchainDB 2.0のホワイトペーパーでは、サプライチェーン、所有権の管理、IoT、監査記録などBigchainDBのさまざまな用途が紹介されています。古いバージョンのBigchainDBは、音楽のストリーミング配信サービスResonateで利用され、Toyot Research Instituteやリクルートテクノロジーズでも実験的に利用が検討されてきました。Bigchain DB2.0については、有名企業でのユースケースはまだ出てきていませんが、IPDB Foundationのパブリックネットワークで利用されています。

BigchainDBはあらゆるアセットを扱えるブロックチェーンベースの分散型データベースで、改ざんが極度に難しいといったブロックチェーンならではの性質を期待しつつ、従来のデータベースのような扱いやすさとスケーラビリティも兼ね備えています。ノードのリストをネットワークの運用者が管理したいといった場合にもBigchain DBは有効です。

BigchainDBを利用するといっても、システム全体が完全に分散型である必要はありません。BigchainDBのホワイトペーパーでは、BigchainDBをどのようにシステムに組み込めるか、分散化の度合いに応じて図解しています。完全に分散化されたシステムでデータベースにBigchainDBを組み込む以外にも、通常のウェブアプリケーションのデータベース部分のみBigchainDBで分散化することもできます。

画像: BigchainDBの統合例(BigchainDB 2.0 ホワイトペーパーより)

BigchainDBのネットワーク構築や利用方法についてはBigchainDBのウェブサイトにチュートリアルがあります。

Get started. Explore drivers, tools & documentation – BigchainDB

 

BigchainDBの今後

BigchainDBについて明確なロードマップは公開されていません。BigchainDBやIPDBFoundationはブログやソーシャルメディアでのコミュニケーションはあまり活発ではありませんが、GitHubのBigchainDBのリポジトリではコードがアップデートされ、BigchainDBのウェブサイトではチュートリアルが公開されていっているので、プロジェクト自体はアクティブといえるでしょう。

 

おわりに

ウェブアプリケーションを構築する際には、アプリケーションサーバーやデータベースサーバーを選んで、アプリケーションを書くための言語やフレームワークを決めて・・・とシステムの構成を決めていきます。ウェブアプリケーションの普及期にはデータベースとしてはMySQL、Postgresといった古典的なリレーショナルデータベースが用いられましたが、2010年代に入ると、リレーショナルデータベースよりもデータ構造が柔軟なNoSQLと呼ばれるタイプのデータベースも利用されるようになりました。システムの分散化が進んでいく中で、2020年代にはデータの保存先として、BigchainDBの名前が上がるようになるかもしれません。

BigchainDBの今後と合わせて、分散型システムを構築する際の標準がどのようにできあがっていくのかにも注目したいところです。

 

 

Gaiax技術マネージャ。研究開発チーム「さきがけ」リーダー。新たな事業のシーズ探しを牽引。2015年11月『イーサリアム(Ethereum)』 デベロッパーカンファレンス in ロンドンに参加しブロックチェーンの持つ可能性に魅入られる。以降ブロックチェーン分野について集中的に取り組む。

BigcahinDBTendermint

ブロックチェーンを学び、新しいことをサービスを作りたい人が集まるコミュニティーを運営しています。
・これから実現したいサービスやプロダクトにブロックチェーンを使いたい
・ブロックチェーンが自分の課題を解決する糸口としたい
・ブロックチェーンの技術を学んでプロダクト開発をしたい

興味のある方は詳細をご覧ください!

Back To Top
Search