IBAX概要
特徴
IBAXネットワーク(IBAX)は、統合されたアプリケーション開発環境(IDE)を持つプラットフォームです。データ、ユーザーページ、スマートコントラクトに対するマルチレベルのアクセス制御システムがあります。
構造と機能の面で、IBAXは他の多くの既存のブロックチェーンプラットフォームとは異なっています:
IBAXアプリケーションの開発と使用は、エコシステムと呼ばれる自律ソフトウェア環境で行われます。各エコシステムには、最初に作成者によって確立される独自のメンバーシップルールがあります。
エコシステムの活動は、データベーステーブルのレコードや更新に関連するデータを含みます。これらの活動は、スマートコントラクトで作成されたレジスターに基づいて行われます。他のほとんどのブロックチェーンプラットフォームでは、活動はアカウント間のトランザクション交換に基づいています。
レジスターへのアクセスとエコシステムメンバー間の関係の制御は、スマートロウズと呼ばれる一連のルールによって管理されます。
アーキテクチャ
ネットワーク
IBAXはピア・ツー・ピア(P2P)ネットワーク上に構築されています。
ネットワーク内のガーディアンノードは、IBAXのブロックチェーンの最新バージョンを格納するブロックチェーンデータベースを保持しており、IBAXのブロックチェーンの最新の状態を記録しています。
ネットワークユーザーは、WeaverまたはREST APIコマンドを介してガーディアンノードデータベースからリクエストを送信することでデータを受け取ることができます。ユーザーによって署名された新しいリクエストは、バイナリ形式のトランザクションとしてネットワークに送信されます。これらのトランザクションは、関連するデータベースレコードを変更するためのコマンドです。トランザクションはブロックに集約され、そのようなブロックはネットワークのすべてのノードのブロックチェーンに送信されます。各ガーディアンノードはブロック内のトランザクションを処理し、データベース内の対応するデータを更新することで、トランザクションを実行します。
名誉ノード
ネットワーク内で新しいブロックを生成する特権を持つガーディアンノードは、名誉ノードと呼ばれます。名誉ノードの最大数はplatform-parameters.mdのnumber_of_nodes
で定義されており、名誉ノードの数は制限されています。
名誉ノードはIBAXパブリックネットワークの主要なコンポーネントの1つです。トランザクションを実行し、他のノードからトランザクション情報を収集し、トランザクションをキューに追加し、確認メカニズムを使用して新しいブロックの正当性と妥当性を検証します。一般的に、名誉ノードにはパッケージング状態と非パッケージング状態の2つの状態があります。
パッケージング状態の名誉ノードは、最高のパフォーマンスを提供します。実行するためのトランザクションリクエストをトランザクションキューから取得し、トランザクションの署名の有効性と正確性(送金額、トランザクション操作の許可、トランザクションの正確な実行など)を検証します。正しいか誤ったトランザクション(誤ったトランザクションはロールバックされます)は、ブロックに書き込まれます。誤ったトランザクションには罰則のガス料金が発生します。実行されたトランザクションは、ブロックとともに他の名誉ノードにブロードキャストされます。
非パッケージング状態の名誉ノードは、パッケージングノードによって生成されたブロック内のトランザクションが正しく実行されていることを確認するためのブロック検証に主に責任を持ちます。異常が発生した場合は、例外処理メカニズムをトリガーし、IBAXネットワークはブロックをロールバックして再検証します。
トランザクションの実行効率を確保するために、名誉ノードは常にトランザクション情報を収集します。
トランザクション
トランザクションは、スマートコントラクトの実装に使用されるデータを含むWeaverによって生成されます。
トランザクションはユーザーによって秘密鍵で署名されます。秘密鍵とWeaverの署名関数は、ブラウザ、ソフトウェアクライアント、SIMカード、または専用の物理デバイスに保存することができます。現在の実装では、秘密鍵はECDSAアルゴリズムで暗号化され、Weaver側に保存されます。すべてのトランザクションはECDSAアルゴリズムで署名されます。
トランザクションの構造は以下の形式に準拠しています:
- ID - 実装されたコントラクトのID;
- Params - コントラクトに送信されるパラメータ;
- KeyID - トランザクションを送信するユーザーのID;
- PublicKey - オナーノードの公開鍵;
- Time - トランザクションによって生成されたタイムスタンプ;
- EcosystemID - トランザクションが行われるエコシステムのID;
- ТokenEcosystem - エコシステムのID(デフォルトは1)であり、トランザクションのコストをカバーするためにその中のトークンが使用されます。
ネットワークプロトコル
ユーザーによってトランザクションはオナーノードに送信され、フォーマットが正しいことを基本的な検証を受けた後、キューに追加されます。トランザクションはネットワーク上の他のオナーノードにも送信され、それぞれのキューに追加されます。
オナーノードは特定の時間枠内で新しいブロックを生成する特権を持っており、これはプラットフォームパラメータのfull_nodesと特別なアルゴリズムによって決定されます。オナーノードはキューからトランザクションを取得し、ブロックジェネレータに送信します。新しいブロックを生成する際に、そのブロック内のトランザクションも処理されます:各トランザクションは仮想マシンに送信され、トランザクションパラメータに対応するコントラクトが実装され、データベースのレコ
新しいブロックは、他のネットワーク上の他の優等ノードに送信する前に、エラーがないことを確認するために検証される必要があります。
新しいブロックは、他の優等ノードによって受信されるとブロックキューに追加され、検証後、ブロック内のトランザクションを処理するために配置されている優等ノードのブロックチェーンに追加され、それによってデータベース内のレコードが更新されます。
ブロックとトランザクションの検証
新しいブロックは、他のネットワーク上の他のオナーノードに送信する前にエラーがないことを検証する必要があります。
他のオナーノードに受信された新しいブロックは、ブロックキューに追加され、検証された後、それが位置するオナーノードのブロックチェーンに追加されます。その結果、ブロック内のトランザクションが処理され、データベースのレコードが更新されます。
新しいブロックの生成または受信後、他のオナーノード上で次の検証が行われます:
受信データの最初のバイトは0である必要があります。そうでない場合、受信データはブロックと見なされません。
受信したブロックの生成タイムスタンプは現在のタイムスタンプよりも前である必要があります。
ブロックの生成タイムスタンプは、新しいブロックを生成する特権を持つオナーノードの時間枠に対応している必要があります。
新しいブロックの高さは、既存のブロックチェーン上の最大ブロックの高さよりも大きくなければなりません。
ブロック内のすべてのトランザクションに許可される最大の費用を超えることはできません。
ブロックは、それが位置するノードの秘密鍵で適切に署名されている必要があります。署名データには以下の情報が含まれている必要があります:
各トランザクションの正当性を以下の方法で確認します:
各トランザクションのハッシュは一意である必要があります。
キーで署名されたトランザクションは、制限(max_tx_block_per_user)を超えることはできません。
トランザクションのサイズが最大トランザクションサイズ(max_tx_size)の制限を超えることはできません。
トランザクションのタイムスタンプは、ブロックの生成時刻よりも大きく、ブロックの生成時刻に600秒を加えたものよりも大きくすることはできません。また、ブロックの生成時刻から86400秒未満である必要があります。
トランザクションは適切に署名されている必要があります。
コントラクトを実装するユーザーは、トランザクションのコストを支払うための十分なトークンをアカウントに持っている必要があります。
データベース
IBAXネットワークの基礎データストレージレイヤーは、一般に公開されたPGSQL
データベースです。IBAXオペレーティングシステムプラットフォームの許可設計に基づき、ユーザーはデータセキュリティの心配をする必要はありません。オブジェクト指向の設計思想に基づいて、IBAXネットワークはリレーショナルなPGSQLデータベースを介してデータを事前コンパイルし、データ処理の効率を向上させています。
技術スペシャリストの場合は、以下に興味があるかもしれません。そうでない場合はスキップしてください。
① 名前に番号の接頭辞がないすべてのテーブルは、IBAXネットワーク基本の許可テーブルに属しています。
② 名前に番号の接頭辞があるすべてのテーブルは、ecoLibsの許可テーブルに属しています。
ECOLIB
IBAXネットワークシステムプラットフォーム上で、ユーザーは自分自身のecoLibを簡単に作成できます。私たちは、ecoLibの作成がワンクリックで行えるアプリケーションを統合・開発しました。
ecoLibを作成する際には、エコシステムのパラメータやルールを設定し、管理者アカウントと課金モデルを設定することができます。重要なのは、DPoAコンセンサスをecoLib内でよりよく適用するため、独自のコントラクトを作成またはインポートすることができる点です。
コントラクトテンプレートのインポートによるecoLibトークンの迅速な発行をサポートしています。
コンセンサスと管理許可の違いにより、ecoLibは分散型と集中型に分類されます。タイプによって具体的な利点や欠点はありません。サービスのニーズに合わせて適切なタイプを選択する必要があります。現在は大丈夫でも将来には大丈夫ではない場合はどうすればよいですか?IBAXネットワークシステムプラットフォーム上で、ecoLibのパラメータ、コンセンサスメカニズム、トークン、ガバナンス方法を変更することができます。全てをecoLib管理者またはメンバー(ecoLibタイプに応じる)が維持する自己統治メカニズムに任せることもできます。
IBAXネットワークシステムプラットフォーム上では、ecoLibは完全なデータ制御権限を持ち、独立したデータベーステーブルやフィールドにアクセスできる権限も持っています。データ制御権限の設計では、フィールドが論理式を満たすときにトリガーをサポートしています。この機能により、モニタリング、論理満足、時間や特定の条件によるトリガリングなどの特殊なサービスに想像力の余地があります。
ecoLib内には複数のDAppが存在する場合があり、それぞれに独立したパラメータが設定されている場合があります。ecoLibは、実現したいものを何でも実装できるプラットフォームのようなものです。
エコシステム開発者をよりよくサポートするために、編集、管理、開発ツールであるWeaverを提供しています。これにより、エコシステムの開発、保守、管理コストを大幅に削減できます。
IDE
Weaverは、ブロックチェーンアプリケーションを作成するための完全な統合開発環境(IDE)を備えています。ソフトウェア開発者はブロックチェーン技術について深い理解を持つ必要はありません。
Weaverは、エコシステム内のアプリケーションを作成するために必要なテーブル管理ツール、コントラクトエディター、ページエディターなどの機能を提供しています。ソフトウェアモジュールのサポートなしで、エコシステム内でアプリケーションを作成することができます。
IDEには、次のようなパーツが主に含まれています:
エコシステムパラメータのリスト
コントラクトエディター
テーブル管理ツール
ページエディターとビジュアルページデザイナー
マルチ言語リソースエディター
アプリケーションのインポート/エクスポート機能
アプリケーション
アプリケーションは、データベース テーブル、スマート コントラクト、構成のためのアクセス権を持つユーザー ページなどの要素のコレクションです。 アプリケーション要素が属するエコシステムは、「@1ElementName」などの要素名の接頭辞によって示されます。エコシステム ID は、「@」記号の後の数字「1」で示されます。 現在のエコシステムでアプリケーション要素を使用する場合、接頭辞 @1
は省略できます。 これらのアプリケーションは、便利な機能を実行したり、さまざまなサービスを実装したりできます。
テーブル
IBAX のデータベースでは、各エコシステムは無制限の数のテーブルを作成できます。 特定のエコシステムのテーブルは、Weaver には表示されないエコシステム ID を含むプレフィックスによって識別できます。
テーブルはいかなる形でもバインドされず、特定のコントラクトに属します。 テーブルのアクセス権の範囲内のすべてのアプリケーションで使用できます。
各エコシステムは、そのアプリケーションを開発するためのデータ テーブルのセットを作成できます。また、場合によっては、テーブル名のプレフィックスを指定して他のエコシステムのデータ テーブルにアクセスすることもできます。
スマート ローを通じてアクセス権を構成することにより、データがテーブルに記録されます。 スマートローは権利管理に使用されます。
テーブル管理ツール
Weaver メニューの [テーブル] にテーブル管理ツールがあり、次の機能をカバーします。
テーブルデータの操作
データベース操作を改善するために、Needle と Logical の両方に DBFind 関数があり、テーブルから値とデータ配列を取得するために使用されます。
コントラクト言語の DBInsert 関数は、テーブルにエントリを追加するために使用されます。 DBUpdate 関数と DBUpdateExt 関数は、既存のエントリの値を更新するために使用されます。 更新中に、テーブル内の対応するデータが更新され、ブロックチェーンはすべての履歴トランザクションを保持しながら新しいトランザクションを追加します。 テーブル内のデータは変更のみ可能で、削除はできません。
コントラクトの実装時間を最小限に抑えるために、DBFind 関数は複数のテーブルを同時にクエリできず、JOIN はサポートされていません。 したがって、アプリケーション テーブルを正規化せず、利用可能なすべての情報をエントリに保存するか、他のテーブルで利用可能な情報を繰り返すことをお勧めします。 これは必須ではありませんが、ブロックチェーン アプリケーションには必要です。 この場合、リレーショナルデータベースでは同期的に更新されますが、他のテーブルの同じデータが更新されても更新できないデータを完全に保存する必要があります。
エコシステムパラメータ
Weaver のメニューでエコシステム パラメータのリスト (1_parameters) を表示および編集できます。 生態系パラメータは次のグループに分類できます。
一般パラメータ: エコシステム作成者のアカウント (founder_account) およびその他の情報。
アクセス権パラメーター: アプリケーション要素のアクセス許可を定義するために使用されます。
テーブル構造を変更します (changing_tables)。
契約を変更する (changing_contracts);
ユーザーページを変更します (changing_page);
メニューを変更します (changing_menu);
多言語リソースを変更します (changing_ language)。
技術パラメータ: ユーザー スタイル (スタイルシート) を定義するために使用されます。
ユーザーパラメータ: アプリケーションの動作に必要な定数またはリスト (カンマ区切り) を定義するために使用されます。
各エコシステムのパラメータの編集権限を指定できます。
EcosysParam 関数を使用すると、エコシステム パラメーターのタイトルをパラメーターとして渡すことで、エコシステム パラメーターの値を取得できます。
アクセス権制御メカニズム
IBAX には、複数レベルのアクセス許可管理システムがあります。 アクセス権を構成することで、コントラクト、テーブル、ユーザー ページ、エコシステム パラメーターなどのアプリケーション要素を作成および変更できます。 構成を通じてアクセス権を変更することもできます。
デフォルトでは、IBAX エコシステム内のすべての権利は、各エコシステムの MainCondition コントラクトで定義されている作成者によって管理されます。 しかし、スマートな法律を作成した後は、アクセス制御をエコシステムのメンバー全員またはグループに移管することができます。
アクセス権制御
アクセス権は、コントラクト テーブル (1_contracts )、データ テーブル (1_tables )、ユーザー ページ テーブル (1_pages )、メニュー テーブル (1_menu )、およびコード ブロックで定義されます。 テーブル (1_blocks )。 Weaver で対応するメニューを見つけることができます。
アクセス権管理
アクセス権のルールは、対応する契約式 ContractConditions(“@1MainCondition”)、ContractAccess(“@1MainCondition”)、または論理式を許可フィールドに入力することによって構成されます。 リクエスト式の結果が合格 ( true ) の場合、アクセスが許可されます。 それ以外の場合、アクセスは拒否され、関連する操作は終了します。
権利を定義する簡単な方法は、右側のフィールドに論理式を入力することです。 たとえば、「$key_id == 8919730491904441614」の場合、$keyid はエコシステム メンバーの ID を表します。
権利を定義する最も一般的で推奨される方法は、ContractConditions("@1ContractsName1","@1ContractsName2")
関数を使用することです。 コントラクト名 ContractsName はパラメーターとして関数に渡され、コントラクトの結果は論理式 (true または false) の結果である必要があります。
権利を定義するもう 1 つの方法は、ContractAccess("@1ContractsName3","@1ContractsName4")
関数を使用することです。 対応する操作を実装するために修飾されたコントラクト ContractsName をパラメーターとして関数に渡すことができます。 たとえば、金額列の右側のフィールドが ContractAccess("@1TokenTransfer")
として設定されている場合、金額列の値を変更したい場合にのみコントラクト @1TokenTransfer を実装できます。 契約自体にアクセスする権利は条件セクションで管理できますが、条件セクションは非常に複雑であり、他の多くの契約が含まれる場合があります。
独占的権利
エコシステムの運営にとって重大な緊急事態または状況の場合、エコシステム パラメーターのリスト (1_parameters) ( changing_contracts 、 changing_pages など) などの特別なパラメーターが多数あります。 現在のエコシステムのすべてのコントラクト、データ テーブル、ページにアクセスする権利を定義します。 これらの権利は、キー契約によって構成されます。
仮想プライベートエコシステム
IBAX では、仮想プライベート エコシステム - Cross Ledger Base (CLB) を作成できます。 CLB は標準エコシステムのすべての機能を備えていますが、ブロックチェーンの外部で動作します。 CLB では、コントラクトとテンプレート言語、テーブルを使用および作成し、Weaver を使用してアプリケーションを作成できます。 API 経由でブロックチェーン エコシステム上のコントラクトを呼び出すことができます。
Web リソースへのリクエスト
データを読み取る権利
CLB 内のデータは読み取り可能ですが、ブロックチェーン内に保存されません。 データベーステーブルへの読み取り権限を付与するかどうかを選択できます。 特別な契約を使用して、個々の列または任意の行の読み取り権限を設定できます。
CLBの作成
ネットワーク上に CLB ノードを作成できます。 事前定義されているように、CLB ノード管理者には、CLB 機能でエコシステム リストを使用する権限が与えられ、アプリケーションのインストール、新しいメンバーの受信、リソースのアクセス許可の構成を行うためのエコシステム作成者権限を持つユーザーを指定します。
CLB の使用法
CLB を使用して、登録フォームを作成し、電子メールまたは電話でユーザーに検証情報を送信し、公的にアクセス可能なデータを保存できます。 アプリケーションを作成してテストし、ブロックチェーン エコシステムにインポートできます。 CLB では、契約タスクのスケジューリングを使用し、Web リソースからデータを受信し、そのデータをブロックチェーン エコシステムに送信するオラクル マシンを作成できます。