小科普:以太坊礦工費是什麼?怎樣避免交易失敗?

買賣虛擬貨幣

隨著defi熱潮的襲來,以太坊的礦工費也達到了歷史新高,之前轉賬幾分錢的時代已經遠去,隨之而來的是動輒上百元的交易費用。


很明顯,高昂的礦工費使你忍不住點進來,妄圖透過學習科普來節省礦工費。

不存在的,這篇文章頂多能讓你花錢花的更明白點。





什麼是以太坊?


“以太坊是一個分散式的平臺,可以執行智慧合約:應用程式按照既定程式執行,不會出現停機,審查,欺詐或第三方干擾的可能性。這些應用程式執行在定製構建的區塊鏈上,這是一個功能強大的全球共享基礎架構,可以透過數字流轉來代表財產的所有權。”



以太坊為什麼要有礦工費?


大家可以把太坊看作是一個龐大的計算機,每天會有紛繁的計算髮生在以太坊上,但是大家都知道區塊鏈上的資源是稀缺的,為了避免無用的操作佔用鏈上計算資源,所以以太坊最初的設計就是一個有償使用的平臺,使用者每一步的操作都需要付出相應的礦工費,這樣既避免了主鏈遭受垃圾操作的攻擊,又可以把費用獎勵給維護區塊鏈的礦工們,一舉兩得。



以太坊礦工費是怎麼計算的?


提到礦工費,很多人會脫口而出,就是gas唄!目前的確是有很多人將gas和礦工費直接畫等號來使用的。但嚴格意義來說,這種定義是不準確的。


在以太坊區塊鏈中,gas是衡量計算量的特殊單位,它用來測量一個操作或一組操作需要執行多少工作量。比如,計算一個 keccak256 加密雜湊函式,每次計算雜湊時需要 30 個 gas。


因此gas不是幣,不是錢,不是費用,所以和礦工費並不是一個東西。


那gas和礦工費有什麼關係呢?看下面這一條公式:


礦工費= gas price * gas used    用人話說,就是 :


礦工費=gas 價格*gas 用量


下面我們就來拆開講一下公式裡的一些概念。


gas price 指你願意為單位gas支付多少以太坊,這是最吸引礦工的數字,也是決定你的交易完成快慢的決定性因素,因為礦工為了獲得更多的礦工費,總是會優先為出價更高的交易服務。


所以在轉賬前一定要設定合理的 gas price,過低會長時間得不到處理,或者被移除交易,導致轉賬失敗。


gas used 是指你的這次操作消耗了多少gas,但在日常轉賬時,我們通常見不到gas used在哪裡設定,這是因為只有在轉賬完成後,我們才能看到這筆交易具體使用了多少gas。


我們在轉帳前可以設定的叫做gas limit,即gas 限額,意思是你願意為這筆操作最多使用多少gas,gas limit 和 gas used的特別像你點外賣,你預計自己可以吃多少和你實際吃多少的關係。


設定完gas limit進行轉賬後,會有以下幾種情況:


1、gas limit = gas used,即預設的 gas 和用掉的 gas 完全一致。


2、gas limit > gas used,即預設的gas沒有完全消耗完。


3、gas limit < gas used,即預設的gas不夠實際使用的。


第一種,交易成功。

第二種,交易成功。還有個好訊息是,沒有消耗完的gas會以eth的形式返回,並不會造成損失。

第三種,交易失敗。還有個壞訊息是,已經消耗的gas不會退回,損失慘重。


gas price決定你的交易走多快(多快被礦工打包),

gas limit 決定你的交易可以走多遠(可以執行多麼複雜的合約)。


基礎科普完了,你們大大的腦袋裡肯定有更大的疑惑,繼續往下看,我猜你的問題就在下面。



怎樣合理設定gas price 和 gas limit?


如果你是一個普通使用者,那麼你不需要考慮這些問題。譬如位元派這樣的錢包,在轉賬時會根據當前網路狀態幫你自動計算推薦礦工費,為你設定當前最合理的gas price 和 gas limit。


如果你是一個不甘心做普通使用者的普通使用者,這裡可以給你一些擴充套件網站,可以琢磨下,合理的gas price 和 gas limit是怎樣根據大資料推算出來的https://ethgasstation.info/index.php。另外自定義gas price 和 gas limit的功能通常都在高階選項裡。



怎樣合理降低礦工費?


前面已經學到了,


設定的礦工費= 設定gas price * 設定gas limit

雖然把gas price 和 gas limit 任意一個數值降低你的礦工費的值都會降低,但我深切的叮囑你,不要隨意降低 gas limit 。正確降低礦工費的方法應該是調低 gas price。


降低 gas limit 不會給你省錢,只會徒增你交易失敗的概率,同時你也知道,交易失敗後的礦工費是不會退還的,所以千萬不要隨意降低 gas limit



為什麼交易在區塊鏈上會失敗,提示 out of gas?


out of gas 就是指上面的第三種情況,gas limit < gas used,即預設的gas不夠實際使用的,這種情況在普通轉賬時幾乎不會發生,通常發生在與複雜只能合約互動的情況下


通常來說,在執行復雜合約時,合約應該向執行者反饋此次操作大約需要多少gas,然後錢包得到此反饋後會進行設定,因此,此類失敗的原因通常有兩個:


1、智慧合約不夠健全,專案方太應付,沒有給返回 gas limit 值

2、你用的錢包不太聰明的樣子,沒看懂對方返回的 gas limit 值


解決辦法: 1、手動給 gas limit 調高點,通常200000—300000就可以應付當前大多數的defi合約交易。2、換位元派。



設定 gas limit 是不是越高越好?


前面學到了,當gas limit > gas used 時,即預設的gas沒有完全消耗完,多設定的的部分gas還會返還給我們。


聰明的小夥伴靈機一動,那我設定儘可能大的gas limit豈不是萬無一失了?反正用不完的會還我。實際上過高的gas limit並不會提高你的交易速度。反而會給你帶來風險。


以太坊每個區塊可以處理的交易也是有限的,因此礦工需要在有限的交易數中獲得更高的收益,而過高的gas limit在礦工眼中屬於畫大餅的行為,部分的挖礦策略中會後置處理gas limit過高的交易。


此外,gas limit的存在可以有效的防止一些合約死迴圈惡意消費你的礦工費,如果你設定了過高的gas limit,恰巧又碰到了有問題的合約,那麼你gas將會一直消耗下去,直到設定的gas limit將會被消耗光,又是損失慘重的一天。



設定礦工費時候出現的gwei是什麼?


以太坊的最小單位是 wei。1 個以太幣 = 10 的 18 次方 wei,此外,以太坊還有其他的單位:


kwei(babbage)= 10 的 3 次方 wei

mwei(lovelace)= 10 的 6 次方 wei

gwei(shannon)= 10 的 9 次方 wei

microether(szabo)= 10 的 12 次方 wei

milliether(finney)= 10 的 15 次方 wei

ether = 10 的 18 次方 wei


括號裡的部分是每個單位的別名。

在以上這些單位裡,通常計算 gas 價格時使用的都是 gwei。



以上


礦工費真不是錢包收的!礦工費真不是錢包收的!礦工費真不是錢包收的!



你們的派派

2020年9月14日


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;