メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://injectivelabs-mintlify-jp-native-developers-first-half.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

wasmモジュールはInjectiveチェーン上にデプロイされたwasmスマートコントラクトとやり取りするための中核です。こちらでInjectiveチェーン上にデプロイされているスマートコントラクトの一覧を確認できます。
MsgUpdateCodeMsgStoreCodeはEthereumウォレット(例: Metamask)ではサポートされていません。

メッセージ

MsgExecuteContract(Transfer)

このメッセージはコントラクト関数を実行するために使用されます。以下ではCW20 specのtransferメッセージを例として使用します。
import { Network } from "@injectivelabs/networks";
import { MsgBroadcasterWithPk } from "@injectivelabs/sdk-ts/core/tx";
import { MsgExecuteContract } from "@injectivelabs/sdk-ts/core/modules";

const injectiveAddress = "inj1...";
const recipientAddress = "inj2...";
const contractAddress = "cw...";

const msg = MsgExecuteContract.fromJSON({
  contractAddress,
  sender: injectiveAddress,
  exec: {
    action: "transfer",
    msg: {
      recipient: recipientAddress,
      amount: 100000,
    },
  },
});

const txHash = await new MsgBroadcasterWithPk({
  privateKey,
  network: Network.Mainnet,
}).broadcast({
  msgs: msg,
});

console.log(txHash);

MsgExecuteContract(fundsの例)

シナリオによっては、スマートコントラクトの関数に依存してスマートコントラクトへトークンを転送する必要がある場合があります。CosmWasmの慣例に従い、funds フィールドを使用してユーザーのbankモジュールからスマートコントラクトへトークンを転送します。 以下は、testコントラクト関数を使用してMsgExecuteContractを送信する例です。
import { Network } from "@injectivelabs/networks";
import { toChainFormat } from "@injectivelabs/utils";
import { MsgBroadcasterWithPk } from "@injectivelabs/sdk-ts/core/tx";
import { MsgExecuteContract } from "@injectivelabs/sdk-ts/core/modules";

const injectiveAddress = "inj1...";
const contractAddress = "cw...";

const msg = MsgExecuteContract.fromJSON({
  contractAddress,
  sender: injectiveAddress,
  exec: {
    action: "test",
    funds: [
      {
        denom: "inj",
        amount: toChainFormat(1).toFixed(),
      },
    ],
  },
});

const txHash = await new MsgBroadcasterWithPk({
  privateKey,
  network: Network.Mainnet,
}).broadcast({
  msgs: msg,
});

console.log(txHash);

MsgExecuteContractCompat

前述の例のfunds配列およびmsgsオブジェクトをEIP712でパースする際にいくつかの互換性の問題があります。MsgExecuteContractはEIP712に適切に変換できず、Ethereumウォレットで署名できないため、EIP712と完全に互換性のあるMsgExecuteContractCompatを導入しました。 注: MsgExecuteContractMsgExecuteContractCompatの基盤となるメッセージは同じです。MsgExecuteContractCompatはEIP712互換である点だけが異なります。 以下は、testコントラクト関数を使用してMsgExecuteContractCompactを送信する例です。
import { Network } from "@injectivelabs/networks";
import { toChainFormat } from "@injectivelabs/utils";
import { MsgBroadcasterWithPk } from "@injectivelabs/sdk-ts/core/tx";
import { MsgExecuteContractCompat } from "@injectivelabs/sdk-ts/core/modules";

const injectiveAddress = "inj1...";
const contractAddress = "cw...";

const msg = MsgExecuteContractCompat.fromJSON({
  contractAddress,
  sender: injectiveAddress,
  exec: {
    action: "test",
    funds: [
      {
        denom: "inj",
        amount: toChainFormat(1).toFixed(),
      },
    ],
  },
});

const txHash = await new MsgBroadcasterWithPk({
  privateKey,
  network: Network.Mainnet,
}).broadcast({
  msgs: msg,
});

console.log(txHash);
Last modified on May 14, 2026