How should we write code if we want to transfer Jetton with a wallet already connected with tonconnect-ui?
This is tonweb library typing error.
Need replace tokenAmount to jettonAmount.
I'm trying to send jettons from one wallet to another. For this I use the library tonweb.
Whenever i send transaction, i get a zero amount of tokens. Why is this and how can i fix it?
My code looks like:
import Env from "@ioc:Adonis/Core/Env";
import TonWeb from "tonweb";
import {mnemonicToWalletKey} from "@ton/crypto";
const mnemonic = Env.get('TON_MNEMONIC');
const tonweb = new TonWeb(new TonWeb.HttpProvider('https://toncenter.com/api/v2/jsonRPC', {apiKey: 'e................4fef9'}));
export const SendTokens = async () => {
const keyPair = await mnemonicToWalletKey(mnemonic.split(" "));
const WalletClass = tonweb.wallet.all.v4R2;
const wallet = new WalletClass(tonweb.provider, {
publicKey: keyPair.publicKey
});
const address = await wallet.getAddress();
console.log("my address", address.toString());
const jettonMinter = new TonWeb.token.jetton.JettonMinter(tonweb.provider, {
adminAddress: address,
jettonContentUri: "",
jettonWalletCodeHex: "GEM",
address: "0:e609c3e241e054e3f078a974e7cd46ea49bcb3e3d8ac4d48c658d27970edb072"});
const data = await jettonMinter.getJettonData();
console.log('Total supply:', data.totalSupply.toString());
console.log('URI to off-chain metadata:', data.jettonContentUri);
//console.log('Owner address:', data.adminAddress(true, true, true));
const jettonWalletAddress = await jettonMinter.getJettonWalletAddress(address);
console.log("jetton wallet address", jettonWalletAddress.toString())
const jettonWallet = new TonWeb.token.jetton.JettonWallet(tonweb.provider, {
address: jettonWalletAddress
});
const jettonData = await jettonWallet.getData();
console.log("minter address", jettonData.jettonMinterAddress.toString());
console.log('Jetton wallet address:', address.toString(true, true, true));
const seqno = (await wallet.methods.seqno().call()) || 0;
console.log('Secno:', seqno);
const comment = new Uint8Array([... new Uint8Array(4), ... new TextEncoder().encode('transfer GEM 3')]);
await wallet.methods.transfer({
secretKey: keyPair.secretKey,
toAddress: jettonWalletAddress, // address of Jetton wallet of Jetton sender
amount: TonWeb.utils.toNano('0.05'), // total amount of TONs attached to the transfer message
seqno: seqno,
payload: await jettonWallet.createTransferBody({
queryId: seqno,
tokenAmount: TonWeb.utils.toNano('0.05'), // Jetton amount (in basic indivisible units)
toAddress: new TonWeb.utils.Address("0:19b46402e5e4c173ea84d8125345f67fe0a07f113588ab897408231d482044b1"), // recepient user's wallet address (not Jetton wallet)
forwardAmount: TonWeb.utils.toNano('0.01'), // some amount of TONs to invoke Transfer notification message
forwardPayload: comment, // text comment for Transfer notification message
responseAddress: address // return the TONs after deducting commissions back to the sender's wallet address
}),
sendMode: 3,
}).send()
}
zero transactions in viewer https://tonviewer.com/EQAxLtVoJedFWnlIw0Z35Bjmw3HSY8D9fg-mAxwj5AJ_3Us-/jetton/EQDmCcPiQeBU4_B4qXTnzUbqSbyz49isTUjGWNJ5cO2wcs5s
How should we write code if we want to transfer Jetton with a wallet already connected with tonconnect-ui?
This is tonweb library typing error.
Need replace tokenAmount to jettonAmount.