コードアップロードプロポーザルの提出
このセクションでは、スマートコントラクトコードプロポーザルの提出方法と投票方法を説明します。 Injectiveネットワーク参加者はスマートコントラクトのデプロイを提案し、ガバナンスで投票して承認できます。wasmdの認可設定はオンチェーンガバナンスによって管理されるため、コントラクトのデプロイは完全にガバナンスによって決定されます。
このため、ガバナンスプロポーザルがInjectiveメインネットにコントラクトをアップロードするための最初のステップとなります。
injectivedを使用してチェーンにコードをアップロードするガバナンスプロポーザルを開始する例:
injectived tx gov submit-proposal wasm-storeコマンドはWasmバイナリプロポーザルを提出します。ガバナンスで承認されるとコードがデプロイされます。
インスタンス化パーミッションを設定する2つの重要なフラグinstantiate-everybodyとinstantiate-only-addressについて説明します。デフォルトでは、誰でもコントラクトをインスタンス化できます。
コントラクトのインスタンス化(ガバナンス不要)
ほとんどの場合、インスタンス化のために別のガバナンスプロポーザルを提出する必要はありません。injectived tx wasm instantiateで単にインスタンス化してください。ガバナンスプロポーザルが必要なのはコントラクトのアップロードのみです。
ただし、--instantiate-everybodyフラグがfalseに設定され、かつ--instantiate-only-addressフラグがガバナンスモジュールに設定されている場合を除きます。--instantiate-everybodyのデフォルト値はtrueであり、この場合injectived tx wasm instantiateでパーミッションレスにインスタンス化できます。
injectived tx wasm instantiateの例:
コントラクトのインスタンス化(ガバナンス経由)
前述の通り、メインネットでのコントラクトインスタンス化パーミッションはコードアップロード時に使用されたフラグに依存します。デフォルトではパーミッションレスに設定されており、genesisのwasmd Injectiveセットアップで確認できます:
--instantiate-everybodyフラグがfalseに設定されている場合、コントラクトのインスタンス化はガバナンスを経由して行う必要があります。
Injectiveテストネットは開発者が容易にコントラクトをデプロイできるよう、デフォルトでパーミッションレスです。
