-
Notifications
You must be signed in to change notification settings - Fork 19
Open
Description
I am trying to swap jetton to ton programmatically using the "Swapping Jettons" example here: https://docs.dedust.io/docs/swaps. For some reasons it doesn't work and I have no idea why. 0.3Ton gets sent out and 0.2999Ton is immediately returned.
This is my code:
const tonClient = new TonClient4({ endpoint: "https://mainnet-v4.tonhubapi.com" });
const publicKey = keyPair.publicKey;
const privateKey = keyPair.secretKey;
const walletContract = tonClient.open(
WalletContractV4.create({
workchain: 0,
publicKey,
}),
)
const sender = walletContract.sender(privateKey)
const JETTON_ADDRESS = Address.parse('EQBlqsm144Dq6SjbPI4jjZvA1hqTIP3CvHovbIfW_t-SCALE');
const factory = tonClient.open(Factory.createFromAddress(MAINNET_FACTORY_ADDR));
const jettonRoot = tonClient.open(JettonRoot.createFromAddress(JETTON_ADDRESS));
const jettonWallet = tonClient.open(await jettonRoot.getWallet(sender.address));
const jettonVault = tonClient.open(await factory.getJettonVault(JETTON_ADDRESS));
const TON = Asset.native();
const JETTON = Asset.jetton(JETTON_ADDRESS);
const pool = tonClient.open(await factory.getPool(PoolType.VOLATILE, [JETTON, TON]));
if ((await pool.getReadinessStatus()) !== ReadinessStatus.READY) {
throw new Error("Pool (TON, JETTON) does not exist.");
}
const amountIn = BigInt(Math.floor(jettonIn)); // 50 SCALE
await jettonWallet.sendTransfer(sender, toNano(0.3), {
amount: amountIn,
destination: jettonVault.address,
responseAddress: sender.address, // return gas to user
forwardAmount: toNano(gasAmount),
forwardPayload: VaultJetton.createSwapPayload({ poolAddress: pool.address }),
});
`
This is the transaction on chain:
https://tonviewer.com/transaction/b229c7b02616f8b698fa1efa602fb89070f9fd77fa7c49fde6c11d00d01f0d8e
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels