IBAX 開発チュートリアル
初めての利用ガイド
デプロイ
高度なガイド
IBAX ブロックチェーン上にスマートコントラクトをデプロイし、スマートコントラクトの呼び出し方を学ぶために、コマンドラインツール (opens new window)を使用します。
最初のスマートコントラクトとして、それをローカルテストネットワークにデプロイします。ローカルネットワークのデプロイ方法については、ネットワークデプロイを参照してください。
これにより、オーバーヘッドなしで自由にデプロイして実行できます。
アプリケーションの作成
@1NewApplication というコントラクトを呼び出して、アプリケーションを作成します。アプリケーション名のパラメータとアクセス権制御メカニズムの修正パラメータがあります。
以下は行ごとに説明されています:
- 1行目、コマンドラインターミナルを起動します。
- 5行目、@1NewApplication コントラクトを呼び出して、アプリケーション名を
testapp、アプリケーションの修正権限を @1DeveloperCondition(開発者権限)で作成します。 - 8行目、トランザクションによって生成されたブロックIDです。
- 9行目、トランザクションによって生成されたブロックハッシュです。
- 10行目、トランザクションの実行が失敗した場合は (0: ペナルティなし 1: ペナルティあり) です。
- 11行目、トランザクションの実行が失敗した場合はエラーテキストメッセージが返され、ブロックIDが返される場合は err フィールドがアプリケーションのIDです。
もちろん、このコントラクトで利用可能なフィールドやフィールドのタイプを確認したい場合は、getContractInfo メソッドを呼び出すことができます。以下はコントラクト情報の返り値です:
fields フィールドは、コントラクトのパラメータを含みます。パラメータの名前 name、type、optional が含まれています。
Name と Conditions は必須であり、VotingId はオプションです。contract/name API メソッドを参照してください。
コントラクトの記述
Needle を使用して、以下のような簡単な足し算の操作を行うスマートコントラクトを記述します。コントラクトのソースコードは以下の通りであり、SumMath.sim として保存します。
以下は、行ごとに説明されています:
sumの値を$resultに代入し、コントラクトの結果として表示します。もちろん、A+Bの値を直接$resultに代入することも可能ですが、例として示すことができます。
コントラクトの作成
コントラクトの作成方法は2つありますが、最初の方法は以下の通りです:
最初のステップでは、json形式のコントラクトパラメータファイルを作成します:
ここで、ApplicationId はアプリケーション ID、Value はコントラクトのソース コード、特殊文字をエスケープする必要があります、Conditions はコントラクトの変更権限です
SumMathParams.json という名前を付けました。
2 番目のステップでは、コントラクトを作成する @1NewContract を呼び出します。
2 番目の方法:
保存されたコントラクト ソース ファイルは、次のようにパラメータ形式 paramsName + - + "file",paramsName-file でコントラクト パラメータに直接渡されます。
以下を行ごとに説明します。
- 行 1: コントラクト @1NewContract を呼び出してコントラクトを作成します。 -f はファイルを使用してコントラクト パラメーターをインポートします。
- 行 3、トランザクションによって生成されたブロック ID
- 行 4、トランザクションによって生成されたブロック ハッシュ
- 5 行目、トランザクションの実行が失敗した場合 (0: ペナルティなし 1: ペナルティ)
- 6 行目、トランザクションの実行が失敗した場合、エラー テキスト メッセージが返され、ブロック ID が返された場合、err フィールドはコントラクトの ID になります。
デプロイしたばかりのコントラクトを呼び出してみましょう
呼び出しは完了し、以下の行ごとに説明されているように、結果は期待どおりになります。
- 最初の行はコントラクトを呼び出します。ここでは、エコロジー ID 5 のエコロジーにコントラクトをデプロイします。もちろん、現在のエコロジー ID が 5 の場合は、同じエコロジー内で
callContract SumMath {"A":1 を呼び出すこともできます。 , "B":2} このように - 行 3、トランザクションによって生成されたブロック ID
- 行 4、トランザクションによって生成されたブロック ハッシュ
- 5 行目、トランザクションの実行が失敗した場合 (0: ペナルティなし 1: ペナルティ)
- 6 行目、トランザクションの実行が失敗した場合、エラー テキスト メッセージが返され、ブロック ID が返された場合、err フィールドはコントラクトの結果、つまり
$result の値になります。
このチュートリアルでは、次の方法を学びます。
以下は、IBAXのエコロジーとアプリケーションがどのようなものであり、それらが何をするのかをより明確に理解するために、エコロジーとアプリケーションがどこに所属するべきかを理解することが好ましいです。簡単なマインドマップでより良く理解できます:

