IBAXネットワーク
このセクションでは、IBAXの使用方法について説明します。
IBAXにおけるアプリケーションの開発、利用、管理に興味があるのであれば、全く理解する必要はないかもしれません。
IBAXでは、ブロックチェーンとブロックチェーン・ネットワークは、ECOLIBメンバー、管理者、アプリケーション開発者からは隠されています。IBAXでは、すべてのユーザーグループに対してRESTful API を提供しており、ブロックチェーンの global state への改ざん防止と分散アクセスを提供します。
アプリケーション開発者
技術用語では、グローバルステートはデータのセットであり、IBAXのデータベースを介して実装されています。アプリケーション開発者の視点から見ると、アプリケーションはテーブルの問い合わせ、挿入、更新によってデータベースと相互作用する。
IBAXでは、さまざまなコントラクトを実装することで、ブロックチェーンにトランザクションが書き込まれます。これらのトランザクションは、ブロックチェーンネットワークノードが実装するコントラクトコードを呼び出し、それに応じてグローバルステート(データベース)を更新する。
アプリケーション開発者にとっては、コントラクトが実装されるとデータベースにデータが書き込まれる機能である。ページはスクリプトのようなもので、ページコードはページテンプレート関数のセットであり、これらの関数の一部はページ要素を表示し、他のデータはデータベースからもたらされます。アプリケーション開発者は、トランザクション、ブロック生成、コンセンサス・アルゴリズムが何であるかを理解する必要はなく、ただそれを使うだけでよい。
ECOLIBメンバー
開発者が書いたアプリケーションは、ECOLIBと呼ばれる環境下で動作します。アプリケーションは通常、特定の目的を持ち、他のいくつかのアプリケーションと一緒に様々なタスクをこなします。
ECOLIB内のアプリケーションにアクセスするには、ECOLIBのメンバーになる必要があり、同時に複数の異なるECOLIBのメンバーになることができる。
ECOLIBのメンバーは、一般的なWebアプリケーションでフォームに記入したり、ボタンをクリックしたり、ページをナビゲートするように、アプリケーションのページからデータベースを見たり、変更したりすることができます。
アプリケーションは、ECOLIBアプリケーションとプラットフォーム・アプリケーションに分類されます。
ECOLIBアプリケーション
ECOLIBアプリケーションは、あるECOLIB独自の機能やビジネスプロセスを実装したもので、そのECOLIBでしか利用できない。
プラットフォームアプリケーション
プラットフォームアプリケーションは、すべてのECOLIBに適用可能です。どんなアプリケーションでもプラットフォーム・アプリケーションとして開発することができる。IBAXの開発者は、投票、通知、ECOLIBメンバーの役割管理など、ECOLIBガバナンスの中核機能をサポートするプラットフォーム・アプリケーションを提供する。
基礎となるモデル
レイヤーの定義
IBAXはいくつかのレイヤーから構成されています:
ユーザーインタラクションレイヤー
ECOLIBメンバーは、ページとページ要素を通じてアプリケーションと対話する。
アプリケーション層
アプリケーション開発者は、契約コードとページコードを通じてグローバルな状態(データテーブル)と対話する。
グローバルステート層
分散台帳(ブロックチェーン)に書き込まれた操作に基づき、グローバルステート(データベース)の更新・同期を行う。
ブロックチェーンレイヤー
分散台帳を新しいブロックに更新する。新しいブロックに保存された操作(トランザクション)は、グローバル状態に対して実行する必要があります。
ノード・ネットワーク層
IBAX Networkプロトコルを実装し、ノードネットワーク上でトランザクションの分散、検証、新しいブロックの生成を行う。同様に、新しいブロックもノードネットワークで配布され、検証される。
すべてのノードの分散型台帳は同期された状態に保たれます。ノードで競合が発生した場合、ノードはどのブロックチェーンが有効とみなされるかを識別し、無効なブロックチェーンはそれに応じてロールバックされます。
トランザクション層
トランザクションはブロックとブロックチェーンプロトコルを生成するための基礎であり、トランザクション自体はユーザーインタラクション層で行われた操作の結果である。トランザクションはWeaverによって生成されます。
ユーザーや開発者がページ上のボタンをクリックしたり、コードエディターからコントラクトを実装したりといった操作を行うと、Weaverはこの操作をトランザクションに変換して、接続しているネットワークノードに送信する。
したがって、トランザクションの流れは次のようになります:
- ユーザーページでのユーザー操作がトランザクションとなる;
- トランザクションはブロックに含まれる;
- そのブロックはブロックチェーンに含まれる;
- 操作の変更によりブロックチェーンのグローバルな状態が変化し、その操作はデータベースにも適用される;
- データベースの変更は、アプリケーションに反映されます。
実装
IBAXは、サーバgo-ibax (opens new window)とWeaverソースコード (opens new window)という2つの大きなコンポーネントを持っています。
Weaverは、以下のようなものです:
ユーザーページを提供する;
アプリケーション開発のためのIDEを提供する;
ユーザーアカウントの公開鍵を保存し、認可を行う;
アプリケーションページからデータベースデータを要求し、ユーザーにアプリケーションページを表示する;
REST API を通してサーバーにトランザクションを送信する;
ユーザーの操作に対して自動的にトランザクションを作成するため、アプリケーション開発者がIDEからコントラクトを実装する際に、Weaverがその操作をトランザクションに変換します。
サーバーです:
- ノードのグローバルな状態(データベース)を保持する;
- ブロックチェーンプロトコルの実装
- IBAX仮想マシンにおけるコントラクトコードの実装;
- [ テンプレートエンジン ](.../topics/templates2.md )にページコードを実装する;
- RESTful APIを実装しています。