Skip to content

03TransactionsMsgBroadcaster

Ivan Angelkoski edited this page Jun 12, 2023 · 5 revisions

⚠️ The Docs have been moved to https://docs.ts.injective.network/transactions/msgbroadcaster ⚠️

The MsgBroadcaster abstraction class is a way to broadcast transactions on Injective with ease. With it, you can just pass a Message that you want to be packed in a transaction and the signer address and the transaction will be prepared, signed and broadcasted.

MsgBroadcaster + Wallet Strategy

This MsgBroadcaster is used alongside the Wallet Strategy class for building decentralized applications.

To instantiate (and use) the MsgBroadcaster class, you can use the following code snippet

import { MsgBroadcaster } from "@injectivelabs/wallet-ts";
import { MsgSend } from "@injectivelabs/sdk-ts";
import { BigNumberInBase } from "@injectivelabs/utils";

export const msgBroadcastClient = new MsgBroadcaster({
  walletStrategy /* instantiated wallet strategy */,
  network: NETWORK,
})(
  // Usage Example
  async () => {
    const signer = "inj1...";

    const msg = MsgSend.fromJSON({
      amount: {
        denom: "inj",
        amount: new BigNumberInBase(0.01).toWei().toFixed(),
      },
      srcInjectiveAddress: signer,
      dstInjectiveAddress: "inj1...",
    });

    // Prepare + Sign + Broadcast the transaction using the Wallet Strategy
    await msgBroadcastClient.broadcast({
      injectiveAddress: signer,
      msgs: msg,
    });
  }
)();

MsgBroadcaster with Private Key

This MsgBroadcaster is used by passing a private key (mostly used for CLI environments).

import { MsgBroadcasterWithPk } from "@injectivelabs/wallet-ts";
import { MsgSend } from "@injectivelabs/sdk-ts";
import { BigNumberInBase } from "@injectivelabs/utils";

export const msgBroadcasterWithPk = new MsgBroadcasterWithPk({
  privateKey: `0x...` /** private key hash or PrivateKey class from sdk-ts */,
  network: NETWORK,
})(
  // Usage Example
  async () => {
    const signer = "inj1...";

    const msg = MsgSend.fromJSON({
      amount: {
        denom: "inj",
        amount: new BigNumberInBase(0.01).toWei().toFixed(),
      },
      srcInjectiveAddress: signer,
      dstInjectiveAddress: "inj1...",
    });

    // Prepare + Sign + Broadcast the transaction using the Wallet Strategy
    await msgBroadcasterWithPk.broadcast({
      injectiveAddress: signer,
      msgs: msg,
    });
  }
)();

⚠️ DOCUMENTATION ⚠️

Clone this wiki locally