而執行每條指令,都有相關的Gas成本。參考下表:
這張表中,EVM可以執行的每條指令,在Gas Used這一列,都有相應的Gas價格。
這樣,如果你想在ETH網路裡,跑一百萬次迴圈語句堵塞網路,你需要花費的Gas,會是個天文數字哦!你會放棄的!
你可能會問,這個Gas,是我們轉賬eth時設定的Gas嗎?
每次ETH轉賬,Gas,Gas Price,Gas Limit,感覺一臉懵逼,傻傻分不清楚啊!
Gas (燃料)
如前表,Gas的多少,對應於交易中EVM實際執行的運算複雜度。
運算越簡單所需Gas就越低。反之,如果轉賬過程中,需要用到其它複雜指令,Gas就會高。
比如 BALANCE指令,Gas高達400.
Gas Price(燃料價格)
是指你願意為每個Gas,花費多少ETH。Gas Price由交易者設定。一般用Gwei作單位。
1 Gwei = 0.000000001 Eth。 Gas Price越高,付出的Eth也就越多。
當你設定Gas price = 30 Gwei,表示,願意為每個Gas付出:0.00000003 Eth。
Gas 由你主動出價。如果價格太低,礦工們就會拒絕幫你打包,幫你轉發交易。
但是如果設定太高,就會增加交易成本。
轉賬手續費(Tx Fee)
它等於——實際花費燃料(Gas Used)x 單價(Gas Price)
比如,一次交易運算量,需要50Gas,而Gas Price設為3 Gwei。整個交易的手續費= 50 * 3 = 150 Gwei = 0.00000015 Eth。
Gas Limit (燃料供給上限)
交易中Gas上限值。是指:交易中最多花費多少Gas。
由於交易複雜度各不相同,ETH網路需要完成交易後,才能計算出一共要花費多少Gas。
所以,ETH網路,要求交易者在發出交易之前,為交易設定一個Gas上限。
如果交易還沒完成,而消耗的Gas,已經超過交易者設定的Gas Limit,那麼交易就會被取消。
轉賬的ETH會退回,但燃料費還是要扣除,用作獎勵礦工。
而如果交易已經完成,而消耗的Gas沒要達到Gas Limit,則只花費實際消耗的Gas,不會多算。
強調
設定Gas的主要目的,不是為了金錢!
而是為了每條指令都有價!阻止惡意的迴圈語句和其它惡意語句,阻止惡意程式碼的執行。