以太坊中的gas、gas price、gas limit到底是什么


什么是gas

Gas 是存在於以太坊虛擬機內部,作為計算工作量的計數。它一方面作為對礦工打包區塊的獎勵,另一方面,為惡意交易抬高門檻,維護以太坊網絡正常運作。 Gas 是以太坊中的燃料,它保證了以太坊生態的運作。正如汽油對於汽車的作用, Gas 不可或缺。以太坊協議規定交易或合約調用的每個運算步驟都需要收費。使用智能合約的用戶必須支付一定費用去執行該合約,而gas就像手續費,使用智能合約必須設置消耗gas的最大值,當gas消耗完或者合約執行完,就會停止執行該合約。gas使用ETH來支付。

 注意:無論您執行的命令是成功還是失敗,都需要支付計算費用,即使失敗,節點也驗證並執行了您的交易(計算),因此必須和成功執行支付一樣的費用

 什么是gas limit

Gas Limit:是用戶願意為執行某個操作或確認交易支付的最大 Gas 量。

如果 Gas Limit 設置過低,無法保證計算完整運行,系統將會提示“ out of gas ”,這筆交易依然被打包到區塊中,交易金額被退回,但費用依舊會被收取,交易費用作為獎勵發放給打包這個區塊的礦工。交易會失敗。
如果該次操作所使用的gas數量小於或等於您所設置的gas limit,則會被執行,在執行中實際消耗的gas值總和叫gas used,沒有使用完的gas會退還到原賬號

正如交易有 Gas Limit ,區塊也有 Gas Limit ,即單個區塊允許的最多gas總量。每個區塊在打包的時候都會確定當前區塊的 Gas Limit 總量,以此來確定單個區塊所能打包的交易數量,所以礦工在打包每筆交易的時候都會判斷當前的 Gas 量夠不夠打包當前交易。如果您嘗試將一個會使用超過當前區塊gas limit的交易打包,則會被網絡拒絕,會反饋“below gas limit”

例如現在有 3 筆交易, A 交易 Gas Limit 為 10 , B 交易為 20 , C 交易為 30 ,如果區塊 Gas Limit 為 30 ,那么 A 交易和 B 交易將被打包。由於礦工有權力選擇哪些交易被打包,因此另一名礦工選擇將 C 交易打包進這個區塊。但是如果將 ABC 交易同時打包, Gas Limit 達到 60 ,超過區塊 Gas Limit ,這個區塊會被網絡拒絕。

 什么是gas price

Gas Price:是用戶願意為每個 Gas 支付的價格,一般單位為 Gwei 。1 ETH = 1,000,000,000 Gwei

礦工總是希望獲得更多的挖礦獎勵,在打包交易的同時,交易費用越高,越容易被打包。

交易費用 = GasPrice * GasUsed

因此,Gas Price 越高,礦工將會優先打包,交易會被更快確定;如果 Gas Price 設置過低,礦工的報酬降低,交易的確認時間將會延長。如果您想加快轉賬,您可以把gas price設置得更高,這樣您就可以插隊靠前。

總結

  1. gas limit由我們自己設定,相當於我們預計汽車需要加多少升汽油;即執行某個操作或合約的某一條的費用。
  2. gas price由我們自己設定,相當於每升汽油的價格;如果想要加以快點被打包,那么可以把gas price設的高一點,就像佣金高一點
  3. 一次交易或調用實際需要消耗的gas(gas used)由該次交易或調用過程中執行的命令決定;
  4. gas used 必須小於或等於gas limit;
  5. 實際支付的費用 = gas used * gas price。
  6. 交易超過gas limit 交易會回滾,但是交易消耗的gas依然會被支付。區塊的所有交易的gas之和大於區塊的gas limit 則區塊上傳就會失敗報錯,拒絕上傳。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM