はじめに
Symbol From NEM は、DAppsの開発プラットフォームであり、2020年後半のローンチを予定しています。
第一世代のNIS1から引き継がれたシステム構築のしやすさを、さらに拡張させています。
トランザクション処理速度向上、複数トランザクションを扱うエスクローなどの構築が容易なアグリゲートトランザクションの導入、セキュリティ周りのさらなる強化とトークンやアカウントベースの権限制御(モザイク制限・アカウント制限)、トークンへの拡張情報(メタデータ)などが強力に開発を後押しします。
既にSymbolプラットフォームでのDApps開発のニュースは世界中で起こりはじめていますが、日本においてもDApps開発の選択肢となることが期待されます。
本稿では、Symbolのアーキテクチャ構造をおさらいし、来たるべきDApps開発時代にそなえての基礎知識を整理いたします。
Symbolのアーキテクチャ
4層アーキテクチャ構造
Symbolは、セキュリティ、スケーラビリティ、開発の容易さのために4層アーキテクチャ設計を採用しています。これにより、開発者は他のレイヤーに影響を与えることなく、どのレイヤーを更新しても、トラフィックが多い時でも、ネットワークがデータの問い合わせに迅速に対応できるようになります。
図示すると以下のようになります。
ユーザが関わるClient層から深層までさかのぼってみてみましょう!
第4層:SDK
Symbolの第4層は、Symbolネットワークとインターフェースするために簡単に作成できるカスタムアプリとリソース効率の良いクライアントで構成されています。
この層は、ユーザーが標準APIコールを使って効率的にSymbolネットワークと通信することを可能にします。
表層たる第4層SDKの提供により、プログラマは慣れ親しんだプログラム言語で開発することが可能となります。
Symbol SDK の使い方を学ぶには以下のガイド付き実装サンプル を参照してください。
第3層:RESTゲートウェイ
Symbolの第3層は、RESTノードで構成されています。
これらのノードはHTTPとWebSocketを組み合わせて、Symbolブロックチェーン上で読みこみ・書きこみのアクションを実行します。
この第3層は、RESTfulなAPIコントラクトを通じて利用可能なすべての機能を公開しています。
RESTゲートウェイを図示すると以下の通りです。
1. RESTAPIの要求と返送
REST ゲートウェイは JSON API クライアントリクエストを処理します。ゲートウェイは MongoDB から読み取り、レスポンスをフォーマットして、それをクライアントに返却します。
2.Websocketのイベント返却
このコンポーネントは WebSockets でクライアントにイベントを返却する役割も果たします。
返送などの詳細説明は以下のページを参考してください。
REST-API以下で確認できます。
(ローンチ前のv0.9.5時のものです、2020/7/12時点でv0.9.6.3ということで、
見直しがあるかもしれませんのであしからず)
第2層:APIノード
Symbolの第2層は、MongoDBデータベースとAPIノードで構成されています。
APIノードの主な役割は、データを読み取り可能な形で保存することです。
MongoDBデータベースは、クライアントアプリがRESTノードを介してブロックチェーンのデータに素早くアクセスできるようにします。
第2層は第3層のRESTやCLIからの処理をさばく層になります。
なおCLIは以下に記載されています。
APIノードを図示すると以下のようになります。
動きは以下を参考にするといいでしょう。
1.MongoDBへの読み取り可能形式での保存
APIノードの主な役割は、データを MongoDB に読み取り可能な形式で保存することです。
データを MongoDB に直接書き込む代わりに、ファイルベースのキューをスプールし MongoDB を更新。同時にブローカーサービスは ZMQ を使用してRESTゲートウェイ経由でクライアントに変更を通知します。
2.アグリゲートボンドトランザクション
API ノードは アグリゲートボンドトランザクション の連署名を集める役割も果たし、完成したときにだけ処理され通知します。
単発のRESTOpenAPIからの命令を貯め込み、一連の処理としてまとめて反映する役割を担う、Symbolがよりアプリケーションとして動くための層とも言えます。
第1層:ピアノード
第1層は、ピアツーピア取引のためのコアとなるblockchainサーバーです。
ノードのネットワークがデータを検証すると、変更はネットワーク全体に伝播し、分散型台帳に保存されます。Symbolのコードは一から書かれた独自のものです。
1.ブロックチェーンとしての基盤
Peer ノードは、ブロックチェーンのバックボーンを構成します。
ノードの役割は トランザクション と ブロック を検証すること、コンセンサスアルゴリズムの実行、新しいブロックの生成、ネットワークへの変更の伝播です。
2.APIノードからの新規トランザクションのP2Pネットワークへのプッシュ
API ノードからのトランザクションを P2P ネットワークにプッシュし、ブロックが処理したうえで保存します。
より詳細な話は以下を参考にするといいでしょう。
おわりに
Symbolの4層アーキテクチャ構造を知ると、本来サービス側のノード開発にて実装すべきものが、あらかじめ整備されていることがわかります。
だからこそSymbolは、数あるブロックチェーンプラットフォームの中でも、DApps開発によったプラットフォームといえるかと思います。
開発者はブロックチェーンの機能の構築に頭悩ませることなく、ビジネスロジックの実装検討に注力することができる点、開発効率が非常に高まることが期待されます。