[入門篇六] 區塊鏈中交易要付的成本! 最完整Gas Fee 介紹與算法!

2023/08/14閱讀時間約 10 分鐘

前言

到目前為止,我們了解了區塊鏈的運作應用以及如何購買加密貨幣和創建加密貨幣錢包,接下來在我們開始鏈上操作之前,還有一個重要的觀念要知道! 那就是區塊鏈中的手續費! 大部分的區塊鏈只要你在上面執行任何動作都要付手續費,這邊我們主要介紹以太坊的Gas Fee,關於Gas Fee的功能、組成、特性以及如何在Metamask調整!




Gas Fee是什麼?

Gas Fee(燃料費用)如前言所說就是交易手續費! 不管你是轉帳或是跟Dapps互動,只要有跟區塊鏈交互就必須支付! 要注意的是根據你使用的Dapps不同,可能要完成一個動作中間需要多次手續費,這些都是你在實際操作時要注意的成本!

Gas Fee的功能

實際上Gas Fee是區塊鏈中的一個重要概念,還記得我們在第一篇區塊鏈是什麼中有提到的獎勵機制嗎? 除了挖礦獎勵,區塊鏈在設計上規定在做交易時必須支付手續費給礦工,獎勵機制使礦工願意投入計算資源和能源來驗證交易並保護區塊鏈的安全性,而另一方面它也可以防止交易在區塊鏈的濫用。

  1. 維持網路運作:在區塊鏈網路中,節點需要消耗計算資源和電力來處理交易和執行智能合約,為了鼓勵礦工維持網路的運作和安全性,礦工可以獲得使用者支付的 Gas Fee 作為獎勵。
  2. 防止濫用:Gas Fee 可以防止區塊鏈遭受惡意攻擊和濫用,在一個無需付費的系統中,攻擊者可以不斷發起無意義的交易或計算密集型操作,導致網路過載和資源耗盡。因此 Gas Fee也是在一定程度增加使用成本,就跟為什麼要挖礦算數學才能獲得區塊獎勵一樣,都是增加門檻,防止濫用。
  3. 避免競爭:之前也有提到,當使用者發出交易的時候其實是被廣播到區塊鏈網路的,那礦工要怎麼決定要打包哪筆交易呢? 由於Gas Fee是由使用者自訂的,礦工就會去搶Gas Fee(獎勵)高的交易,換句話說 Gas Fee高的 就會被優先處理,這樣的設計可以避免交易擁塞,使高優先級的交易能夠優先處理,增加交易的確認速度。



Gas Fee的特性

在了解Gas Fee的組成和算法前,我們先來了解Gas Fee在實際運作上有什麼特性!

波動性

在上面Gas Fee的功能有提到,Gas Fee 高的交易會被礦工優先處理,低的就會一直在交易池等待被打包,因此在熱門項目發售時,Gas Fee就會迅速飆高,原因是大家都拉高Gas Fee(手續費)想要搶先買到,一直到發售結束才會降下來。

Dune analysis by @hildobby

Dune analysis by @hildobby

一般情況通常周末以及台灣時間白天Gas Fee會比較低,通常說法是因為大部分的玩家都在國外,其他像熊市時Gas Fee低,牛市或幣圈暴雷的時候Gas Fee會超高,大家都在急著跑造成鏈上擁擠。

Dune analysis by @hildobby

Dune analysis by @hildobby

損失性

Gas Fee是有可能損失的! 通常發生在交易失敗的時候,比如你要買的東西沒了或是價格波動大的時候,可以想像是因為你已經送出這筆交易,而礦工實際上已經在幫你驗證了。損失的Gas Fee會根據你這筆交易的情況而不同,就是要看礦工幫你驗證到哪裡,但通常使用者無法得知,只有交易失敗的時候才會知道到底是全部損失還是部分損失。

