Skip to content

Latest commit

 

History

History
107 lines (62 loc) · 8.41 KB

blockchain-layers.md

File metadata and controls

107 lines (62 loc) · 8.41 KB

IBAXネットワーク {#the-ibax-network}

このセクションでは、IBAXの使用方法について説明します。

IBAXにおけるアプリケーションの開発、利用、管理に興味があるのであれば、全く理解する必要はないかもしれません。

IBAXでは、ブロックチェーンとブロックチェーン・ネットワークは、ECOLIBメンバー、管理者、アプリケーション開発者からは隠されています。IBAXでは、すべてのユーザーグループに対してRESTful API を提供しており、ブロックチェーンの global state への改ざん防止と分散アクセスを提供します。

アプリケーション開発者 {#application-developers}

技術用語では、グローバルステートはデータのセットであり、IBAXのデータベースを介して実装されています。アプリケーション開発者の視点から見ると、アプリケーションはテーブルの問い合わせ、挿入、更新によってデータベースと相互作用する。

IBAXでは、さまざまなコントラクトを実装することで、ブロックチェーンにトランザクションが書き込まれます。これらのトランザクションは、ブロックチェーンネットワークノードが実装するコントラクトコードを呼び出し、それに応じてグローバルステート(データベース)を更新する。

アプリケーション開発者にとっては、コントラクトが実装されるとデータベースにデータが書き込まれる機能である。ページはスクリプトのようなもので、ページコードはページテンプレート関数のセットであり、これらの関数の一部はページ要素を表示し、他のデータはデータベースからもたらされます。アプリケーション開発者は、トランザクション、ブロック生成、コンセンサス・アルゴリズムが何であるかを理解する必要はなく、ただそれを使うだけでよい。

ECOLIBメンバー {#ecolib-members}

開発者が書いたアプリケーションは、ECOLIBと呼ばれる環境下で動作します。アプリケーションは通常、特定の目的を持ち、他のいくつかのアプリケーションと一緒に様々なタスクをこなします。

ECOLIB内のアプリケーションにアクセスするには、ECOLIBのメンバーになる必要があり、同時に複数の異なるECOLIBのメンバーになることができる。

ECOLIBのメンバーは、一般的なWebアプリケーションでフォームに記入したり、ボタンをクリックしたり、ページをナビゲートするように、アプリケーションのページからデータベースを見たり、変更したりすることができます。

ECOLIBアプリケーションとプラットフォーム・アプリケーション {#ecolib-applications-and-platform-applications}

アプリケーションは、ECOLIBアプリケーションプラットフォーム・アプリケーションに分類されます。

ECOLIBアプリケーション

ECOLIBアプリケーションは、あるECOLIB独自の機能やビジネスプロセスを実装したもので、そのECOLIBでしか利用できない。 プラットフォームアプリケーション

プラットフォームアプリケーションは、すべてのECOLIBに適用可能です。どんなアプリケーションでもプラットフォーム・アプリケーションとして開発することができる。IBAXの開発者は、投票、通知、ECOLIBメンバーの役割管理など、ECOLIBガバナンスの中核機能をサポートするプラットフォーム・アプリケーションを提供する。

基礎となるモデル {#underlying-model}

レイヤーの定義

IBAXはいくつかのレイヤーから構成されています:

  • ユーザーインタラクションレイヤー

    ECOLIBメンバーは、ページとページ要素を通じてアプリケーションと対話する。

  • アプリケーション層

    アプリケーション開発者は、契約コードとページコードを通じてグローバルな状態(データテーブル)と対話する。

  • グローバルステート層

    分散台帳(ブロックチェーン)に書き込まれた操作に基づき、グローバルステート(データベース)の更新・同期を行う。

  • ブロックチェーンレイヤー

    分散台帳を新しいブロックに更新する。新しいブロックに保存された操作(トランザクション)は、グローバル状態に対して実行する必要があります。

  • ノード・ネットワーク層

    IBAX Networkプロトコルを実装し、ノードネットワーク上でトランザクションの分散、検証、新しいブロックの生成を行う。同様に、新しいブロックもノードネットワークで配布され、検証される。

    すべてのノードの分散型台帳は同期された状態に保たれます。ノードで競合が発生した場合、ノードはどのブロックチェーンが有効とみなされるかを識別し、無効なブロックチェーンはそれに応じてロールバックされます。

  • トランザクション層

    トランザクションはブロックとブロックチェーンプロトコルを生成するための基礎であり、トランザクション自体はユーザーインタラクション層で行われた操作の結果である。トランザクションはWeaverによって生成されます。

    ユーザーや開発者がページ上のボタンをクリックしたり、コードエディターからコントラクトを実装したりといった操作を行うと、Weaverはこの操作をトランザクションに変換して、接続しているネットワークノードに送信する。

したがって、トランザクションの流れは次のようになります:

  • ユーザーページでのユーザー操作がトランザクションとなる;
  • トランザクションはブロックに含まれる;
  • そのブロックはブロックチェーンに含まれる;
  • 操作の変更によりブロックチェーンのグローバルな状態が変化し、その操作はデータベースにも適用される;
  • データベースの変更は、アプリケーションに反映されます。

実装 {#implementation}

IBAXは、サーバgo-ibaxとWeaverソースコードという2つの大きなコンポーネントを持っています。

Weaverは、以下のようなものです:

  • ユーザーページを提供する;

  • アプリケーション開発のためのIDEを提供する;

  • ユーザーアカウントの公開鍵を保存し、認可を行う;

  • アプリケーションページからデータベースデータを要求し、ユーザーにアプリケーションページを表示する;

  • REST API を通してサーバーにトランザクションを送信する;

    ユーザーの操作に対して自動的にトランザクションを作成するため、アプリケーション開発者がIDEからコントラクトを実装する際に、Weaverがその操作をトランザクションに変換します。

サーバーです:

  • ノードのグローバルな状態(データベース)を保持する;
  • ブロックチェーンプロトコルの実装
  • IBAX仮想マシンにおけるコントラクトコードの実装;
  • [ テンプレートエンジン ](.../topics/templates2.md )にページコードを実装する;
  • RESTful APIを実装しています。