掃碼下載
BTC $77,989.61 +4.91%
ETH $2,456.63 +5.75%
BNB $645.38 +3.09%
XRP $1.50 +5.51%
SOL $90.24 +5.07%
TRX $0.3255 -0.33%
DOGE $0.1017 +4.67%
ADA $0.2655 +5.17%
BCH $458.83 +4.21%
LINK $9.82 +4.82%
HYPE $45.20 +2.92%
AAVE $117.89 +7.95%
SUI $1.03 +5.29%
XLM $0.1757 +7.25%
ZEC $343.74 +2.56%
BTC $77,989.61 +4.91%
ETH $2,456.63 +5.75%
BNB $645.38 +3.09%
XRP $1.50 +5.51%
SOL $90.24 +5.07%
TRX $0.3255 -0.33%
DOGE $0.1017 +4.67%
ADA $0.2655 +5.17%
BCH $458.83 +4.21%
LINK $9.82 +4.82%
HYPE $45.20 +2.92%
AAVE $117.89 +7.95%
SUI $1.03 +5.29%
XLM $0.1757 +7.25%
ZEC $343.74 +2.56%

為什麼以太坊Gas費突然大幅下降?

Summary: 此文將詳細講解以太坊交易費率機制以及在以太坊上發起交易會遇到的問題。
BlockBeats
2021-04-25 12:13:39
收藏
此文將詳細講解以太坊交易費率機制以及在以太坊上發起交易會遇到的問題。

本文發布於律動Blockbeats,作者:0x88。

前言:4月25日,數據顯示以太坊Gas費降50gwei左右,為2021年以來新低。此前由於gas費不斷增高,導致鏈上手續費一度逼近1500gwei。而最近以太坊的gas費驟降,原因或與以太坊提升區塊 Gas Limit 有關。4 月 22 日,以太坊將區塊 Gas Limit 從約 1250 萬 Gwei 提升至 1500 萬 Gwei,提升幅度約為 20%。那麼到底哪些因素會影響到以太坊的Gas費用呢?本文或將給你解答。

注:本文首次發表於2020年9月23日,其中部分數據均為當時數據, 閱讀時請注意截止今日發表時數據或有較大變動。


在 Uniswap 給 20 多萬個用戶地址撒錢的時候,也許不少人在開心之餘心裡想的都是,「這 gas 費也太高了。」

當天是以太坊歷史上值得紀念的一天,gas 建議最高達到了 1000 GWEI,這是當時歷史最高點。

在見證歷史、全民領空投的當天上午,不少人都遇到了關於 gas 費的問題,gas 費貴已經不是問題了,問題是 gas 費交到錢包建議的最大值也不能在計劃時間內成交。大家 Metamask 上顯示都是 pending,一圈一圈轉得讓人心煩。

為什麼你使用了默認的 gas 費金額,卻依然不能即時交易?此文將詳細講解以太坊交易費率機制以及在以太坊上發起交易會遇到的問題。

Gas 的邏輯

這個事要先從以太坊賬戶講起。

以太坊網絡中有兩類賬戶,外部賬戶(Externally Owned Account)以及合約賬戶 (Contract Account)。

外部賬戶是指用戶們所使用的賬戶,由私鑰持有者所控制。合約賬戶是指帶有應用邏輯的智能合約,由合約代碼所控制(往往是項目方所有)。用戶們在使用 DeFi 應用時,就是在用自己的賬戶與 DeFi 項目的智能合約進行交互。

各類賬戶之間可以隨意進行交互,錢包間可以進行轉賬,合約間也可以相互調用。每一次鏈上交互都需要消耗一定的計算量,計算量消耗的大小由計算難度所決定,而 Gas 就是計算量的計量單位。例如加法運算較簡單,需要消耗 3 個 Gas,除法運算相對複雜,需要 5 個 Gas。

每一單位的 Gas 都有其對應的價格,也就是 Gas 價格 (Gas Price),而 Gas 價格以 Wei 為單位。用戶需要購買 ETH 來支付 Gas 費用。1 ETH=1e18 Wei,而我們通常看到的單位 GWei 為 1e9Wei。通常,錢包軟件會通過歷史 Gas Price 對用戶將要發起的這筆交易的費用進行預估。

為了避免全節點趨於集中,追求架構去中心化的區塊鏈會嚴格限制每單個區塊的容量。例如比特幣的 Block Size Limit 以及以太坊的 Block Gas Limit。在律動 BlockBeats 撰文時,以太坊每單個區塊的 Block Gas Limit 約為 12,000,000 個 Gas,這也就是每一区塊總計算量的上限。平均每 15 秒出一区塊。當交易需求超過區塊容量時,用戶為了將自己的交易盡快被上鏈確認,就需要競爭每一区塊內的資源。此時用戶會對 Gas 進行競價,礦工會優先將 Gas Price 高的交易納入區塊。

