一文帶你輕鬆搞懂新版Metamask手續費設定機制!(2022/04/06撰寫)
前言
在2021年8月5日的晚上8點34分,以太坊區塊高度到達12,965,000,這也代表了EIP1559正式上線,而這改動讓原本的手續費從單純設定Gas Price變成需要設定Max Priority fee跟Max fee,那這兩者到底差在哪裡,到底該如何設定比較好呢?想知道怎麼設定,就要知道它的原理是什麼,所以我們首先先從手續費的機制開始了解吧!
手續費機制
大家都知道區塊鏈的安全維護都需要礦工的協助,而每個區塊都有容量上限,如果在同一時間湧入了大量的交易,礦工會無法即時處理所有交易,所以才出現了手續費Gas Fee的機制,當區塊鏈網路塞車時,礦工會優先選擇手續費調的更高的交易,所以大家在送出交易的同時,會附帶額外的Gas Fee,一方面是鼓勵礦工挖礦,另一個是讓區塊鏈的交易變的有規則。
而計算手續費的方式,最常聽到也直觀的的版本是Gas Limit * Gas Price ,也就是將你設置在Metamask的兩個數字相乘,假設Gas Limit為21000、Gas Price設置為8gwei,那你將會花費21000*8gwei=21000*0.000000008 Ether = 0.000168 ETH,可以想像Gas Limit是你執行這筆交易所要使用的所有汽油量,Gas Price則是每公升汽油的單價。(1 gwei = 10^-9 ETH)
但是這並不全然正確,最正確的手續費算法其實是Gas Used * Gas Price,Gas Used的高低取決於你程式的複雜度,一般標準的轉幣為21000Gas,而如果你要進行像是在Uniswap交易或是在Opensea購買NFT的動作,則可能會用到10萬~20萬Gas,前面提到的Gas Limit意思是你的手續費最大限制,為了防止某些惡意或錯誤合約,導致Gas超出預期,所以設定了一個最大的限制,只要你實際的Gas低於Limit就會成功執行,而實際用的Gas就會是你的Gas Used * Gas Price。
Gas Limit通常不需要自行調整,若為了節省手續費而調的太低,很有可能會出現Out Of Gas,那這樣不僅你的交易會失敗,而你付出的手續費也會浪費掉。
舊版手續費機制造成的問題
以上的方法看似簡單又有秩序,但其實有了一些潛在問題,試想一個問題:當目前你要進行一筆交易,去網站查詢目前的gas price發現是40gwei,而你為了要加速所以將Gas Price調到了45gwei,如果當時交易的人很多,大家都設定45或是更高的gwei,你的交易將會需要更多的時間才能交易成功,而有些更激進的人更是會設定100、500甚至1000gwei確保自己的交易可以成功,但這些多付的手續費全跑到礦工手上,實際上也不需要付這麼多,而部分人士也認為,由於大多數礦工採取「挖提賣」,越多的手續費到礦工手上,就會造成更大的市場拋壓。
EIP1559介紹
EIP1559就是為了解決上述問題才產生出來的,一方面是更換了使用者在設定手續費的機制,另一方面是降低礦工的收益,雖然有很多礦工跳出來抗議,但其實未來升級到ETH2.0是改用POS(Proof Of Stake),所以逐步的降低礦工收益,也是慢慢在推動ETH2.0的升級嘛,總之最後還是決定在倫敦硬分岔時納入EIP-1559。
其中的一個重大改動,手續費的機制從單純的Gas Price變成有基本費Base Fee跟額外的小費Tips Fee,在一個區塊計算時,大家的基本費都是一樣的,而礦工打包的先後順序則是看大家的額外小費多寡決定,當區塊塞車時,Base Fee會隨著區塊逐漸變高,當區塊交易變少時,Base Fee會逐漸減少,而當下的Base Fee可以去Etherscan做查詢。
那礦工的收益變少是哪個部分呢?剛剛上面有提到手續費機制有改變,而原先礦工的收益會是當下的固定區塊獎勵加上那一個區塊的總手續費,到了EIP1559之後,礦工的收益就只剩下Tips Fee的部分,其餘的Base Fee則會燒掉去限制ETH的總發行量。
EIP1559手續費設定
很多人在EIP1559剛上線時非常疑惑,因為原本只要設定一個參數(Gas Price),現在變成要設兩個參數(Priority fee & Max fee),但是只要搞懂了,就會發現其實自訂手續費並非難事!
第一個Priority fee其實就是前面提到的小費Tips Fee,換句話說你實際會花費的手續費就會是Base Fee+priority fee。
但由於Base Fee不能控制,有些人擔心Base Fee太高導致整體手續費花費過高,所以另一個Max Fee就是用來解決此問題,如果Base Fee + Priority Fee大於Max Fee,則這次手續費就是Max Fee的數值,有點抽象嗎?讓我們來舉幾個小例子!
(以下例子假設當下的Base Fee為50)
例子1:Priority Fee=2 ;Max Fee=100 => Gas fee=52 (50+2<100 所以取52)
例子2:Priority Fee=10;Max Fee=55 => Gas fee = 55 (50+10>55 所以取55)
例子3:Priority Fee = 100 ;Max Fee = 100 => Gas fee = 100(50+100大於100 所以取100)
例子4:Priority Fee = 100;Max Fee = 70 => (Priority Fee>Max Fee不合理,交易不給送)
手續費設定策略1 - 正常交易且當下手續費低
如果你想要正常地進行一筆交易,建議你可以先去Etherscan查詢目前Gas Fee,在你按交易的時候,Metamask會自己根據目前的Gas Fee自動調整參數,如果Gas在偏低的數值(50以下甚至20以下),就可以很放心的送出交易,你的交易很快就會上鏈,非常簡單也便宜,如果遲遲沒有成交,可以去Etherscan看目前設定的參數跟當下的Gas Fee是如何。
手續費設定策略2 - 正常交易但當下手續費高
如果你想要進行一筆交易,而當下的手續費又很高的話,這時就可以善用Max Fee的策略,直接把Max Fee調低並且送出交易,這樣你就可以去做自己的事情,等到手續費逐漸平穩,降到你的Max Fee以下,你就可以用更便宜的手續費去完成交易,並且不用時時刻刻盯著手續費。
舉例:小昀在Metamask有一些以太幣要轉到另一個錢包,但發現現在的手續費Base Fee在120以上,於是他將手續費設定為Max Fee=30,Max Priority Fee=2,接著就去做自己的事情,果然過了幾小時後,隨著手續費慢慢降低,他的交易就成功了,而手續費也是原本的1/4左右。
使用場景:拿到某NFT的白單而presale有24小時可以mint、網站領取空投、轉帳......等等不急迫成交之交易。
手續費設定策略3 - 需要花大量手續費跟別人搶
當有一個NFT很熱門,你預期他公售時會接近秒殺,這時為了成功購買到NFT,就要比別人快成交,而要比別人快,你就需要調高手續費(Max Priority Fee),但還是可以藉由Max Fee去調整一個你能夠接受的上限,以免花到比自己預期還更高的手續費。
舉例:有一個熱門NFT即將公售,ABCD四人都非常看好這個項目,而在公售前的手續費Base Fee為30,由於這個NFT有限量需要搶,所以在公售時,四人各設定了不同的參數......
A:Priority Fee=2 ;Max Fees=1000
B:Priority Fee=200 ;Max Fees=1000
C:Priority Fee=500 ;Max Fees=1000
D:Priority Fee=1000 ;Max Fees=1000
結果最後A因為Priority Fee設定的太少,所以交易持續的Pending直到NFT完售後過一大段時間才跳失敗,BCD都有成功的搶到,分別用了230、530、1000gwei去購買,D因為不會調整手續費所以兩個數值設一樣,但這樣反而會有浪費gas的可能,這樣的例子更可以凸顯出EIP1559的優勢~
使用場景:搶NFT、在DEX購買很熱門的幣等等需要急迫交易甚至是搶快的交易
交易小技巧1:事先設定好手續費 交易不再忙手忙腳 Enhanced Gas UI
在EIP1559剛出來的時候,很多人跳出來抗議說新版設定要改兩個數字,手動調整會花更多時間,速度可能會比只設定一個數字的慢,甚至還有人建議大家把版本往回切,這樣可以用舊的手續費設定方式送交易增加速度,而這些話MetaMask都聽到了,所以在v10.10.0的時候,更新了加強版的Gas設定介面,可以事先設定好Max Fee跟Max Priority Fee,這樣在實際交易時只要按送出就好了,詳細的做法如下:
1. 打開MetaMask設定,點選Experimental,將Enable Enhanced Gas Fee UI打勾
2. 隨意發送一筆交易,在設定Gas的畫面選擇自訂,接著設定你想要的參數並且底下打勾(有打勾未來的交易才會自動鎖定自定義的Gas)
3. 接著取消掉這筆交易,可以再發送一筆看看,確定設定Gas的地方已自動變成你設定好的Gas Fee
4. 記得未來若要改回正常交易,要把自定義Gas底下的打勾取消,或著是去設定把Enable Enhanced Gas Fee UI取消選取,才不會正常的交易也不小心用了高Gas去發送!
PS:若操作上有問題也可以看影片教學(取自天才毛克利 MaoKeli)
交易小技巧2:使用Flashbots Protect RPC 讓你不用擔心交易失敗浪費錢
常常聽到有人說自己手續費調高又沒搶到,浪費了好多手續費,但其實MEV的研發組織 Flashbots 有推出一個公開測試版的 Flashbots Protect,讓你在進行交易時,若此交易會失敗,則不會扣手續費。
做法也相當簡單,只要在MetaMask新增一個新的網路,這網路跟正常的Ethereum主網路一樣,你的餘額也會跟在以太坊一樣正常顯示,但是在送出交易時會送到Flashbots Protect的服務,目前不太確定跟正常交易的送出時間有沒有很大的差別,但能確定若交易失敗不會損失手續費(速度差異需再做實測,若有人知道歡迎在底下評論提出建議)
參數提供複製
網絡名稱:Flashbots Protect RPC
新的RPC URL:https://rpc.flashbots.net
鏈ID:1
Currency Symbol:ETH
區塊鏈瀏覽器:https://etherscan.io
常見問題
Q1:請問我要如何看到我的交易有沒有成功?
A1:若你有成功送出交易,可以去Etherscan的搜尋欄直接搜尋你的錢包地址,底下就可以看到目前交易狀況(Block 顯示Pending代表還在打包中, 若顯示數字(區塊高度)代表打包完成,可以點Txn Hash看這筆交易設定的所有參數)
Q2:我的交易遲遲不成交,想要更改我的手續費,要怎麼改?
A2:點進你MetaMask的交易紀錄,可以按下加速去更改你的手續費,但要謹慎更改,交易只能加速一次,若想要再加速則要再發送一筆相同交易並且設定Nonce(去MetaMask的設定點選進階>將Customize transaction nonce打勾,接著發送相同交易,修改相同Nonce並且調高手續費)。
Q3:我的交易卡住了,一直不成功,有什麼方法可以取消嗎?
A3:點進MetaMask的交易紀錄按下取消,並且將手續費調高,若還是無法取消,可以發送一筆空交易並設定卡住那筆交易的Nonce且將Gas調高(Nonce代表你這個錢包的交易紀錄,相當於個人存摺的每一筆資料,假設你在Nonce=30的交易卡住,可以發另一筆空交易並且也設定30,記得手續費要設定的比卡住的還高,在新的交易通過後,舊的交易就會因為Nonce重複自動被取消)
Q4:現在手續費好高!到底大家在搶什麼東西!
A4:可以去UltraSound看更詳細的Gas數據,把時間切換成1小時甚至是5分鐘就可以知道是哪個合約在搞事!
總結
- 你在送出交易時,需要的手續費為Gas Limit * Gas Price,而最後實際會使用的手續費為Gas Used * Gas Price,Gas Used的高低取決於你執行交易的複雜程度。
- 舊版手續費會全部當礦工獎勵,新版手續費則只有額外付的小費會給礦工,Base Fee會燒掉。
- 新版手續費需要設定Max Priority Fee跟Max Fee,前者代表額外多付的小費,後者是代表手續費能接受的最大值,Base Fee則是根據市場變動,不能做設定。
- 使用強化版手續費設定,可以先設定好要支付的手續費,在搶mint的時候就不用重新設定,加快成交速度。
結語
會發這篇文章其實是因為常常聽到朋友對於手續費調整這一塊感到疑惑,所以才打算寫一篇比較詳盡的文章,希望在看完這篇文章的大家都對於手續費有更進一步的認識,也更知道該如何調整手續費與看懂Etherscan鏈上數據,如果文章內容有任何意見或錯誤也非常歡迎在底下指正!
若你喜歡這篇文章可以幫我按拍手,如果覺得有用也可以分享給其他人,最後祝大家都可以交易順利,搶到自己喜歡的NFT!