メインコンテンツへスキップ

ABT Node:分散型アプリケーション開発におけるパラダイムシフト

冒志鸿(ArcBlock 首席执行官、首席架构师)
ABT NodeArcBlockBlocklet ServerDeveloper

著者: Robert Mao(ArcBlock CEO、チーフアーキテクト)

2020年5月20日、ArcBlockはABT Nodeの「テクニカルプレビュー版」(Technical Preview)をリリースしました。

昨年5月20日、私たちは世界初の分散型アイデンティティ・デジタルウォレットであるABT Walletのリリースに成功しました。本日、奇しくも同じ日に、私たちはABT Nodeをリリースします。今回はテクニカルプレビュー版ではありますが、ABT Node はArcBlockが過去にリリースしてきたABT Blockchain Node(チェーンノード)、ArcBlock Blockchain Framework(旧名称:Forge Framework)、そしてBlocklet などの基盤の上に構築されているため、すでにかなりの完成度に達しています。開発者にとっては、その上で正常に開発を行うことができ、機能が全面的でAPIも安定したソフトウェアプラットフォームとなっています。テクニカルプレビュー版は現在、本番環境での使用は推奨されていません(ただし、私たち自身のプラットフォームはこのプレビュー版ノード上でデプロイを開始しています)。また、課金メカニズムはまだ有効化されておらず、現在はすべての機能が無料で使用できます。このバージョンを通じてBlockletの有料化やスマートコントラクトのレベニューシェア(収益分配)を提供することもまだできません。

初心を忘れず、既定のロードマップに沿って一歩ずつ前進

ABT Nodeのリリースは、2017年から設計を開始したArcBlockシステムアーキテクチャのパズルが、数年の絶え間ない努力を経て、初めて完全な姿で皆様の前に現れたことを意味します。

市場の喧騒とは一線を画し、ArcBlockは2017年の創設時から、テクニカルホワイトペーパーを通じて、私たちが思い描くブロックチェーンと分散型アプリケーション(DApps)のブループリントを完全に提示してきました。今日、3年前に執筆されたArcBlockテクニカルホワイトペーパーを改めて振り返ると、私たちの設計の先見性と市場判断の正確さを再確認することができます。

ArcBlockプラットフォームの開発の過程で、一方で私たちのビジョンと当初の計画の正しさが証明され続けてきました。他方で、業界から得た示唆に富む価値ある新しい要素を取り入れ、プロジェクト初期の業界認識や製品計画の不足を補うために、部分的な調整と向上も絶えず行ってきました。ブロックチェーン技術の革新性とソフトウェアエンジニアリングの複雑さゆえに、私たちが歩んできた道は決して直線的な右肩上がりではありませんでしたが、技術的な試行錯誤、製品の迅速なイテレーション、そして自信を深めながら進んできた「螺旋状の進化」に満ちた素晴らしいプロセスでした。

「オープンチェーンアクセスプロトコル(OCAP)」、「クラウドノード」、「Blocklet」、「分散型サブスクリプションゲートウェイ」は、ArcBlockホワイトペーパーにおける最も重要かつ注目すべき概念と設計であり、その実現の担い手こそが「ABT Node」です。これまで次々とリリースしてきた各ツールや製品の機能が「点」であったとするならば、今日リリースされた ABT Node は、これらの点をつなぎ合わせて「線」や「面」にするものです。ArcBlockの技術発展に注目してくださっている皆様には、2017年版のホワイトペーパーと対照しながら本稿を読み、私たちの技術的進歩と実施ステップを体感していただくことをお勧めします。細心の注意を払えば、ホワイトペーパーの当初の計画と比較して、以下の重要なコンポーネントが追加・実現されていることに気づくでしょう。

ABT Nodeとは何か? 従来の様々なブロックチェーンノードと何が違うのか?

2020年、ブロックチェーンの発展は2番目の10年に入りました。ArcBlockテクニカルホワイトペーパーは、ブロックチェーン技術が過去11年間で1.0、2.0から3.0へと絶えず進歩してきた過程を総括しました。私たちが単に「3.0」という空虚なマーケティングスローガンを掲げているだけだと誤解する人もいるかもしれませんが、私たちは一貫して真剣です。真剣に考え、真剣に計画し、真剣に実行してきました。ABT Nodeと業界で一般的なブロックチェーンノードソフトウェアは何が違うのでしょうか? 実は、私たちが作成し広く普及しているこの画像が、その核心を突いています。

アプリケーションを支えることを主眼としたブロックチェーン3.0について、私たちはこの図で備えるべき基本的な特徴をまとめました:

  • クラウドノード(クラウドコンピューティングとの結合)
  • オープンチェーンアクセス(マルチチェーンアーキテクチャへの対応)
  • Blocklet(私たちが定義した、チェーンノード上で動作するサーバーレスアプリケーションプロトコル)
  • 拡張・進化能力(ブロックチェーンノードの処理能力が絶えず進化できること)

