Contract-Invocation
發送 OMG 令牌失敗並出現錯誤指令
我正在嘗試使用 MyEtherWallet 的離線交易發送 OMG 代幣並收到類似這樣的錯誤:0x084284cb471d3b413ebbbcc5373f1108e3c084e57529f2cfaf8c490117c1a9d1
那裡的gas限制是300k,應該足夠了。我說應該足夠了,因為這似乎是一個成功的交易:0xcbd89114d75a6246ed8060dbd2b042240acc4dd35ed2a0e3e894a30982133503。它的“txn 使用的 Gas”只有 22k。
有什麼方法可以找出失敗的地方嗎?
請參閱Geth DebugTrace。這也表明它在執行過程中只消耗了一點點氣體,然後就失敗了。
此外,如果它因剩餘的氣體過多而失敗,為什麼它要向我收取滿額的氣體呢?
錯誤指令是一個通用的錯誤消息,取決於合約和交易,它可以是任何東西。例如,來自 tx 0x084284cb… 的錯誤是在嘗試發送比當時餘額(大約 820)更多的令牌(大約 1481)時引起的。
目前在發生錯誤時支付全部 gas 的行為是為了阻止攻擊網路的不良合約。但實際上人為錯誤非常普遍,因此在即將到來的分叉中,這種錯誤不會消耗全部gas。但在此之前,您必須將交易氣體設置為合理的值。一個好的錢包應該設置一個好的近似值。