Shasta测试网发送USDT持续提示“Out of Energy”问题求助
问题描述
在Shasta测试网的账户中持有5000 TRX和等量USDT,尝试发送USDT时始终失败,返回结果为Failed - Out of Energy。
相关实现代码:
async function transferTronTRC20Token(amount, privateKey, contractAddress) { let url = TRON_API_URL; const tronWeb = new TronWeb({ fullHost: url, headers: {}, privateKey: privateKey, }); const options = { feeLimit: 10_000_000, callValue: 0 }; const tx = await tronWeb.transactionBuilder.triggerSmartContract( contractAddress, 'transfer(address,uint256)', options, [{ type: 'address', value: toWallet }, { type: 'uint256', value: amount * 1_000_000 }] ); if (!tx.result || !tx.result.result) { return console.error(`triggerSmartContract: ${tx}`); } const signedTx = await tronWeb.trx.sign(tx.transaction); if (!signedTx.signature) { return console.error(`trx.sign: ${signedTx}`); } return await tronWeb.trx.sendRawTransaction(signedTx); }
失败交易哈希:64b190a7064926a62a19c28ecef0454d50b2c38af4711093a111e845e9488664
使用的USDT合约地址:TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs
解决方法
- 开启TRX自动抵扣Energy:TRC20转账属于智能合约调用,需消耗Energy。若账户未冻结TRX获取Energy,必须开启TRX自动抵扣Energy功能。可通过Shasta测试网Tronscan页面手动开启,或在TronWeb实例配置中添加
allowUnlimitedContractSize: true参数。 - 校验
feeLimit参数:当前设置的10_000_000对应10 TRX,额度足够覆盖USDT转账的Energy消耗,但需确认单位为sun(1 TRX = 1,000,000 sun),避免因单位错误导致额度不足。 - 检查
toWallet变量合法性:代码中使用了未定义的toWallet变量,需确保其为合规的Tron base58格式地址。地址格式错误可能触发异常,即便错误提示为Energy不足。 - 手动冻结TRX获取Energy:在Shasta测试网Tronscan页面冻结少量TRX(如100 TRX),即可获得足够Energy用于合约调用,冻结的TRX后续可解冻取回。
内容的提问来源于stack exchange,提问作者Marco C. Stewart
相关产品推荐
相关产品推荐

