前回までは,BBc-1のアプリケーションプログラミングについて解説しました。今回は,BBc-1の技術的な観点からの今後の展望を述べます。BBc-1の設計思想をもう一度示します。BBc-1の目的は,次の2点をシンプルに実現することです。情報(デジタル資産)そのものや,その取引に関して合意した情報を誰にも(当事者にも)改ざんされないような形で保存したい保存された情報について,改ざんされていないという事実を参加者なら誰でも確認できるようにしたいこの2点と直接の関係が薄いものはBBc-1のリファレンス実装には含まれませんので,アプリケーションが必要になります。アプリケーションは,トランザクションに意味付けし,解釈し,他のユーザとやり取りできるようにすることによって,人々に便益を提供します。このようなBBc-1ですが,大きく5つの観点で発展させていければと考えています。アプリケーション開発を促進させるためのライブラリ充実化BBc-1に限らず,ブロックチェーンを利用したアプリケーションにはいくつかの期待されている適用分野があります。,「⁠お金」(⁠トークン)はその代表例です。BBc-1を利用してトークンアプリケーションを実現する方法は,ビットコインのようにUTXOを用いる方法もあれば,既存のポイントサービス(非ブロックチェーン)のデータベースを少し拡張する方法までさまざまです。どのような方法を取るかは要件次第ですが,必要な機能をパターン化できるはずです。パターン化できるものは,共通機能としてライブラリ化することで,開発難易度を低減し開発速度を向上させることができます。以下に例を挙げておきます。他のほとんどのブロックチェーンプラットフォームに搭載されるコンセンサスアルゴリズムを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を組み込んで,適切にトランザクションデータを管理できるようにするだけで,ブロックチェーン的な要素を加えることもできるようになると考えられます。LambdaとDynamoDBで実装されているサービスにbbclibを組み込む,などです。そのようなユースケースを想定して,bbclibのGo言語実装やJavascript実装が公開されています。このように,bbc_core.pyをベースにシステムを構成していくパターンや,既存システムにBBc-1の要素を付加するパターンなど,それぞれのシステムの目的や運用に適したデザインパターンを具体化できれば,BBc-1の使い勝手が劇的に向上しそうです。管理ツールの拡張bbc_core.pyの動作状況,隣接ノードとの接続状況など,システムの状況をモニタするツールが必要になるかもしれません。これらの情報を取得するAPIは実装されているので,後はそれらの情報を収集し,統合して可視化したり,ノードを制御したりするようなダッシュボードが,そのようなツールのイメージでしょうか。トランザクションを可視化するツールも便利です。トランザクション同士がどのような関係性を持つか,またアセットにはどのような情報が含まれているかなど,可視化することで理解も進みますし,トラブルシュートも容易になります。現在,非常に多くのブロックチェーンプラットフォームが開発され,利用されています。この流れはこれからも続くでしょう。このような状況に対応すべく,ブロックチェーン間を接続するクロスチェーン技術の研究開発も進んでいます。BBc-1についてもこの取り組みを無視することはできないでしょう。BBc-1自体がシンプルであるため,他のチェーンとの接続は比較的容易だと考えられます。ledgerの仕組みとして発展させることもできるかもしれません。まとめ第3回の記事からBBc-1の技術について紹介させていただき,最後は今後の展望(というよりもこうなったらよいなという願望かもしれません)を述べさせていただきました。BBc-1は純国産のオープンソースプラットフォームです。実装としてはまだまだ発展の余地があり,さまざまな方向に進化する可能性を秘めています。この特集が,少しでもBBc-1に興味をもっていただくきっかけになればと願っています。オープンソースの開発に参加してみたいと思った方は,是非githubリポジトリを覗いていただき,何かご協力をいただければ幸いです。私の担当は今回で終了です。長期間に渡りお付き合いいただきありがとうございました。この連載のまとめは,斉藤賢爾氏にもう一度バトンタッチいたします。研究所での研究,企画部門でのプロジェクトマネジメントなどを経て,独立。One(BBc-1)のメイン開発者になっていたが,あくまで趣味の位置づけ。本業では,技術者・研究者も報われる会社を目指す。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。