這是白話區塊鏈的第1372期原創

作者| 宇星出品|白話區塊鏈(ID:hellobtc)

通過錢包轉賬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 會影響一筆交易是否能成功。

關於以太坊轉賬,你還有哪些疑問,或者你有哪些心得可以分享?歡迎在留言區留言。