通常用戶在進行轉賬時還會看到錢包會提高可以調節 Gas Limit 的選項。與 Block Gas Limit 不同,Gas Limit 是指對於一筆交易,用戶所能接受的 Gas 使用量上限。由於有時合約內可能存在漏洞,一筆交易會不停死循環地進行計算。如果沒有 Gas Limit,這筆交易會消耗盡用戶錢包內所有的 ETH。而礦工通常所收取的費用是按實際執行該交易時消耗的計算量 (Gas Used by Transaction) 進行結算的,而 Gas Limit 內剩餘的 ETH 就會回到用戶賬戶中。

所以我們可以得出,所消耗的 ETH 數量 (Ether Cost)= 交易費用 (Gas Fee/Transaction Fee) = 每筆交易所消耗的 Gas 數量 (Gas Used By Transaction) * Gas 價格 (Gas Price)。

了解了以太坊的手續費機制以及賬戶類型,我們來看看用戶在交易時常會碰到的問題。

待確認交易 (Pending)/加速交易?

每當用戶發起一筆交易時,交易會被放入一個交易池 (Mempool) 中。如上文提到,礦工會優先打包池子中 Gas Price 最高的交易(礦工的趨利性)。所以用戶設定的 Gas Price 決定了交易被打包執行的速度。在網絡擁擠的時候,由於 Gas Price 飆升,用戶的交易可能長時間處於待確認狀態。為了盡快將待定交易發出,用戶可以選擇支付更多的 Gas Price 來加速交易(律動注:理解為給礦工更多的酬勞以達到一個插隊的目的)。

加速交易又是怎麼操作的呢?為了更加詳細地理解加速交易的邏輯,我們需要明白另一個參數:Nonce。每一個賬戶發出的交易都會有一個按順序排列的交易編號--Nonce,從 0 開始,每次發起一筆轉賬,該賬戶的 Nonce 值會增加 1。

當用戶想要加速交易時,在以太坊錢包中,用戶可以選擇加速交易選項,這時會被要求支付更高的 Gas 費用,用戶同意之後相當於發起了一筆新的交易,而新的交易與待確認交易的 Nonce 值相同。

由於以太坊網絡規定,Nonce 值是連續不可跳躍的,且同一個地址每筆交易的 Nonce 值不可重複,所以礦工會打包新生成的交易,在新交易被打包確認之後,之前較低 Gas Price 的交易會廢棄掉。

若用戶不想加速交易,只要此交易還在交易池中未被打包,用戶可以隨時選擇取消交易。取消交易的邏輯與加速交易相同,用戶發起一筆 Gas Price 更高,但與待確認交易 Nonce 相同的交易,但交易金額變為 0,所以本質上,取消交易的成本與加速交易的成本一樣需要成本。

需要注意的是,在待定交易確認完成之前,後面的交易都需要排隊等候,所以用戶不要由於等候時間過長重複發起多筆交易。

交易失敗 (Fail)

律動 BlockBeats 發現,目前最常見的交易失敗原因是交易 Gas 已用盡 (Out of Gas)。也就是說,這筆交易的計算量超過了用戶所設定的 Gas Limit。一般在這種情況下,交易狀態將會顯示為失敗,並提示 Gas 已用盡,並且所支付的 Gas 不會被退還。

有些用戶可能會認為這並不公平,但本質上礦工已經在做功計算,只是算到一半 Gas 不夠了,所以礦工只能放棄繼續作業,但之前的工作需要被支付「工資」,因此之前交的 Gas 費不退大概也可以理解了。遇到這種情況,用戶只能重新再發起一次交易,並將此交易的 Gas Limit 上調。

另一種交易失敗的情況是,當用戶向智能合約發起交易轉賬,但某些錯誤導致無法執行合約時,交易會返回 Bad Instruction。

比如,當用戶參與類似於眾籌活動時,可能會發生下面這些情況:

額度已滿;

或用戶未被列入白名單;

或用戶超額認購代幣等情況。

此時,用戶所設定的 Gas Limit 將會被全部用盡,最終導致交易失敗。

不過以太坊拜占庭硬分叉後,增添了新的操作符 Reverted (EIP-140)。當合約中出現錯誤導致交易失敗時,交易將不會耗盡 Gas Limit 所設定的所有 Gas,合約將停止執行並退回剩餘 Gas 費用,同時告知用戶錯誤原因。

當然,如果用戶錢包中 ETH 的數量不足以支付 Gas 費用時,交易也會被判定為失敗。

在沒有熱點的時候,以太坊網絡一片祥和,所有的轉賬成本,包括時間和金額都還可控,但當風口到來,大家在網絡中就會遇到各種問題,gas 費的邏輯是新人使用錢包時最大障礙。

基本上,在 gas 費會遇到的所有問題,這篇文章都覆蓋到了,鏈上交易並不複雜,說簡單點,一切操作有問題,加錢就可以搞定。

這場運動目前看來,以太坊上流動性挖礦的熱潮暫時告一段落,這場運動除了創造出一片泡沫之外,也讓更多用戶開始習慣錢包的使用,錢包終於成了一個高頻使用工具。

而鏈上交易發生的問題其實也在為錢包的優化提供空間,為新人提供「一鍵加速」、「一鍵取消」這樣的服務或許將可以在越來越多的錢包中看到。

關聯標籤
warnning 風險提示
app_icon
ChainCatcher 與創新者共建Web3世界