Mnemonic (Node JS)

import { mnemonicToWalletKey } from '@ton/crypto';
import {
  internal,
  SenderArguments,
  SendMode,
  TonClient4,
  WalletContractV5R1,
} from '@ton/ton';
import { getMsgHash } from './utils';

export const getWalletV5 = async (client: TonClient4, mnemonic: string[]) => {
  const keyPair = await mnemonicToWalletKey(mnemonic);
  const wallet = client.open(
    WalletContractV5R1.create({
      workchain: 0,
      publicKey: keyPair.publicKey,
      walletId: {
        networkGlobalId: -3,
      },
    })
  );

  const send = async (
    args: SenderArguments | SenderArguments[]
  ): Promise<string> => {
    args = Array.isArray(args) ? args : [args];
    const msg = wallet.createTransfer({
      seqno,
      secretKey: keyPair.secretKey,
      messages: args.map(arg => {
        return internal({
          to: arg.to,
          value: arg.value,
          body: arg.body,
        });
      }),
      sendMode: SendMode.PAY_GAS_SEPARATELY,
      timeout: Math.floor(Date.now() / 1000) + 60,
    });
    await wallet.send(msg);
    const msgHash = getMsgHash(wallet.address.toString(), msg);
    return msgHash;
  };

  return {
    keyPair,
    wallet,
    send,
  };
};

Last updated