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
パラメータを使用してインポートするアプリケーション ファイルを指定します。
もちろん、アプリケーションをお持ちの場合は、次のコマンドを使用して完全なディレクトリ構造を生成することもできます。