今日リリースされたABT Nodeは、まさにこれらの特徴を具現化したものです。

私たちは2019年9月に上海で開催された「上海の頂、未来を創る」イベントでBlockletのテクニカルプレビュー版を初めて公開し、Blocklet Frameworkを使用して自社のアプリケーションを構築してきました。ABT Nodeがリリースされる前、Blockletは単なるアプリケーション開発フレームワークに過ぎず、そのデプロイと実行には個別のサーバーが必要で、従来のアプリケーションサービスとの十分な差異は見えませんでした。しかし、ABT Nodeがリリースされた今、Blockletの優位性は全面的に発揮されることになります。

ABT Nodeとコンテナ(Container)、仮想マシン(Virtual Machine)の違いと関係は?

ABT NodeとBlockletは、ホワイトペーパーでも明確に定義した通り、サーバーレス(Serverless)なマイクロサービス(Micro-service)アーキテクチャです。ABT Node上でアプリケーションを実行できるのがBlockletです。Blockletは私たちが設計したアプリケーションコンポーネントプロトコルであり、様々な言語で実装することができ、異なる言語やフレームワークで実装されたBlockletを組み合わせてオーケストレーションすることも可能です。例えば、ABT Node自体はNode.jsで実装されており、私たちが提供するBlockletの多くもNode.jsを採用していますが、ブロックチェーンフレームワークにはErlang/Elixirを採用しています。

ABT Nodeは現在流行しているコンテナ(Container)技術に似ているように見えますが、ABT Nodeの設計は一般的なコンテナ技術(Dockerなど)とは大きく異なります。簡単に言えば、コンテナ技術は汎用性を重視しており、例えばDockerはコンテナ内での実行を考慮していない多くのアプリケーションを収容できます。一方、Blockletには厳格なプロトコルがあり、各BlockletはABT Node内で動作するように設計されています。特筆すべきは、ABT Node用に設計されていないアプリケーションであっても、非常に簡単にBlockletへと拡張できる点です。

ABT Node自体とコンテナや仮想マシンの間には矛盾はなく、相補的な関係にあります。ABT Nodeは仮想マシン上でも動作しますし、Dockerコンテナ内でも動作します。私たちは、ABT NodeがDockerやKubernetesでオーケストレーションされるサービスに非常に適するように設計しました。例えばAWS上では、ABT NodeはEC2インスタンスとしてEC2仮想マシン上で非常に簡単に動作させることができますし、ECSやEKS上でDockerコンテナとして動作させることも可能です。また、AWS Fargateを使用してデプロイすることも容易です。どのような実行環境を選択するかは、完全にユーザー自身のニーズに基づいて決定されます。ABT Node自体はクラウドに依存しない(Cloud agnostic)設計になっており、様々なクラウドサービス上で動作させることも、ユーザーが自前で用意したサーバーやデバイス上で動作させることもできます。ABT Nodeの設計はモノのインターネット(IoT)のシナリオにも適応しており、開発者はRaspberry Piのような組み込みデバイス上でデプロイすることができ、ブロックチェーンやDappsの活用に広大な可能性を切り開きます。

ArcBlockのブロックチェーンとABT Nodeはどのような関係ですか? 既存のブロックチェーンアプリケーションにどのような影響を与えますか?

ArcBlockは分散型アプリケーション(Dapps)向けのプラットフォームであり、ブロックチェーンのサポートは私たちのプラットフォームの重要な一部ではありますが、すべてではありません。ABT Nodeはブロックチェーンのノードになることができますが、ブロックチェーンノードとしてのみ使用されるわけではありません。ABT NodeはブロックチェーンベースのDappsアーキテクチャを非常にシンプルかつ明確にし、Dappsの従来のWebコンポーネントへの依存を取り除き、既存のブロックチェーンアプリケーションのソフトウェア開発パラダイムを変えます。

私たちは昨年3月にArcBlockブロックチェーンフレームワークをリリースし、ワンクリックでのチェーン作成や複数のチェーンをネットワーク化することを可能にしました。これらのブロックチェーンを構成する基本コンポーネントはチェーンノードです。昨年、ABT Nodeがまだ発表されていなかった時、私たちは「チェーンノード」のソフトウェアとチェーンを構築するためのツールForge CLIをリリースしました(ForgeフレームワークとCLIツールは、ABT Nodeの正式リリース後に完全に「引退」し、ABT Nodeへと移行されます。その際、100%の互換性を維持します)。現在、これらの「チェーンノード」ソフトウェアと構築ツールはABT Node上のBlockletとなっており、私たちはこれを「ブロックチェーンマネージャー」と呼んでいます。

