ETH轉賬收Gas費用,竟然不是為了錢?

買賣虛擬貨幣
在《在區塊鏈上執行程式,到底是啥意思?DAPP到底是什麼?》裡我們談到,BTC指令碼語言不具備圖靈完備性,ETH使用的語言,比如Solidity具備圖靈完備性。具備圖靈完備性的語言,可以使用迴圈語句,可以一遍又一遍地執行一組指令。這個特性可能會造成網路堵塞。ETH如何解決這個問題?
用Gas。簡單地說,你必須為你的程式執行的每一條指令——付費。昨天我們說到,Solidity語言編寫的程式碼,會被編譯為位元組碼。這組位元組碼,就是一組EVM可執行的指令。

而執行每條指令,都有相關的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的主要目的,不是為了金錢!

而是為了每條指令都有價!阻止惡意的迴圈語句和其它惡意語句,阻止惡意程式碼的執行。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;