Gas:
gas是“燃料”的意思,在以太坊區塊鏈上實現了一個EVM(以太坊虛擬機)的代碼運行環境,在鏈上執行寫入操作時,網絡中的每個全節點都會進行相同的計算並存儲相同的值,這種執行的消耗是昂貴的,為了促使大家將能在鏈下進行的運算都不放到鏈上進行,也為了獎勵礦工,因此在鏈上每執行一個寫入操作時,都需要支付一定的費用,用gas為單位來計數,每個在鏈上可以執行的命令都設置了一個消耗的gas值,例:PUSH操作需要消耗3個gas,一次轉賬一般要消耗21000gas,gas使用ETH來支付。
Gas對應於一個交易(Transaction)中以太坊虛擬機(EVM)的實際運算步數。 越簡單的交易,例如單純的以太幣轉帳交易,需要的運算步數越少, Gas亦會需要的少一點。 反之,如果要計算一些復雜運算,Gas的消耗量就會大。 所以你提交的交易需要EVM進行的計算量越大,所需的Gas消耗量就越高了。
Gas Price:
Gas Price就是你願意為一個單位的Gas出多少Eth,一般用Gwei作單位。 所以Gas Price 越高,就表示交易中每運算一步,會支付更多的Eth。大家可能對Gwei 這個單位感到陌生,Gwei 其實就是10 ^ -9 Eth,也就是說1 Gwei = 0.000000001 Eth。所以,當你設定Gas price = 20 Gwei ,就意味着你願意為單步運算支付0.00000002 Eth。
說到這里,聰明如你就會意識到以太坊的手續費計算公式很簡單:
交易手續費(Tx Fee) = 實際運行步數(Actual Gas Used) * 單步價格(Gas Price)
例如你的交易需要以太坊執行 50步/50 gas 完成運算,假設你設定的Gas Price是2 Gwei ,那么整個交易的手續費
就是50 * 2 = 100 Gwei 了。
Gas Limit
Gas Limit就是一次交易中Gas的可用上限,也就是你的交易中最多會執行多少步運算。 由於交易復雜程度各有不同,確切的Gas消耗量是在完成交易后才會知道,因此在你提交交易之前,需要為交易設定一個Gas用量的上限。
如果說你提交的交易尚未完成,消耗的Gas就已經超過你設定的Gas Limit,那么這次交易就會被取消,而已經消耗的手續費同樣被扣取 —— 因為要獎勵已經付出勞動的礦工。 而如果交易已經完成,消耗的Gas未達到Gas Limit,那么只會按實際消耗的Gas 收取交易服務費,沒有使用完的gas會退還到原賬戶。 換句話說,一個交易可能被收取的最高服務費就是 Gas Limit * Gas Price 了。
最后值得一提的是Gas Price越高,你提交的交易會越快被礦工接納。