前回までは、BBc-1のアプリケーションプログラミングについて解説しました。今回は、BBc-1の技術的な観点からの今後の展望を述べます。
BBc-1の設計思想をもう一度示します。BBc-1の目的は、次の2点をシンプルに実現することです。
- 情報(デジタル資産)そのものや、その取引に関して合意した情報を誰にも(当事者にも)改ざんされないような形で保存したい
- 保存された情報について、改ざんされていないという事実を参加者なら誰でも確認できるようにしたい
この2点と直接の関係が薄いものはBBc-1のリファレンス実装には含まれませんので、アプリケーションが必要になります。アプリケーションは、トランザクションに意味付けし、解釈し、他のユーザとやり取りできるようにすることによって、人々に便益を提供します。
このようなBBc-1ですが、大きく5つの観点で発展させていければと考えています。
アプリケーション開発を促進させるためのライブラリ充実化
BBc-1に限らず、ブロックチェーンを利用したアプリケーションにはいくつかの期待されている適用分野があります。例えば、「お金」(トークン)はその代表例です。BBc-1を利用してトークンアプリケーションを実現する方法は、ビットコインのようにUTXOを用いる方法もあれば、既存のポイントサービス(非ブロックチェーン)のデータベースを少し拡張する方法までさまざまです。どのような方法を取るかは要件次第ですが、必要な機能をパターン化できるはずです。パターン化できるものは、共通機能としてライブラリ化することで、開発難易度を低減し開発速度を向上させることができます。以下に例を挙げておきます。
表1 機能のパターン化が見込めるブロックチェーンアプリケーションの例
アプリケーション | 機能 |
トークン | - トークンの発行、移転、消却、廃止
- トークン残高確認
- ユーザ管理
|
トレーサビリティ | |
存在証明 | |
アプリケーション拡張による柔軟性の向上
他のほとんどのブロックチェーンプラットフォームに搭載されるコンセンサスアルゴリズムをBBc-1は搭載していません。その理由は、不要であることが多いと考えたためです。しかし、BBc-1をパブリックなシステムとして運用し、多数のステークホルダが同時に合意しなければシステム全体がストップしてしまうようなサービスを実現したい場合には、コンセンサスアルゴリズムを動作させる必要があります。PBFTなどさまざまなアルゴリズムが提案されていますので、アルゴリズムをライブラリとして実装し、アプリケーションを拡張することになります。
BBc-1のアプリケーションプログラムは、他のブロックチェーンにおけるスマートコントラクトに相当します。BBc-1では、アプリケーションプログラムはどこで動作しても構いません。
例えばEthereumでスマートコントラクトをブロックチェーンにデプロイするように、BBc-1システムにアプリケーションプログラムを自由にデプロイできるようにしたくなることも考えられます。現時点のBBc-1リファレンス実装ではそのような機能には対応していませんが、動的にプログラムを読み込んで実行するようにすれば実現可能です。
また、Pythonスクリプトをアセットとしてトランザクションに登録すれば、参加者がPythonスクリプトを入手し、改ざんされていないことを確認して実行できます。このような仕組みもライブラリとして実装して、アプリケーションを拡張することになります。
BBc-1リファレンス実装では、bbc_core.py(コア機能を提供するプログラム)はトランザクションの中身を意識しません。したがって、上述のようなトランザクションの中身に依存する機能は、ライブラリとしてアプリケーションを拡張する方法で実現することになります。
デザインパターンの確立
BBc-1リファレンス実装を用いる場合、bbc_core.pyが動作するサーバを用意して、そこでbbc_core.pyプロセスを動作させることになります。しかしさまざまなサービス、ビジネスを実現するためには、さらに認証の仕組み、ユーザ管理、ダッシュボードなどのUI、などなど多種多様な機能が必要になります。このような機能は一般的になっているものが多く、すでに多くのライブラリやツールが揃っています。そのため、BBc-1の枠組みでこれらの機能を提供することは、現時点では考えられていません。逆にいえば、如何に外部の機能群とBBc-1の機能を連携させるかについて、デザインパターンが必要だと考えています。
極論すると、bbclibで定義されるトランザクションのデータ構造を満たす情報を取り扱うものであれば、BBc-1だといえます。そう考えれば、既存のシステムにbbclibを組み込んで、適切にトランザクションデータを管理できるようにするだけで、ブロックチェーン的な要素を加えることもできるようになると考えられます。例えば、AWS LambdaとDynamoDBで実装されているサービスにbbclibを組み込む、などです。そのようなユースケースを想定して、bbclibのGo言語実装やJavascript実装が公開されています。
このように、bbc_core.pyをベースにシステムを構成していくパターンや、既存システムにBBc-1の要素を付加するパターンなど、それぞれのシステムの目的や運用に適したデザインパターンを具体化できれば、BBc-1の使い勝手が劇的に向上しそうです。
管理ツールの拡張
bbc_core.pyの動作状況、隣接ノードとの接続状況など、システムの状況をモニタするツールが必要になるかもしれません。これらの情報を取得するAPIは実装されているので、後はそれらの情報を収集し、統合して可視化したり、ノードを制御したりするようなダッシュボードが、そのようなツールのイメージでしょうか。
また、トランザクションを可視化するツールも便利です。トランザクション同士がどのような関係性を持つか、またアセットにはどのような情報が含まれているかなど、可視化することで理解も進みますし、トラブルシュートも容易になります。
他のブロックチェーンとの連携
現在、非常に多くのブロックチェーンプラットフォームが開発され、利用されています。この流れはこれからも続くでしょう。このような状況に対応すべく、ブロックチェーン間を接続するクロスチェーン技術の研究開発も進んでいます。BBc-1についてもこの取り組みを無視することはできないでしょう。幸い、BBc-1自体がシンプルであるため、他のチェーンとの接続は比較的容易だと考えられます。もしかするとBBc-1自体をクロスチェーンまたはinter ledgerの仕組みとして発展させることもできるかもしれません。
まとめ
第3回の記事からBBc-1の技術について紹介させていただき、最後は今後の展望(というよりもこうなったらよいなという願望かもしれません)を述べさせていただきました。
BBc-1は純国産のオープンソースプラットフォームです。実装としてはまだまだ発展の余地があり、さまざまな方向に進化する可能性を秘めています。この特集が、少しでもBBc-1に興味をもっていただくきっかけになればと願っています。またオープンソースの開発に参加してみたいと思った方は、是非githubリポジトリを覗いていただき、何かご協力をいただければ幸いです。
私の担当は今回で終了です。長期間に渡りお付き合いいただきありがとうございました。
この連載のまとめは、斉藤賢爾氏にもう一度バトンタッチいたします。