如何避免損失呢? 或是說怎麼避免交易失敗? 正常使用上其實是不太會發生的,除非你去搶很熱門的項目或是使用機器人進行操作。那要避免也很簡單,開足夠高的Gas Fee來確保你搶的到,還可以藉此拉高所有人的成本,再來就是使用Flashbot網路,可能會有機會拿回你的Gas Fee。




Gas Fee 的基礎知識

在2021/8/5的以太坊倫敦升級之後,Gas Fee的設計迎來了重大改變,我們必須先承認Gas Fee雖然立意良好,但由於以太坊的底層設計(每秒大概只能處理 15筆交易)和它的熱門程度,導致惡性競爭,Gas Fee 居高不下,進而提高以太坊的使用成本。 我們先來了解一下跟Gas Fee相關的基礎知識!

Gas

在區塊鏈上,Gas(燃料)是一種衡量交易或智能合約執行成本的單位,代表了區塊鏈上進行一個操作所需的計算資源。我們做的每個操作都需要消耗一定數量的 Gas才能完成,而不同的操作所需的 Gas 數量是不同的,複雜操作通常需要更多的 Gas。所以有些寫得很爛的合約明明是一樣的功能,卻要使用更多的Gas。

EX: 我轉帳一次需要 5 單位的gas, 存錢到defi 要 10 單位的gas。

Gas Price

每單位Gas的價格就叫做Gas Price,Gas Price的單位我們是用Gwei, 1 Gwei = 0.000000001 ETH,大家也不用特別去換算,可以稍微記得大概10~20Gwei就算是Gas很低的時候,30~60還能接受,高於100就有點偏高了。

一般我們聽到大家說Gas 200 好高,這個200的指的就是Gas Price = 200 Gwei ! 一般我們不管在使用錢包或是用etherscan、第三方查gas的網站看到的都Gwei。

EX: 我轉帳一次需要 5 單位的gas, 每單位gas 的price 是20 Gwei的話,我最後就是要付100Gwei的手續費。

Source: etherscan

Source: etherscan




Gas Fee 的組成

這邊我們就可以來了解一下倫敦升級後到底會怎麼決定Gas Fee! 由於要付出多少手續費是我們可以自行決定的,付得多成交快,反之則慢。所以我們要先知道Gas Fee的組成才能去調整,Gas Fee主要會由四個東西來決定:

1. Gas Limit: 使用者最多願意為這筆交易付出多少Gas。

每次交易需要使用的Gas會根據合約或交易設計而不同,我們也不可能自己算,所以一般錢包會自動給你default 是21000 (Gas),沒執行完的Gas不會多算錢。

也不用太擔心這個數字太低會交易失敗,通常使用metamask的話它會自動幫你算,所以這個Gas Limit一般不用動它,畢竟第一:你也不知道完成這個交易需要多少Gas,亂動反而會讓你交易失敗。第二:他又不會多算你錢。所以作者玩到現在也沒調過。

2. Base Fee: 區塊鏈要跟使用者每單位gas 收的基本Gas Price。

就是一定要付的手續費,區塊鏈會動態調整現在交易每單位Gas基本要付多少Gas Price,主要是根據上一區塊的空間利用率自動調整,如果利用率超過 50%,則提升當前區塊的 Base Fee,反之降低,這就是倫敦升級後的新東西,而且這些區塊鏈跟我們收的手續費會被直接銷毀,利於形成通縮。

既然Base Fee是動態的,那如果Base Fee 飆高的話我會被收取高額手續費嗎? 答案是No! 倫敦升級後有一個Max Fee機制我們下面會說明。

3. Max Priority Fee: 使用者每單位Gas最高願意付給礦工多少Gas Price。

為了應付突然暴增的需求量,倫敦升級後依然保留了小費機制,也就是你最多願意給多少錢給礦工,給得越多你的交易的優先權就更高!

那為什麼是最多而不是一個定值呢? 一樣跟Max Fee機制有關,他只是先了解你願意給多少,在我們最後執行的時候,實際給礦工的錢會根據Max Fee和Base Fee來算出來。

