Gas 是以太坊協議中的計量單位,它用來計量在以太坊區塊鏈上執行具體操作所要花費的計算量和存儲資源。簡單理解,和它的中文字面意思「汽油」一樣,就像道路中行使的每輛汽車都需要不斷消耗汽油,在以太坊等智能合約平臺中,每一個操作也都需要消耗 Gas,Gas 的多少代表在區塊鏈網絡中執行特定操作所需的成本,並最終作為手續費支付給礦工,因此很多地方也將其稱為礦工費。
Gas 機製可通過付費激勵網絡生態,同時可有效防止網絡被大量無意義的交易堵塞,不過和比特幣不同,在智能合約平臺中,無論交易成功與否,都需要支付一定 Gas,這是因為即使失敗,礦工依然為這筆交易的驗證計算消耗了部分資源。
Gas 是以太坊中重要的組成部分,它扮演著雙重角色:作為以太坊中浮動的價格和礦工獎勵直接的緩沖,以及對抗拒絕服務攻擊的防範措施。為了防止網絡中意外的或者惡意的無限循環以及其他形式的計算浪費,每個交易的創建者都需要設定一個限製來表明他們願意為交易執行所付出的計算量。 Gas 系統借此來降低攻擊者們發送垃圾交易的意願,因為他們必須為他們所消耗的計算量、帶寬和存儲資源付出代價。
在學習如何計算 Gas fee 之前,我們需要先了解交易中的 Gas price 和 Gas limit 這兩個概念。
Gas price 允許交易發起方設定支付的 gas 數量。Gas price 越高,交易被確認的速度也越快,反之確認速度越慢。Gas price 最低可以為 0,如果區塊中有多余的空間,這樣的交易也會被礦工打包並提交到區塊鏈上。以太坊協議本身沒有禁止無手續費交易,以太坊歷史區塊中也有無手續費交易成功的案例。
Gas limit 表示交易發起方為了完成交易願意支付的最大 gas 數量。
在以太坊中 Gas 是用 ETH 支付的,其價格單位為 gwei,1 gwei 等於 0.000000001 ETH。
以太坊倫敦升級之前,Gas 費用計算公式為:
GAS = Gas limit * Gas Price
我們假設鲍勃需轉給汤姆 1 個 ETH,當前的 Gas limit 為 21000 個單位,Gas price 為 200 gwei,其Gas 費用為:21000 * 200 = 4200000 gwei,換算為 0.0042 ETH,即鲍勃轉賬時從賬戶總共扣除1.0042 ETH,其中 1 ETH 給到汤姆,0.0042 ETH 為礦工費。
2020 年 8 月以太坊倫敦升級,為使得 Gas 價格波動更加平滑且更易被預測,引入 EIP-1559,Gas 計算公式調整為:
GAS = Gas limit * (Base gas price 基礎費用 + priority fee 礦工小費)
基礎費用根據當前區塊空間使用需求計算,且花費後直接被燃燒,用戶還可以設定一筆礦工小費(通常由錢包第三方自動設置),用於在網絡擁堵時交易能盡快被處理。
那麽鲍勃現在再轉給汤姆 1 個ETH,假設 Gas 限額 21000 個單位,基本費用的價格為 100 gwei,鲍勃另支付 10 gwei 作為小費,其Gas費用:21000 * (100+10) = 2310000 gwei,即 0.00231 ETH,其中鲍勃賬戶扣除 1.00231 ETH,汤姆收到 1 ETH,0.00021 ETH 為礦工費,基本費用 0.0021 小費。
以太坊上的任何操作都需要支付 Gas 費用,但是每個區塊的空間有限。隨著 Dapp 功能越來越復雜,智能合約執行的操作數量也在增加,即每筆交易在有限大小的區塊內會占用更多空間。需求量太大,用戶必須提供更高的小費,力爭使出價高於其他用戶的交易。 小費越高,交易進入下一個區塊的可能性就越大。
以太坊可擴展性升級應該最終解決部分燃料費問題,並讓以太坊平臺能夠每秒處理數千筆交易,從而全面擴容。
二層網絡擴容是一項主要舉措,可大大優化燃料成本、用戶體驗和可擴展性。
礦工費的高漲一定程度反映了鏈上活躍度,更活躍的鏈上數據也對網絡發展和市場估值起正向作用,但目前高額費用對用戶體驗還是有很大影響亟待解決。