cw20スマートコントラクトをデプロイする方法を説明します。
CosmWasmの仕様とコントラクトのコレクションからcw20-baseコントラクトを使用します。cw20-baseはcw20互換コントラクトの基本実装で、カスタムコントラクトにインポートして構築できます。cw20仕様とすべてのExtensionの完全な実装が含まれています。cw20-baseはそのままデプロイするか、他のコントラクトからインポートして使用できます。
前提条件
以下の手順に従ってGo、Rust、その他のCosmWasm依存関係をインストールしてください: 開始前に、rustupと最新バージョンのrustcおよびcargoがインストールされていることを確認してください。現在、Rust v1.58.1以降でテストしています。
また、wasm32-unknown-unknownターゲットとcargo-generate Rustクレートもインストールする必要があります。
以下のコマンドでバージョンを確認できます:
injectived
injectivedがローカルにインストールされていることを確認してください。injectivedのインストールガイドに従ってinjectivedとその他の前提条件をローカルで実行できるようにしてください。
injectivedをインストールしたら、ローカルチェーンインスタンスを起動してください。
CosmWasmコントラクトのコンパイル
このステップでは、すべてのCW本番テンプレートコントラクトを取得し、CosmWasm Rust OptimizerのDockerイメージ(複数コントラクト用のworkspace-optimizer)を使用してコンパイルします。最新バージョンはこちら(x86)またはこちら(ARM)を確認してください。このプロセスには時間とCPUリソースが必要です。
artifactsディレクトリに配置されます。これでcw20_base.wasmコントラクト(ARMデバイスでコンパイルした場合はcw20_base-aarch64.wasm)をデプロイできます。
CosmWasmコントラクトのチェーンへのアップロード
txhashでトランザクションをクエリして、コントラクトが正常にデプロイされたことを確認します。
code_idが1であることがわかります。
コントラクトコードはアップロードしましたが、まだインスタンス化する必要があります。
コントラクトのインスタンス化
コントラクトをインスタンス化する前に、CW-20コントラクトのinstantiate関数シグネチャを確認しましょう。
InstantiateMsgパラメータに注目してください。
選択したアドレスのプライベートキーを持っていることを確認してください。そうでないと、そのアドレスからのトークン転送をテストできません。また、選択したアドレスはチェーン上の有効なアドレス(過去に資金を受け取ったことがある)である必要があり、コントラクト実行時のガス支払い用の残高が必要です。
code_id 1とJSONエンコードされた初期化引数(選択したアドレス付き)およびlabelを指定してCLIコマンドを実行し、コントラクトをインスタンス化します:
http://localhost:10337/swagger/#/Query/ContractsByCodeで取得できます。
コントラクト情報のメタデータはhttp://localhost:10337/swagger/#/Query/ContractInfoまたはCLIクエリで取得できます。
コントラクトのクエリ
コントラクトの全状態は以下でクエリできます:トークンの転送
テストネット開発
localとtestnetの開発/デプロイの主な違いは以下の通りです:
- Injective Testnet Faucetを使用してテストネット資金をアドレスに取得できます
- Injective Testnet Explorerを使用してトランザクションをクエリし詳細を確認できます
injectived使用時にnodeフラグでテストネットRPCを指定する必要があります:--node=https://testnet.sentry.tm.injective.network:443chainIdとしてinjective-1の代わりにinjective-888を使用します:--chain-id="injective-888"- Injective Testnet Explorerを使用して、アップロードされたスマートコントラクトの
codeIdの確認やインスタンス化されたスマートコントラクトの検索ができます
injectivedの使用方法とtestnetに対するクエリ/トランザクション送信については、injectivedの使用ガイドを参照してください。