摘要:在以太坊網絡中,每一筆轉賬,無論數額大小,消耗的Gas 是固定的,為21000,如果添加備註(「刻字」),需要消耗額外的Gas。通過錢包轉賬ETH 或是 ERC-20 Token 時,我們知道這個轉賬需要付手續費。那麼,轉賬的手續費是怎麼算的呢?如果轉賬的同時還去「刻…
在以太坊網絡中,每一筆轉賬,無論數額大小,消耗的 氣體 是固定的,為21000,如果添加備註(「刻字」),需要消耗額外的Gas。
通過錢包轉賬ETH 或是ERC-20 Token 時,我們知道這個轉賬需要付手續費。那麼,轉賬的手續費是怎麼算的呢?
如果轉賬的同時還去「刻字」,是不是需要收取更高的手續費呢?今天,大白就給大家聊聊以太坊的Gas 機制。
在以太坊網絡中轉賬,雖然最後的手續費我們支付的是ETH,但其實在以太坊內部並不直接消耗ETH,而是消耗Gas。 「Gas」這個單詞的英文意思是「(氣體)燃料」,以太坊網絡中的操作需要消耗Gas,就如同汽車行駛需要消耗燃料一樣。
那麼,交易的手續費(ETH)是如何計算的呢?我們先看一下大白在以太坊網絡中的一個轉賬截圖:
在以太坊網絡中轉賬,手續費的計算方式如下:
交易手續費(ETH)= Gas 的單價x 消耗的Gas 數量
在大白的這筆交易中,Gas 的單價(Gas Price)是5Gwei,也就是0.0000000005ETH(小數點後面8 個0)。這里大白再給大家介紹一下ETH 的單位,ETH 的最小單位是Wei,但是談到以太坊Gas 的時候,經常用Gwei。 ETH、Gwei、Wei 之間的關係如下:
1 ETH = 10 ^ 9 Gwei (9 件 0) = 10 ^ 18 Wei (18 件 0)
知道了Gas 的單價,我們再看下大白這筆含「刻字」的轉賬消耗的Gas 數量:24876。所以,按照上面的公式,單價乘以數量,即可得到大白花費的手續費:
手續費= 0.0000000005ETH x 24876 = 0.00012438ETH
汽車去加油站添加燃料,燃料的價格基本是固定不變的,但是在以太坊網絡中,Gas 的單價是可以自己設置的。不過,需要注意的是,Gas 的單價會影響這筆交易被打包的速度。也就是說,Gas 的單價你給的越高,礦工為了自身利益最大化,越會優先打包你的交易。
下圖是ethgasstation.info 網站統計的實際操作中Gas 的單價和所需要等待的交易打包時間。
在左邊統計圖中,我們可以看到,超過70% 的以太坊網絡轉賬給的Gas 單價介於4~20Gwei 之間,小於1Gwei 或是大於50Gwei 的交易占比很少。
在右邊的統計圖中,我們可以看到,如果給的Gas 單價是4Gwei,打包交易需要的平均等待時間是0.6 分鐘;如果是20Gwei,平均等待時間是0.2 分鐘。
大家常用的imToken 錢包,在Gas 的單價設置裡,提供的是5~100Gwei,錢包把最低單價設置為5Gwei,保證了交易能在合理的時間內被打包,當然,如果想插隊,盡快被礦工打包,你也可以自己提高Gas 的單價。
說完了Gas 的單價,我們再接著說消耗的Gas 數量。
在以太坊網絡中,每一筆轉賬,無論數額大小,消耗的Gas 是固定的,為21000,如果添加備註(「刻字」),需要消耗額外的Gas。
回到大白的那筆交易上,大白總共花費的Gas 數量是24876,其中包含了21000 的固定消耗數量,以及備註消耗的Gas 數量3876。備註需要消耗多少數量的Gas,和輸入的內容長度有關,內容越多,需要消耗的Gas 數量也越多。
如果你仔細觀察大白的那張轉賬截圖,你會發現,大白花費的Gas 數量24876 後面有個括號,裡面是41.46%。這個百分比是什麼意思呢?如果你再仔細看截圖,你會發現,上面還有一個Gas Limit,數值是60000,而且它的41.46% 正好是24876。
Gas Limit,是指這筆操作消耗的Gas 數量上限,這個上限值你可以自己設置。比如,大白設置的是60000,但實際操作中並沒有達到這個上限,只用了41.46%。一般的錢包都會默認幫你設置這個上限值,對我們普通用戶而言,普通轉賬時這個上限值也不用去考慮。
以太坊網絡設置這個上限值,是以防萬一,如果碰到惡意的智能合約,該合約執行將消耗無限的燃料,這樣會導致交易方的ETH 餘額全部消耗(惡意的智能合約有可能是程序Bug,如合約執行陷入一個死循環)。
Gas Limit 如果設置過低,比如設置為10000,任何一筆轉賬需要的Gas 數量至少21000,遠遠超過你設置的Gas Limit,就會導致轉賬失敗。也就是說,Gas Limit 會影響一筆交易是否能成功。