由於以太坊已升級至 PoS 共識機制,因此本文中的礦工部分信息已過時,僅供參考。以太坊的最新共識機制介紹請點擊下方鏈接查看。
每個人小時候都有過想要做神秘偵探的夢想,不知道你內心深處是否還保持著這份好奇呢,抑或是已經被現實所淹沒。沒關係,今天 imToken 就和大家一起到區塊鏈的世界探個究竟。讓我們從最簡單的轉賬開始,一個個來擊破他們的失敗原因吧。
在開始正式轉賬之前,請確保你已經升級至 imToken 2.0 版本。事實上,部分的轉賬問題,完全是可以通過產品升級來避免的。這就像是舊汽車和新汽車的區別。你是想要繼續開特斯拉 model 1,還是立刻上手最新款特斯拉 model 3 呢?已經使用上 2.0 版本的朋友們,請在評論區毫無保留地分享你的流暢體驗!
還在使用 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,都是因為智能合約的問題,所以建議大家直接去找合約的創建者,也就是項目方。
Etherscan
最後,我們推荐一款以太坊神器 -- Etherscan。大家在淘寶購物的時候,都知道如何查看自己的訂單情況。在區塊鏈上,我們怎麼看呢?答案就是:Etherscan。這是一個以太坊區塊瀏覽器,只要輸入你的錢包地址或者交易號,就可以看到你所有的交易信息,趕緊試試吧!
Ethercan 的使用教程:https://imtoken.fans/t/topic/585