IBAXネットワークには複数のエコロジーが存在することがわかります。
各エコロジーには複数のアプリケーションが存在することができます。
各アプリケーションにはスマートコントラクトが存在します。
テーブルもあります。
エコロジーにはエコロジーパラメータ、アプリケーションにはアプリケーションパラメータがあります。
ステップ 1 エコシステムの作成
まず、コマンドラインツール (opens new window)を使用してエコシステムを作成します。@1NewEcosystemコントラクトを呼び出します。
エコシステム名を変更したい場合は、@1EditEcosystemNameコントラクトを呼び出すことができます。
以下の内容を行ごとに説明します:
- 行1: コマンドラインコンソールプログラムを起動します。
- 行5:
@1NewEcosystemコントラクトを呼び出して、テストエコシステムという名前のエコシステムを作成します。 - 行8: トランザクションによって生成されたブロックIDです。
- 行9: トランザクションによって生成されたブロックハッシュです。
- 行10: トランザクションの実行が失敗した場合のステータスです(0: ペナルティなし 1: ペナルティあり)。
- 行11: トランザクションの実行が失敗した場合、エラーテキストメッセージが返されます。ブロックIDが返された場合、エラーフィールドはエコロジーのIDとなります(18)。
次に、コマンドツールのconfig.ymlを設定し、作成したエコシステムのecid(18)をecosystemに設定し、コマンドラインコンソールプログラムを再起動します。
ステップ 2 アプリケーションの作成
@1NewApplicationコントラクトを呼び出して、アプリケーションを作成します。このコントラクトにはアプリケーション名のパラメータと変更権限のパラメータがあります。
Permission Parameterについては、アクセス権制御メカニズムのドキュメントを参照してください。
アプリケーションの権限を変更する必要がある場合は、EditApplication コントラクトを呼び出すことができます。
以下を行ごとに説明します。
- 1 行目、コントラクト @1NewApplication を呼び出してアプリケーションを作成します。アプリケーション名は
GradesRecorder、アプリケーションの変更権限は開発者権限 @1DeveloperCondition です。 - 行 4、トランザクションによって生成されたブロック ID
- 行 5、トランザクションによって生成されたブロック ハッシュ
- 6 行目、トランザクションの実行が失敗した場合 (0: ペナルティなし 1: ペナルティ)
- 7 行目、トランザクションの実行が失敗した場合はエラー テキスト メッセージが返され、ブロック ID が返された場合は、アプリケーションの ID である err フィールドは
47 になります。
学生の成績を記録するアプリケーションのシンプルな例を書いてみましょう。
データテーブルのフィールドには、学生情報、成績(grade)、クラス(class)、科目の成績(mathematics、physics、literature)、総合スコア(overall_score)、評価(score)、作成タイムスタンプ(ミリ秒)(created_at)が含まれます。
ステップ 3 テーブルの作成
最初のステップでは、コントラクト パラメータ ファイルを json 形式で作成します。
ここで、ApplicationId はアプリケーション ID、Name は作成されたデータ テーブル test_teble の名前です。
ColumnsArr はデータ テーブル フィールドの配列であり、TypesArr は 9 つの タイプ を含むデータ テーブル フィールドのタイプです。
varchar,character,json,number,datetime,double,money,text,bytea、フィールド名とフィールド型は 1 対 1 に対応します 。
データテーブルの新規エントリ権限の場合は InsertPerm、データテーブルの更新エントリ権限の場合は UpdatePerm、データテーブルのデータ読み取り権限の場合は ReadPerm、データテーブルの新規フィールド権限の場合は NewColumnPerm Permission Control を参照すると、現在のエコシステム作成者はここで「ContractConditions("MainCondition")」を利用できます。
これに createTable.json という名前を付け、データ テーブル @1NewTableJoint を作成するコントラクトを呼び出します
データテーブルフィールドの権限を変更する
データ テーブル フィールドの権限を変更できます。データ テーブル フィールドの権限には、読み取り権限と更新権限が含まれます。読み取り権限には、
DBFind.Columns フィルター フィールドまたは list クエリなどのインターフェイスを使用するコントラクト内で、
権限がない場合は、権限エラーが報告されます。
更新権限は、データテーブルのフィールドを更新する権限です。
ここではstudentフィールドの読み取りおよび更新権限を「false」に設定していますが、もちろん、何らかの契約によって操作可能に設定することもできます。
@1EditColumn コントラクトを呼び出して、データ テーブルのフィールド権限を変更します
いくつかのアプリケーションパラメータgrade_best_type、grade_type_a+、grade_type_a、grade_type_b+、grade_type_b、grade_type_c、グレード評価タイプを作成できます。
ステップ 4 アプリケーションパラメータの作成
コントラクト @1NewAppParam を呼び出してアプリケーション パラメータを作成します。アプリケーション パラメータを変更したい場合は、コントラクト @1EditAppParam を呼び出すことができます。
grade_best_typeは最高の評価タイプです。
grade_type_a+はA+の評価でトリガーされる条件で、スコアが90以上101未満の場合、評価はA+となります。他のパラメータも同様です。
ステップ 5 コントラクトの作成 コントラクトの展開
学生の成績情報と各教科の最終評価を記録するための契約を作成し、情報を入力する際には学生の成績クラスと成績を各教科ごとに入力します。
各教科の入力スコアに基づいて平均計算を行い、総合スコアoverallScoreと最終評価scoreを取得します。
契約が呼び出されると、私たちが作成したデータテーブルgrade_infoにレコードが作成されます。
まず、契約を作成し、NewRecord.simという名前を付けます。
以下は各行の説明です:
- 2行目は、データセクションで、入力パラメータ
Student(学生の名前)、Grade(成績)、Class(クラス)、Mathematics(数学の得点)、Physics(物理の得点)、Literature(文学の得点)を定義しています。 - 10行目は、各教科の得点に基づいて総合スコアと最終評価を算出する
getScore関数です。 - 30行目は、文字列をJSONデコードしてマップに変換する
safeJsonDecode関数です。 - 38行目は、条件セクションです。
- 39行目は、操作セクションです。
契約が呼び出されると、まず条件部分を実行し、契約の入力パラメータが有効かどうかを検証します。たとえば、学生の名前if Size($Student) == 0 {が空であるかどうかを検証し、空である場合はエラーメッセージ"Student Can not be empty"を返します(30行目)。すべての入力パラメータが検証された後、61行目でDBFindを使用して、ecid 18およびアプリケーション名GradesRecorderを持つアプリケーションのデータベースから情報を取得し、deleted=0で削除されていないアプリケーション情報を取得します。
69行目から74行目では、AppParamを使用してアプリケーションパラメータを取得します。たとえば、$gradeBestType = AppParam(app_id, "grade_best_type", $eId)(69行目)です。
アプリケーションパラメータがJSON形式で格納されている場合は、grade_type_aなどのように、safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))を参照して、safeJsonDecode関数でアプリケーションパラメータをマップ形式に変換できます。
その後、操作部分に進み、getScore関数を呼び出して総合スコアと最終評価を取得します(10行目)。結果をマップに保存し、79行目で学生の成績情報を保存するためのマップを定義し、DBInsertを使用してデータをデータテーブル@18grade_infoに挿入します。
契約を作成する方法は2つありますが、最初の方法は次のとおりです。まず、JSON形式の契約パラメータファイルを作成します:
ここで、ApplicationId はアプリケーション ID であり、特殊文字を使用するにはエスケープする必要があります。また、Conditions はコントラクト変更権限です。
Valueコントラクトのソース コード。NewRecordParams.jsonとして保存します。
コントラクトを作成した後、CreateContract@1NewContract を呼び出してコントラクトをデプロイする必要があります。
以下は、行ごとに説明します:
- 1行目:契約を作成するために
@1NewContract契約を呼び出します。-fオプションは、契約パラメータとして作成したファイルNewRecord.jsonをインポートするために使用されます。 - 3行目:トランザクションによって生成されたブロックID
- 4行目:トランザクションによって生成されたブロックハッシュ
- 5行目:トランザクションの実行が失敗した場合(0:ペナルティなし 1:ペナルティあり)
- 6行目:トランザクションの実行が失敗した場合、エラーテキストメッセージが返され、ブロックIDが返された場合、エラーフィールドに契約のIDが示されます(348)
2番目の方法:
保存された契約のソースファイルを、パラメータ形式のparamsName + - + "file"で直接契約のパラメータとして渡します。paramsName-fileは次のようになります:
先ほど作成したコントラクトを呼び出してみましょう
呼び出しが完了したら、データテーブルにレコードが保存されているかどうかを確認します。
データ テーブルには、総合評価 56、グレード C の「student」トムというレコードがすでに存在していることがわかります。
上記の例は調査研究のみを目的としており、データテーブルの書き込み権限や契約変更権限など、実際の状況に応じて関連パラメータを変更する必要があります。
たとえば、この新しいレコード コントラクトを 1 人だけが呼び出すことができ、他の人は呼び出せないように指定したい場合は、エコロジカル パラメータ new_record_account を設定できます。
ステップ 6 生態学的パラメータの作成
コントラクト @1NewParameter を呼び出すと、エコパラメータが作成されます
@1parameters テーブルの new_record_account で、エコパラメータを変更する必要がある場合は、@1EditParameter を呼び出します。
エコロジカル パラメータ new_record_account を作成し、値を keyId 6667782293976713160 に設定し、権限を ContractConditions("MainCondition") に変更します。これは、現在のエコロジカル作成者が変更できることを意味します。
トランザクションが正常に実行された場合、「err」フィールドの生態パラメータ ID は「273」になります。
ステップ 7 ローカリゼーションを追加する
@1NewLangJoint コントラクトを呼び出してローカリゼーション パラメーターaccount_not_access を作成すると、@1langages テーブルにパラメーターが作成され、@1EditLangJoint を介してローカリゼーション パラメーターを変更できます。
ステップ 8 契約を変更する
次に、次のコードを conditions に追加して、コントラクト ソース コードの conditions セクションを変更する必要があります。
コントラクト @1EditContract を変更するために呼び出します。Id はコントラクト ID、Value: はコントラクトのソース コードです。
ステップ 9 データテーブルの権限を変更する
ここでは、データテーブルの挿入権限、ecreator の元の権限 ContractConditions("MainCondition")、および ecreator ではないコントラクト設定 new_record_account を変更する必要があります。
したがって、ContractConditions("MainCondition") を変更して、コントラクトが ContractAccess("@18NewRecord") で操作できるように指定するだけです。
データ テーブルのアクセス許可を変更するには、コントラクト @1EditTable を呼び出します。
次に、変更したばかりのコントラクトを呼び出し、新しいレコードを作成します
先ほど設定したローカリゼーション パラメータaccount_not_accessが機能していることがわかります。
権限エラーが報告され、現在のユーザーには操作権限がないことがわかりました。keyId 6667782293976713160 のアカウントに切り替えます。コマンド ライン ツール アカウント情報 を使用して現在のユーザーの情報を取得できます。
コマンド ライン ツール config.yml を設定し、keyId 6667782293976713160 のアカウントに切り替えます。
設定完了後、再度契約を呼び出します
T呼び出しは完了し、getList @18grade_info を介してデータテーブルをクエリし、結果は期待通りです。
この記事がIBAXネットワークの動作や明確で安全なNeedleコードの書き方についての理解に役立つことを願っています。
このチュートリアルでは、以下の手順を学びます:
このチュートリアルを始める前に、独自のアプリケーションを持っていてエコロジーとアプリケーションの概念を理解している必要があります。はじめにガイドを参照してください。
コマンドラインツール (opens new window) を使用してIBAXブロックチェーンにアプリケーションをインポートします。Export Application
アプリケーションのエクスポート
現在のアカウント情報をクエリするために account info を呼び出します。ここでログインしているエコロジーIDは 9 です。現在のエコロジーIDでアプリケーションをクエリするために getList コマンドを呼び出します。
現在のエコロジーには 6 つのアプリケーションがあることがわかります。exportコマンドを使用して、idが36のアプリケーションをエクスポートします。
ここで -f パラメータを指定すると、エクスポートされたアプリケーションが現在のディレクトリの data.json ファイルに保存されます。
-f パラメータがない場合、アプリケーション データはコマンド ターミナルに出力されます。
exportコマンドは、アプリケーションをエクスポートする手順をカプセル化します。 上記のコマンドを使用してアプリケーションをエクスポートすることも、次の手順を使用することもできます。
新しいアプリケーションをエクスポートするためにコントラクト @1ExportNewApp を呼び出すと、エクスポートされたアプリケーションのレコードが 1_buffer_data テーブルに生成されます。
コントラクト @1Export を呼び出してアプリケーションをエクスポートし、選択したアプリケーションを 1_buffer_data テーブルで見つけて、すべてのアプリケーション リソースを生成された JSON 文字列にエクスポートします。
生成された JSON 文字列は、現在のエコシステムの「1_binaries」テーブルに書き込まれます。
getList コマンドを使用して、1_binaries テーブル内のデータをクエリします。
バイナリIDとハッシュを取得する
binaryVerify コマンドを呼び出してバイナリ ファイルをエクスポートします
アプリケーションのインポート
import コマンドを使用してアプリケーションをインポートし、-f パラメータを使用してインポートするアプリケーション ファイルを指定します
importコマンドはアプリケーションをインポートする手順をカプセル化しています。上記のコマンドを使用してアプリケーションをインポートできます。
または、調査と研究を容易にするために、次の手順を使用します。
- ステップ1
新しいアプリケーションをインポートするためにコントラクト
@1ImportUpload を呼び出すと、エクスポートされたアプリケーションのレコードが 1_buffer_data テーブルに生成されます。
@1ImportUpload コントラクト パラメーター Data は file type です。
キーワード「Name」ファイル名(文字列)、「MimeType」ファイルタイプ(文字列)、「Body」([]バイト)ファイル内容が含まれます。
アプリケーションファイルデータをbase64エンコードして「Body」に渡す必要があります。「base64Encode」コマンドを使用してbase64エンコードできます。
- ステップ12
呼び出しが完了したら、
getListコマンドを使用して「1_buffer_data」テーブル内のデータをクエリします。
- ステップ3
value.data->Data のデータを 1 次元配列 [a,b,c,d] に組み立てます。
次に、次の内容を含むコントラクト パラメーター ファイル
importParams.jsonを作成します。
- ステップ4
コントラクト
@1Import を呼び出してアプリケーション データをインポートします
このチュートリアルでは、以下の手順を実行します:
- エコロジーへの参加申請
- エコロジーメンバーの追加
- アカウントの凍結
- 役割管理
- トークンの発行
- エコロジー控除
- DAOガバナンスエコロジー
このチュートリアルを開始する前に、独自のアプリケーションを用意し、エコロジーとアプリケーションの概念を理解する必要があります。スタート ガイド を参照してください。
コマンドラインツール (opens new window) を使用して、IBAX ブロックチェーン上でエコロジー構成を実行します。
エコロジーへの参加を申請する
@1MembershipRequest コントラクトを呼び出して、エコロジーへの参加をリクエストできます。
次の例:
エコロジー ID 19 でエコロジーへの参加をリクエストする場合、@1MembershipRequest コントラクトはエコロジーの呼び出しに制限を設けており、基本エコロジーでのみ呼び出すことができます。
申請が成功すると対象エコロジー管理者に申請が届き、エコロジー管理者が申請を承認した場合のみ対象エコロジーに参加したとみなされます。
もちろん、ターゲットのエコロジーが公開されている場合は、ターゲットのエコロジーに直接参加することもできます
エコロジーメンバーを追加する
エコロジーが作成されたばかりの場合、エコロジー メンバーはエコロジー作成者のみです。他のメンバーを参加に招待する必要がある場合は、招待された人の公開鍵を知っていて、コントラクト @1MembershipAdd を呼び出してメンバーを追加する必要があります。
エコロジーがパブリックで誰でも参加できる場合は、エコロジー パラメーター free_membership = 1 を設定できますが、これはデフォルトではパブリックではありません。
一度設定したら、エコシステムへの参加を承認する必要はありません
パラメータ free_membership を設定しない場合、他のメンバーがあなたのエコロジーへの参加を申請したときに、申請通知を受け取ります。
@1MembershipDecide 契約承認アプリケーションを呼び出し、契約パラメータ NotificId は通知 ID、'Accept' は解決マーク、解決マーク '1' が渡されます
アカウントの凍結
@1DeleteMember コントラクトを呼び出してアカウントを凍結します。この操作は復元できないことに注意してください
役割管理
新しい役割の作成
@1RolesCreate コントラクトを呼び出して、新しいロール、ロール名 student、タイプ 2 (1 - 割り当て可能 2 - 投票タイプ 3 - システム) を作成します。
返される結果にはロール ID 21 が含まれます
ロールメンバーの追加
2 つのメソッドがあります。1 つ目のメソッドは、エコロジカル メンバーがアプリケーションを開始し、コントラクト @1RolesRequest リクエストを呼び出してロールのメンバーとして追加するリクエストです。ここで、Rid はロール ID です
2 番目の方法では、ロール マネージャーがロール メンバーを割り当て、ロール マネージャーがコントラクト @1RolesAssign を呼び出してメンバーをロールに追加します。
ロールメンバーを削除する
まず、ロールにどのようなメンバーが含まれているかを確認します。これは、次のように getList を介してクエリできます。
ここで、where条件ecosystemはエコロジーを指定し、role->idはロール ID を指定し、deleted: 0 は削除されないことを指定します。
メンバー 1273-2644-xxxx-5846-6598 のロール、つまり id が 21 のロールを削除する場合、行が 3 つあることがわかります。
管理者は、次のようにコントラクト @1RolesUnassign を呼び出してロール メンバーを削除できます。
役割マネージャーの変更
現在の生態学的役割を見てみましょう
ここで、roles_accessは現在のロールの管理ロールであり、配列であり、複数を持つことができます。
@1RolesAccessManager コントラクトを呼び出して、管理ロールをロール Teacher に追加します。ここで、コントラクトのパラメータは Action 管理演算子 (clean、remove、add)、Rid のロール ID です。 管理対象のManagerRidロールの Rid マネージャー
役割の削除
@1RolesDelete コントラクトを呼び出してロールを削除できます。コントラクト パラメータの Rid は管理対象のロールの ID、Ops は演算子です (D は削除、R は復元)
トークンの発行
エコロジーを創造する
エコロジーを作成し、@1NewEcosystem コントラクトを呼び出します
次に、コマンド ライン ツールの設定を変更して、この新しく作成されたエコシステムにログインします:「21」
基本アプリケーションのインストール
次のように、コントラクトを呼び出して基本アプリケーションをインストールします。
1行目、プラットフォームアプリケーションをインストールします
2行目、デフォルトの役割をインストールします
行 3 ~ 4 では、エコ構成およびトークン発行アプリケーションをインストールします。ここで、アプリケーション ID 5,6 は、次のように getList を介してクエリできます。
トークンの発行
新しいエコロジーであるため、トークンの発行を設定する必要があります。@1TeSettings コントラクトを呼び出して、トークンを発行できるロールを指定します。
ここで、RoleDeveloperは現在のエコロジー ロール ID であり、「@1roles」データ テーブルから取得できます。
トークンの発行 @1NewToken コントラクトを呼び出してトークンを発行します
ここで、コントラクトパラメータの Symbol はトークンシンボル、Name はトークン名、Amount は合計金額、Digits は精度です。
トークンの発行
トークンを破壊する
デフォルトのトークンの増分とトークンの破棄が許可されています。@1TeChange によってそれをオフに設定できます。ここで、TypeChange はタイプ (emission の増分、withdraw の破棄) です。
Value はオン/オフのステータス (1 がオン、2 がオフ) です。例:
追加機能を閉じる 注: 閉じた後はオンにできません
破壊をオフにします。再度破壊をオンにしたい場合は、値を1に設定するだけです。
エコ控除
エコ控除を設定する前に、ホワイトペーパー (opens new window) に記載されている IBAX 料金モデルを理解する必要があります。
まずエコウォレットのアドレスを設定し、@1EditParameter コントラクトを呼び出してエコパラメータを変更します。
ここで、Id は ecowallet (エコシステムウォレット) の ecosystem_wallet パラメーター ID であり、次のようにクエリできます。
Value値はバインドされるエコウォレットのアドレスであり、契約によりガス料金が生成され、そのアドレスによって支払われます。 アドレスには現在のエコロジーに十分なトークンが必要であり、変更が成功する前にバインドされたアドレスによって同意される必要があります。
次のように、@1EcoFeeModeManage コントラクトを呼び出して、マルチエコロジー控除を設定します。
ここで、コントラクトパラメータフィールドは次のように定義されます。
FollowFuel パラメータは、follow eco1 レートの倍数です。 CombustionFlag エコトレードガス料金の燃焼をオンにするかどうか、1-いいえ、2-はい CombustionPercent 燃焼パーセンテージ。ガス料金燃焼がオンになっている場合にのみ有効です。値は 1 ~ 100 で、オンになっていない場合は 0 になります。 VmCostFlag VM コスト フラグ、直接支払いまたは代理支払いを設定、1 - 直接支払い、2 - 代理支払い StorageFlag 保管料金フラグ、直接支払いまたは代理支払いを設定、1 - 直接支払い、2 - 代理支払い ExpediteFlag 急送料金フラグ、直接支払いまたは代理支払いを設定、1 - 直接支払い、2 - 代理支払い VmCostConversionRate 仮想マシンのコスト変換率、小数点以下 2 桁、代理支払いの場合にのみ有効、0 より大きい StorageConversionRate ストレージ コストの換算率(小数点以下 2 桁)、代理支払いの場合にのみ有効、0 より大きい
上記の設定を使用する場合、ユーザーがエコロジー内でコントラクトを呼び出すことによって発生するすべての取引手数料は、現在のエコロジー設定のエコロジカル ウォレットによって支払われます。
すべてのユーザーは、エコロジー内で発生するガス料金のみを支払う必要があります。 もちろん、実際のニーズに応じてコストパラメータを調整できます
DAO ガバナンス エコロジー
DAO ガバナンス エコロジーに変更する前に、現在のエコロジーがトークンを発行していることを確認する必要があります。DAO ガバナンス エコロジーに変更した後、エコロジーのすべての提案はガバナンス委員会のメンバーによって投票されます。
DAO 統治委員会はもはやエコ開発業者だけによって運営されることはなく、エコホールディングスの上位 50 人の代表者が選出されます。
@1EditControlMode コントラクトを呼び出して、エコ ガバナンス モードを DAO ガバナンス モードに変更します。
ここで、Valueパラメータの1は作成者モデルを表し、「2」は DAO ガバナンス モデルを表します。
アプリケーションを作成してみます
この時点で、DAO ガバナンス提案が生成され、アプリケーションが作成される前に DAO ガバナンス委員会によって投票されます。 有効な提案には、投じられた投票の 75% のうち 68% の支持率が必要です。
DAO ガバナンスの範囲には以下が含まれます。
- アプリケーション、コントラクト、ページ、コード スニペット、タブ、メニュー、アプリケーション パラメータ、データ テーブルおよびフィールドの追加、削除、および変更
- 多言語の変更
- DAOとクリエイターモデルの切り替え
- 生態パラメータを編集する
- ロール、ロールメンバーの割り当てを削除
- 追加破壊通貨発行
- プラットフォームパラメータを変更する
- 生態情報の変更
- 遅延した契約の変更
- 投票テンプレートを変更する
このチュートリアルを開始する前に、IBAX アプリケーション パッケージング ツール (opens new window) をダウンロードする必要があります。このツールを使用して IBAX アプリケーションをパッケージ化する必要があります。
次のディレクトリ構造に従ってアプリケーション ファイルを保存する必要があります。
以下に示すように:
app_params ディレクトリには、パラメータ名 + ファイル形式 .csv を使用して名前が付けられたアプリケーション パラメータ ファイルが保存されます。ファイルの内容はパラメータ値です。
contracts ディレクトリには契約が .sim ファイル形式で保持され、ファイルの内容は契約のソース コードです。
tablesディレクトリには、次のようにアプリケーション データ テーブル構造がjsonファイル形式で保持されます。
name はデータテーブルのフィールド名、conditions はデータテーブルのフィールド権限、type はフィールドのタイプです。
ステップ 1 では、config.json ファイルを生成し、次の内容で airdrop ディレクトリに保存します。
ここで、name はアプリケーションの名前、conditions: はアプリケーションを変更して airdrop ディレクトリに保存する権限です。
ステップ 2: アプリケーションをパッケージ化します。次のコマンドにより、現在のディレクトリにアプリケーション airdrop.json が生成されます。コントラクトまたはアプリケーションのパラメータを変更した場合は、アプリケーションを再パッケージ化する必要があります。
次のように、コマンド ライン ツール (opens new window) を介してアプリケーションをインポートできます。
import コマンドを使用してアプリケーションをインポートし、-f パラメータを使用してインポートするアプリケーション ファイルを指定します。
もちろん、アプリケーションをお持ちの場合は、次のコマンドを使用して完全なディレクトリ構造を生成することもできます。