FAILED — OUT OF ENERGY
OUT_OF_ENERGY:含义及解决方法
您的交易在执行过程中能量耗尽,网络因此中止了它并标记为 FAILED。没有任何资产被转出,但途中燃烧的 TRX 已经没了。解决只需大约一分钟:为地址准备 65,000 能量,然后重新发送。具体报错
您在哪里看到它
同一种失败,根据您查看的位置不同,显示的措辞也不同。TronScan
交易页面显示红色的 FAILED 状态,结果为 OUT OF ENERGY,代币转账部分为空。您的钱包
Trust Wallet、TronLink 等钱包通常会提示交易失败,或提示能量或 TRX 不足以支付网络手续费。您的代码
来自 tronweb 或 HTTP API 的回执在 receipt 中带有 result: 'OUT_OF_ENERGY',而交易本身的 result 为 FAILED。交易回执 — json{"ret": [{ "contractRet": "OUT_OF_ENERGY" }],"receipt": {"energy_usage": 0,"energy_fee": 5000000,"energy_usage_total": 50000,"net_usage": 345,"result": "OUT_OF_ENERGY"}}
energy_usage 为 0,表示该地址自身没有能量,每一单位都只能通过燃烧 TRX 支付。 energy_fee 的单位是 sun:5,000,000 sun 就是在一笔根本没有完成的转账上燃烧了 5 TRX,而它停在这里,是因为这正是手续费上限—— energy_usage_total 为 50,000,低于转账所需的 65,000。为什么会发生
三种原因,按常见程度排序
地址完全没有能量
能量没有每日免费额度——地址只能通过质押 TRX 或他人代理获得能量。没有能量时,每笔 USDT 转账都靠燃烧 TRX 支付;如果 TRX 余额或手续费上限不足以覆盖全部 65,000 能量,交易就会在中途失败。收款方原来是新地址
向没有 USDT 的地址转账约需 131,000 能量,而不是 65,000——合约需要新建一条余额记录。大多数交易所充值地址都是这种情况,所以转到交易所更容易失败。手续费上限设得太低
手续费上限(fee limit)限制一笔交易最多可燃烧多少 TRX。钱包的默认上限往往是一年前还算宽裕、如今已经不够的数值,交易一碰到上限就会停止。解决方法
现在该怎么做
确认是能量问题
在能量查询工具中查一下地址:它会显示当前能量与一笔转账所需数量的对比。获取能量
租用 65,000 能量一小时——3.03 TRX——如果收款方还没有 USDT,则租 131,000。等待能量代理
3–10 秒内到账,可在 TronScan 上该地址的“资源”标签页中看到。重新发送
重新发送同一笔转账。有了能量,网络会消耗代理来的能量,而不是燃烧 TRX。开发者
在造成损失之前发现问题
合约调用可以在签名前先模拟执行。估算结果以能量为单位返回,与账户的可用能量比较,就知道是否需要先补充——无需为一笔失败的交易付费来试错。公开 API 可以通过代码购买能量,这样第 3 步就会自动补充能量,而不是抛出错误。文档见 getgas.io/api/v1/docs;如有问题请发邮件至 support@getgas.io。
发送前先估算 — javascript// 1. What the transfer will cost, in Energyconst {energy_used: needed} = await tronWeb.transactionBuilder.estimateEnergy(usdtContract,'transfer(address,uint256)',{},[{type: 'address', value: recipient}, {type: 'uint256', value: amount}],sender,);// 2. What the address has right nowconst res = await tronWeb.trx.getAccountResources(sender);const available = (res.EnergyLimit ?? 0) - (res.EnergyUsed ?? 0);// 3. Top up before signing, never after OUT_OF_ENERGYif (available < needed) {throw new Error(`Need ${needed - available} more Energy — rent it first`);}
FAQ
常见问题
OUT_OF_ENERGY 是什么意思?
它表示交易已开始执行,耗尽了地址上的全部能量以及手续费上限允许燃烧的全部 TRX,但仍未完成。网络将其标记为 FAILED。转账没有发生,但能量和已燃烧的 TRX 都已消耗。
已燃烧的 TRX 能退回吗?
不能。TRON 燃烧这些 TRX,是为网络已经完成的计算付费,失败的交易也不例外。没有人——钱包、服务商、超级代表都不行——能退回它。唯一的办法是在发送前准备好能量。
我的 USDT 转出去了吗?
没有。失败的交易不会改变任何余额:您的 USDT 从未转出,收款方也没有收到任何东西。在 TronScan 上查看交易哈希——失败的转账会显示红色的 FAILED 状态,且没有代币变动。
为什么同样的转账昨天能成功?
质押 TRX 获得的能量在 24 小时内逐步恢复,所以一个地址可能够转一笔,却不够转第二笔。费用还取决于收款方:对方已持有 USDT 时需 65,000 能量,没有时约需 131,000。
提高手续费上限就能解决——这是好办法吗?
它能避免失败,但不会让转账变便宜:提高手续费上限只是让网络燃烧更多 TRX,一笔普通转账约 6.85 TRX。租用能量达到同样效果只需 3.03 TRX。
如何避免再次发生?
发送前先查询地址,能量不足时就租用。对于全天都在转账的钱包,自动补充会在余额低于阈值时立即购买能量,确保每笔转账开始前都有能量。