via ton
This section contains a guide for sending transactions in TON blockchain using @ton/ton
Ton package uses the sendTransfer
method to send a transaction to the blockchain. An example of the usage is on their README.
import { TonClient, WalletContractV4, internal, toNano } from "@ton/ton";
import { mnemonicToPrivateKey } from "@ton/crypto";
import { DEX, pTON } from "@ston-fi/sdk";
const client = new TonClient({
endpoint: "https://toncenter.com/api/v2/jsonRPC",
});
const mnemonics = Array.from(
{ length: 24 },
(_, i) => `your mnemonic word ${i + 1}`
); // replace with your mnemonic
const keyPair = await mnemonicToPrivateKey(mnemonics);
const workchain = 0;
const wallet = WalletContractV4.create({
workchain,
publicKey: keyPair.publicKey,
});
const contract = client.open(wallet);
const dex = client.open(new DEX.v1.Router());
// swap 1 TON for a STON but not less than 0.1 STON
const txArgs = {
offerAmount: toNano("1"),
askJettonAddress: "EQA2kCVNwVsil2EM2mB0SkXytxCqQjS4mttjDpnXmwG9T6bO",
minAskAmount: toNano("0.1"),
proxyTon: new pTON.v1(),
userWalletAddress: wallet.address.toString(),
};
// you can instantly send the transaction using the router method with send suffix
await dex.sendSwapTonToJetton(contract.sender(keyPair.secretKey), txArgs);
// or you can get the transaction parameters
const txParams = await dex.getSwapTonToJettonTxParams(txArgs);
// and send it manually later
await contract.sendTransfer({
seqno: await contract.getSeqno(),
secretKey: keyPair.secretKey,
messages: [internal(txParams)],
});