倫敦升級之後的 gas 費用計算

Chih-Cheng Liang
Taipei Ethereum Meetup
6 min readJan 18, 2022

2021 年 8 月 倫敦升級之後,手續費的規則改為鏈訂價的 base fee 加上給礦工的 priority fee。本文討論從使用者的角度如何計算與理解新的交易手續費機制。

感謝 Hsiao-Wei Wang, Jerry Ho, Kimi Wu, Yahsin Huang 的審閱、回饋與建議。

截圖是 MetaMask 錢包,左圖在送出交易之前,點選紅色箭頭處的「編輯」可進入右圖的進階選項

手續費的組成有兩個部分,一個是 gas cost ,單位就是 gas ,衡量的是運算成本。另一個是 gas price (或 fee per gas),是衡量每一 gas 使用者願意犧牲多少代價,來取得運算服務,單位是原生幣,但可能每種鏈都幫他們比較小單位的原生幣取了不同名字,以太坊上常用的單位是 Gwei ,1 Gwei = 0.000000001 ETH。一筆交易總共要花的成本就是 gas cost 乘上 gas price 。

這邊先不討論 gas cost 的部分,規則和以前都一樣。這邊方便討論我們可以固定 gas cost 是 1 gas 或是基本交易手續費 21000 gas 。

比較有變化的是 gas price 的部分。

新的公式是 gas price = base fee + priority

使用者要設定兩個 max 。這兩個值一般錢包軟體會幫使用者設定,但使用者可以自訂。理解哪些值是哪些角色決定的有助於避免混淆那個值的意義,所以即使錢包軟體會幫你設定,還是要當成是使用者設定的,錢包只是輔助執行使用者的意志。

  • max fee 是使用者願意對每一單位 gas 最多付出多少 Gwei
  • max priority 使用者願意對每一單位 gas 給礦工多少 Gwei 。

記得這兩個單位都是 Gwei

使用者的交易會不會被打包是礦工決定的。但一旦打包,區塊鏈會先吃第一口,礦工才可以吃剩的。

鏈吃第一口的時候不能吃超過 max fee,礦工吃剩的時候也不能吃超過 max priority。

鏈會根據短暫時間前系統負擔的程度決定要調高或調低想吃多少。這個名稱是 base fee ,單位也是 Gwei 。這個數字有些儀表板查得到。

嚴格來說 🐸

對於想嚴格了解細節的讀者,這邊截出部分 EIP-1559 的規格。否則可以直接進例題看看使否可以理解。

對於以下例題的部分,只會用到前兩行,用本文使用的名稱簡化之後長這樣。

例題一

(以下假設使用者都有足夠餘額,交易成功)

現在 base fee 114 Gwei 。使用者 max fee 設定 255 Gwei ,max priority 1 Gwei ,請問使用者為單位 gas 花多少 Gwei ?

答:

鏈要吃 114 Gwei ,使用者願意付到 255 Gwei ,所以鏈有辦法吃 114 Gwei 。

接著換礦工吃。鏈吃完剩下 141 Gwei ,但使用者只願意付給礦工 1 Gwei 。所以礦工只能吃到 1Gwei 。

結論: 這筆交易每 gas 的費用為 114+1= 115 Gwei

例題二

使用者設定同前, base fee 漲到 280 Gwei 。

答: 鏈想吃 280 Gwei 但使用者只想給 255 Gwei 。交易不被打包,繼續在交易池等。

例題三

base fee 114 Gwei ,max fee 255 Gwei ,max priority 255 Gwei

答: 鏈吃完 114 Gwei 之後,剩下的 141 Gwei 也會全給礦工吃掉。共花 255 Gwei

什麼時候會發生例題三的情況?

第一是區塊鏈使用量突然暴增的情況。這時鏈即使已經在調升 base fee ,但系統無法服務當下所有出價足夠的使用者。因此這些使用者使用 max priority 去爭取礦工優先打包。

在系統使用量穩定的時候, base fee 會調整到系統能服務所有願意出該價格以上的使用者。使用者只要給礦工很少的代價爭取打包即可(例如 1 Gwei)。

佛系使用者不用擔心前種用量暴增問題,睡個覺等熱鬧完了,系統使用量沒那麼高時,再來執行自己的交易即可。但下種情況可以注意一下

第二種情況是使用者使用了舊型的交易格式 (Legacy Transaction)。這會發生在沒針對倫敦升級更新的錢包軟體上。先前的錢包軟體只會設定 gasPrice 這個參數,這個參數在倫敦升級後會被詮釋為 max fee 和 max priority 的值。例如, 錢包軟體設定 gasPrice 為 255 Gwei ,則協定會翻譯為 max fee 是 255 Gwei ,max priority 也是 255 Gwei 。

使用舊交易格式對使用者是比較不利的,因為相較於新交易格式(Type 2 Transaction)可以把 max priority 設定成 1Gwei ,舊交易格式相當於允許礦工第二口可以把 max fee 吃到飽。

總結

倫敦升級之後的 EIP-1559 系統性的省下不少交易成本。對一般使用者較少發交易的使用者來說可能比較沒有感覺。但經常要發送交易的交易所則有許多數據, Coinbase 最近發布 報告 用實際案例分析省了多少手續費。也有新論文表示升級之後使用者平均而言等待的時間減少了。

對一般使用者而言,如果最近需要發交易的話,盡量找有支援新交易格式的錢包發,可以省不少手續費 。錢包有實作的話送交易時可以看到 max fee 和 max priority 等字樣。

橘色為升級之後的等待時間分佈圖,升級後使用者體驗的交易等待時間變短了

--

--