TON自定义Jetton转账失败(错误码705)技术求助
Jetton转账失败(错误码705)求助
转账自行创建的Jetton时持续失败,返回错误码705,多次调整操作后问题仍未解决:
- 交易发送至Jetton钱包时被取消,返回退出码705,官方文档中无该错误码说明
- 交易哈希:
e6db98156ef6ca3102ea5c3182db2f5afff5319e5b5462a58159802919120baa
代码实现
const jettonMasterAddress = Address.parse(mint); const userAddress = Address.parse(payer); const mnemonicsString = process.env.MNEMONICS; if (!mnemonicsString) { throw new Error("MNEMONICS not found in environment variables"); } const keyPair = await mnemonicToWalletKey(mnemonicsString.split(" ")); const jettonMaster = client.open(JettonMaster.create(jettonMasterAddress)); const senderJettonWalletAddress = await jettonMaster.getWalletAddress( userAddress ); console.log("Public Key:", keyPair.publicKey.toString()); const wallet = WalletContractV4.create({ workchain: 0, publicKey: keyPair.publicKey, }); const contract = client.open(wallet); const state = await client.getContractState(wallet.address); const { init } = contract; const contractDeployed = await client.isContractDeployed( Address.parse(wallet.address.toString()) ); let neededInit: null | typeof init = null; if (init && !contractDeployed) { neededInit = init; } console.log("Состояние кошелька:", state); console.log(contract.address); const secretKey = keyPair.secretKey; for (const recipient of recipients) { try { const destinationAddress = Address.parse(recipient); const recaddress = await jettonMaster.getWalletAddress(destinationAddress); const jettonTransferBody = beginCell() .storeUint(0xf8a7ea5, 32) // Operation ID .storeUint(0, 64) // Query ID .storeCoins(lamports) // Amount to transfer .storeAddress(destinationAddress) // Recipient address .storeAddress(destinationAddress) // Sender address .storeUint(0, 1) // No forward payload .storeCoins(toNano("0.1")) // Forward amount .storeUint(0, 1) // No custom payload .endCell(); const seqno = await contract.getSeqno(); console.log("Current seqno:", seqno); const internalMessage = internal({ to: senderJettonWalletAddress.toString(), value: toNano("0.1"), bounce: true, body: jettonTransferBody, }); const body = wallet.createTransfer({ seqno, secretKey, messages: [internalMessage], }); const externalMessage = external({ to: wallet.address, init: neededInit, body: body, }); const externalMessageCell = beginCell() .store(storeMessage(externalMessage)) .endCell(); const signedTransaction = externalMessageCell.toBoc(); const hash = externalMessageCell.hash().toString("hex"); await client.sendFile(signedTransaction); const simulationResult = await client.simulate(externalMessageCell.toBoc()); console.log("Simulation Result:", simulationResult); console.log(`Transfer succesful: ${hash}`); } catch (error) { console.error(`Transfer error: ${recipient}`, error); } } res.json({ status: "success", message: "All TX is succesful.", });
已尝试的排查操作
- 调换地址顺序
- 修改转发金额
- 调整消息结构
- 创建/移除外部消息
内容的提问来源于stack exchange,提问作者Vadim Reutov
相关产品推荐
相关产品推荐

