輕鬆讀懂以太坊上的 Gas、GasLimit、GasPrice

買賣虛擬貨幣


gas 是什麼?

gas 是存在於以太坊 evm 內部,是計算工作量的計量單位。其作為以太坊網路中的燃料,為以太坊網路生態的發展運作提供動力。正如汽油對於汽車的作用, gas 對於以太坊使用者和開發者來說,必不可少。

gas 一方面用於以太坊礦工打包區塊的獎勵;另一方面,其存在提高了惡意交易的門檻,可以更好的維護以太坊網路的正常運轉。

在以太坊系統底層,為每一個規定操作和合約方法都確定了 gas 數量消耗,交易過程中的每個運算步驟都需要消耗 gas 。比如:部署 nest 預言機報價合約的使用者需要支付一定的 gas 費,去執行這筆交易,而 gas 就是以太坊系統向使用者收取的手續費。使用以太坊網路時必須設定消耗 gas 的最大值,當 gas 消耗完或者智慧合約邏輯執行完,就會停止執行該合約。在以太坊系統內,gas 需要換算成 eth 來進行支付。

提示:無論使用者發起的交易是否打包成功,都要支付 gas 費用;這就好比您在開車回家的路上,開了一半沒油了一樣,即使沒成功到家,但消耗的汽油確實已經消耗了,所以也要為之買單。


gaslimit 又是什麼?


gaslimit 是以太坊使用者願意為成功執行某筆交易邏輯所支付的最大 gas 數量。

如果一筆交易的 gaslimit 設定過低,不能使交易邏輯完整執行,系統將會提示“out of gas”,交易會失敗。這筆交易依然會被打包到區塊中,交易中所攜帶的以太坊資產會自動退回,但 gas 費用依舊會被收取,該費用作為獎勵發放給打包這個區塊的礦工。(經常部署智慧合約的使用者,應該碰到過這種情況)

如果該筆交易所使用的 gas 數量小於或等於您所設定的 gaslimit,則會被打包成功。在這筆交易執行中所實際消耗的 gas 總量為 gasused,沒有使用完的 gas 會退還到交易發起地址。

請注意,我們這裡所說的 gaslimit 指的是一筆交易的 gas 上限。在整個以太坊發展過程中,也有一個 gaslimit 值比較重要也經常被提及,那就是一個區塊的 gaslimit,即單個以太坊區塊可執行交易的 gas 總和上限。

每個區塊在打包的時候都會確定當前區塊內所有交易的 gaslimit 總量,以此來確定該區塊能打包的交易數量,所以礦工在打包每筆交易的時候都會判斷當前的 gas 量夠不夠打包當前這筆交易。如果你將一個會超過當前區塊gaslimit 的交易打包,會被以太坊網路拒絕,系統反饋為“below gas limit”。在經過以太坊 1.x 多次升級之後,目前一個以太坊區塊的 gaslimit 值為 1200 萬 gas 。

etherscan gasprice 資料



單個 gas 的價格:gasprice

gasprice 是使用者願意為每個 gas 支付的價格,單位是 gwei 。

1 eth = 1,000,000,000 gwei

以太坊礦工除了獲得挖礦區塊獎勵外,總是希望區塊裡面包含更多的 gas 費;所以,礦池在打包交易的時候,優先打包支付礦工費更多的交易。

一筆交易的礦工費 = gasprice  *  gasused

因此,gasprice 設定的越高,交易越先被打包進區塊,越先被確認;如果 gasprice 設定的過低,交易會長時間處於 pending 狀態,排隊等待被礦工打包。所以,在以太坊網路發生擁堵的時候,如果我們想加快交易速度,就需要大幅度提高交易的 gasprice 數值,讓礦工優先打包我們的交易。

以上,是有關以太坊網路中 gas、gaslimit、gasprice 引數的定義和關係。如果你想更加直接的感知區塊鏈技術和智慧合約,那麼趕快在以太坊鏈上部署自己的智慧合約吧,或者加入 nest 價格預言機網路,成為報價礦工,參與預言機報價。

免責聲明:

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

推荐阅读

;