還在使用 1.0 的用戶也別著急,我們特意為你準備了一份 2.0 遷移指南:
https://imtoken.fans/t/topic/19696
當你看到一筆交易,在 imToken 上顯示轉賬失敗的時候,通常是由以下三種原因造成的:
-
Out of gas I Gas 不足
-
Bad instruction I 指令錯誤
-
Reverted I 回退
而且轉賬支付的礦工費不會回退至你的錢包,原因當然不是因為 imToken「獨吞」了這筆費用,具體原因請你往下看 。
Out of gas( Gas 不足)
在 Etherscan 中查詢到的信息
在了解為什么會出現 Gas 不足的情況之前,我們先來回顧一下什么是 Gas。
打個通俗易懂的比喻吧,就像你開車必須要有汽油一樣,你在以太坊上轉賬也需要有 Gas。開車 ≈ 轉賬,汽油 ≈ Gas。如果你要從 A 地驅車前往 B 地,按照實時的交通情況,你需要消耗 200 升汽油。但你為這次行程只準備了 150 升汽油,那是否能到達 B 地呢?在現實生活中,大家肯定都知道,你一定是到不了的。同時雖然你沒到達 B 地,但是你的汽油卻已經消耗了。
那么回到區塊鏈的世界,也是同樣的道理。如果你要進行一筆轉賬,就要為這筆轉賬設置一個 Gas。如果你設置的過低,就會出現「汽車」沒到達目的地就沒「油」的情況,即交易失敗。失敗原因就是 out of gas(汽油不足)。同時,又因為礦工們已經進行了打包的操作,但在打包過程中發現 Gas 不足,導致這筆交易打包失敗了。礦工費仍然會被扣除,但這些礦工費都是由礦工們收取的,imToken 并不收你一分錢。
如何避免這種問題呢?別擔心,imToken 2.0 版本會為你設置合理的 Gas 值,讓你的交易被順利打包。當然你也可以選擇自定義設置,但請注意,如果設置不當的話就會損失礦工費哦。
Bad Instruction (指令錯誤 )
Bad instruction 字面意思是「指令錯誤」。出現這種提示的原因,大概率是因為智能合約的代碼本身就存在邏輯問題,從而導致合約在執行的過程中,出現「指令錯誤」。這就像一臺壞了的機器,你輸入一個指令,機器是不能正常運作的。這時候,我們該找誰解決呢?當然是智能合約的創建方,去修復這臺「壞了的機器」。另外轉賬的礦工費仍然會被礦工收走。
Reverted(回退)
以太坊上包含兩類賬戶,普通賬戶和合約賬戶。普通賬戶是由用戶通過私鑰控制,而合約賬戶是由部署在以太坊上的智能合約控制。
那么 reverted 是什么情況呢?reverted 其實是一個函數,用于立即中止合約的執行,并且把狀態回滾。雖然是智能合約,比一般的合約更「聰明」,但是有些合約在執行的過程中還是會「犯錯」的。
這聽起來是不是過于抽象,讓我們打個簡單的比方。出現 reverted 的一種可能情況:你的合約規定,當你輸入一塊錢,你可以得到一杯喜茶。但是這個合約并沒有檢查庫存里是否有足夠的喜茶。當店里沒有喜茶庫存的時候,后面來的人,即使它輸入一塊錢,也不能得到喜茶。這時候,你原本的函數 - 即輸入一塊錢就會得到一杯喜茶的函數就會失敗,它會發出錯誤的信息并回滾到當前的交易狀態。
看到這里,想必大家也已經明白了,出現 bad instruction 和 reverted,都是因為智能合約的問題,所以建議大家直接去找合約的創建者,也就是項目方。