ブロックチェーンマネージャーを通じて、開発者はより便利にブロックチェーンを構築、管理、閲覧できるようになりました。これは昨年リリースされたForge CLIよりもはるかに利便性が向上しています。ABT Nodeを採用することで、ブロックチェーンを作成・デプロイするハードルはさらに大幅に低下します。ABT Nodeを使用してブロックチェーンを作成・管理すると、それがいかにシンプルで、容易で、迅速であるかに驚くことでしょう。私たちの目標はまさにそこにあります。皆様にはアプリケーションの開発やビジネスの運営に全精力を注いでいただきたいと考えており、これらの基礎的な事項は私たちが自動化してサポートします。

ABT Nodeがブロックチェーンノードであるかどうかは、そのノード上でブロックチェーンマネージャーを通じてブロックチェーンノードとして構成されているかどうかに依存します。特筆すべきは、ノードのハードウェア環境が許す限り、1つのABT Node上で複数のブロックチェーンを実行できる点です。同じABT Node上で複数のチェーンを同時に動作させることが完全に可能です。実際、開発やテストの環境では、開発者が自身の開発ノード上で複数のチェーンを実行することを推奨しています。これはテストやクロスチェーン開発などに非常に役立ちます。ABT Nodeは、ブロックチェーンのフルノードとして構成することも、ライトノードとして構成することも、あるいはあるチェーンのフルノードでありながら別のチェーンのライトノードであるといった構成も可能です。

ABT NodeとDID技術にはどのような関係がありますか?

ArcBlockは、DID(分散型アイデンティティ)技術が分散型アプリケーションの重要な基盤であると考えており、DIDのサポートはArcBlockの全製品体系を貫いています。ArcBlockが推進してきたDID技術プロトコルとその実装はABT Nodeの基盤であり、ABT Nodeの設計と実装の随所に一貫して取り入れられています。ABT Node自体のユーザー管理、権限付与、認証は完全にDIDとVerifiable Credentials(可検証証明書、VC)技術に基づいており、ABT Walletと有機的に結合されています。

自らDID技術を使用するだけでなく、ABT Node自体もDIDプロトコルのサポートとサービスを提供します。各ABT Node上で動作するアプリケーションはDIDのサービスエンドポイント(Service Endpoint)になり得ます。各ABT Nodeは自身のサービスのためにDID Resolverのインスタンスを提供し、アプリケーション内でのDIDの実装、デプロイ、相互運用をこれまでにないほど容易にします。ArcBlockのブロックチェーン自体もDID技術を使用しているため、ABT Node内で動作するブロックチェーンはDIDを通じて完璧に統合できることは言うまでもありません。また、Blockletプロトコル自体もDIDおよびVCと密接に関連しています。

ABT NodeはDapps開発にどのような新しい意義をもたらしますか?

ABT Nodeが分散型アプリケーション開発にもたらすものは、ソフトウェア開発におけるパラダイムシフトであり、画期的な意義を持っています。これについては、ソフトウェア開発のパラダイムが過去数十年間でどのように変遷してきたかを振り返りながら、その意義をより明確にするための別の記事を執筆する予定です。

ABT NodeはBlockletの実行環境であり、広義にはユーザーデータの実行ロジックプロセッサ、狭義にはユーザーフレンドリーで操作しやすいマイクロサービスOSと捉えることができます。ユーザーはノード上でBlockletを簡単にロードまたはアンロードできます。これらのBlockletはユーザーにとってレゴブロックのようなもので、基本的な選択をするだけで利用できます。これらのアプリケーションは、一度ユーザーによってインストールされるとユーザーのものとなり、他のサービスに依存することなく完全に分散化されたアプリケーションとなります。Blockletはブロックチェーンと相互運用できるだけでなく、データベースやAPIなど、ブロックチェーン以外のサービスとも相互運用できます。さらに、Blockletプロトコルは実装言語、フレームワーク、ユーザーインターフェースを制限しないため、非常に高い柔軟性と幅広い活用空間を持っています。

上の図は、私たちがテクニカルホワイトペーパーで挙げたBlockletの典型的な応用シナリオのいくつかです。ABT Nodeがもたらすソフトウェア開発パラダイムの変遷により、ほとんどのソフトウェアはスケーリング(Scale)が非常に容易になり、開発やデプロイもより簡単になります。開発・運営者はマルチテナント方式のサービスのために高額な運営コストを支払う必要がなくなり、ユーザーは自分のデータを全面的にコントロールし、プライバシーとデータの安全を確保できるようになります。これらは、アプリケーションソフトウェア市場全体、ひいてはインターネットアプリケーションサービスに深遠な意義をもたらすでしょう。

このページに関わるもの

製品

  • Blocklet Server superseded

    blocklet をサブプロセスとしてホストしていたサーバー。その作業は ARC で続いており、サブプロセスによるホスティングという方式は引き継がれません。