跳到主要內容

OUT_OF_ENERGY 是什麼?交易失敗怎麼查

OUT_OF_ENERGY 表示合約在完成前已用掉 fee_limit 允許的全部 Energy,已花掉的 Energy 官方明說不退。重送前先查收據,分清是資源不足、上限太低還是別的錯誤碼。

內容更新: · 繁體中文

簡短回答

OUT_OF_ENERGY 是合約還沒執行完,就已經用掉 fee_limit 允許的全部 Energy。官方寫得很直接:已經花掉的 Energy 不退還。所以重送之前要先查收據,弄清楚缺的是資源、是上限,還是根本不是這個錯。

為什麼會卡在這裡

fee_limit 是呼叫方自己設的上限,以 sun 計價,限制的是這次呼叫最多能由呼叫方負擔多少 Energy;主網上限是 15,000 TRX,由鏈上參數 #47 決定。

Energy 這一側沒有免費額度,只能質押 TRX 或接收他人委託取得。可用的 Energy(自有或委託)不夠時,網路可以按固定費率從發送方餘額燒 TRX 補上——但這條退路一樣受 fee_limit 與其他執行條件限制,不是有 TRX 就一定過得去。

兩邊合起來看,OUT_OF_ENERGY 通常是「上限設太低」或「可用 Energy 與 TRX 都不夠」,不是同一件事,處理方式也不同。

USDT 轉帳失敗、能量不足時

USDT 轉帳是合約呼叫。依官方例子,收款地址已有 USDT 時約需 64,000 Energy,沒有 USDT 時約需 130,000 Energy,實際數字會隨 USDT 合約的 energy_factor 浮動。

可用 Energy 不到這個量時,差額會按目前每單位 100 sun(0.0001 TRX)從發送方燒 TRX 補上。fee_limit 限制的是這次呼叫方總共能負擔的 Energy 預算,包含用掉的既有 Energy 和燒 TRX 的部分;預算用完時合約仍未執行完成,或 TRX 不夠補,交易就會失敗,已用掉的 Energy 不退。所以租能量要先看收款地址有沒有 USDT,份數不夠一樣可能失敗。用量判斷見 Energy 試算。

先看錯誤碼,別急著重送

不同的失敗碼代表不同問題,官方的說明各自獨立:

用TxID 查詢開該筆交易,看結果碼、Energy 用量與費用組成;再用地址查詢確認發送地址當下的可用 Energy 與委託紀錄——租來的能量可能已經用掉,也可能已被出借方收回。

官方建議的處理方向

TRON 文件對 OUT_OF_ENERGY 列了幾條路:以實際規模重新估算用量、提高 fee_limit、確認合約的 consume_user_resource_percent 沒把成本都推給呼叫方、檢查該合約有沒有動態能量模型的加成,以及補 TRX、質押或租用能量。前幾項要用官方 API 操作,屬於開發者側,指令見下方來源。

一般使用者能做的是後兩項:先確認可用 Energy 與 TRX,再看錢包有沒有讓你調整費用上限。上面的數值都是鏈上參數,會被提案調整,以你查詢當下的官方文件與收據為準。

一件不要做的事

不要沒查收據就反覆重送。失敗的交易一樣會消耗資源,OUT_OF_ENERGY 已花的 Energy 不退,重送只是再燒一次。核對完仍對不上,帶著 TxID 從官方支援入口問。

延伸閱讀

相關指南

資料來源