4.Max Fee: 使用者每單位Gas最高願意付出多少Gas Price。

我們在設定的Gas Fee的時候,需要設定最高願意付出多少錢,由於Base Fee是動態的,為了避免被收高額Base Fee,我們需要告訴區塊鏈我們最多願意支付多少!

Max Fee >= Base Fee + Max Priority Fee

其實這個要說是公式不如說是一個概念,他包含了兩個訊息:

Base Fee > Max Fee

這個意思是說如果動態的Base Fee超過我最高願意付的錢的時候,那這筆交易就不會被立刻執行,而是會在交易池等到Base Fee下降。

raw-image

Base Fee ≤ Max Fee

當Base Fee小於等於Max Fee時這筆交易就會被執行,那給礦工的小費會怎麼算呢?

Priority Fee = min(Max Fee — Base Fee, Max Priority Fee)

我們直接用一個表格來看最直接:

raw-image

綠色是使用者自行設定,藍色是區塊鏈算的資訊。




Gas Fee的算法

到了這邊我們已經了解了所以會影響Gas Fee的因素,因此最後我們只需要把上面的數字按照公式算出來即可!

Gas Fee = Gas Limit * (Base Fee + Priority Fee)

raw-image

Gas Price 計算



倫敦升級後的Gas Fee

雖然這次的改動並不會讓Gas Fee下降,但卻提升了使用者體驗和安全性, 以下資料來自Whale:

更好的用戶體驗

當前的以太坊和比特幣都採用第一價格競拍機制,這種費用機制簡單但缺乏效率,其中最大的問題在於費用估計。 EIP-1559 試圖通過讓所有的交易盡可能支付相同的費用來解決該問題。多數情況下,用戶只需要決定是否發起交易,而無需考慮費用該如何設置。

可變區塊容量

區塊空間利用率往往是變化的,有些區塊空間閒置,而有些區塊塞滿交易。可變區塊容量將允許區塊大小隨實際需求變動。

更好的安全性

當區塊獎勵消失,僅靠交易費用不足以激勵礦工維護網絡安全。 EIP-1559 通過銷毀交易費用,即可在不增加總供應量的前提下,延長通過區塊獎勵激勵礦工的時間,從而保障網絡的安全性。

防止經濟抽象

簡單來說,即只允許使用 ETH 支付交易費用。如果用戶可用任何代幣支付交易費用,則可能會威脅到 ETH 的儲備地位。 EIP-1559 通過強制把 ETH 作為費用代幣來緩解這一問題。


Metamask 要怎麼設置

現在錢包都很方便,當我們送出交易時,他會直接幫你預測現在鏈上的Base Fee是多少,並且算完現在付多少Gas Fee 大概多久會成交,所以你懶得自己設定的話就可以直接選擇他們的設定就好。

raw-image

如果需要自行設定的話,Metamask採用的方式跟我們上面所講的有些出入,原因是如果按照我們的說法去設定Max Fee 和 Max Priority Fee,還要先去看現在Base Fee,再去手動算加上Max Priority Fee會不會爆掉。

因此後來就改成下圖右邊的算法,你只需要管你最多要給區塊鏈多少錢和給礦工多少錢,而且他下面也有鏈上的Base Fee以及Priority Fee資訊,相比與以前的UI更簡單明瞭!。

raw-image

有時候在搶東西的時候為了求快,我們希望可以先設定好,那要自行設定我們就必須知道現在鏈上手續費狀態,因此通常我們會去第三方網站來查看下一個Block要設定多少能最快成交,但如果是真的秒殺的項目,那就要靠經驗來設定了。

Source:Blocknative

Source:Blocknative


0xJoey
0xJoey
工程師也是區塊鏈愛好者,普及區塊鏈知識以及項目深度研究,提供大家最新的💎Web3教學 ⚙ 新科技分析實戰 🧘個人成長。期待能在這個領域跟大家一起成長!
留言0
查看全部
發表第一個留言支持創作者!