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