10

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

 2 years ago
source link: https://medium.com/taipei-ethereum-meetup/eip-1559-tx-fee-232576cc11dc
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

截圖是 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 的規格。否則可以直接進例題看看使否可以理解。

1*K2MIDjN8AgSzSy_kmfxaaw.png?q=20
eip-1559-tx-fee-232576cc11dc

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

1*uZEvqE-Fp_B-kxRMF5oGYA.png?q=20
eip-1559-tx-fee-232576cc11dc

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

現在 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 等字樣。

0*9Di5OtSzVYyOYjg8?q=20
eip-1559-tx-fee-232576cc11dc
橘色為升級之後的等待時間分佈圖,升級後使用者體驗的交易等待時間變短了

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK