如何深入理解以太坊gas機制
微信公眾號:區塊鏈大小姐
理解以太坊一定要理解以太坊中的gas的概念,以太坊gas可以說是以太坊生態系統的命脈。
任何涉及到以太坊的行為,無論是簡單交易,還是智能合約,甚至ICO都需要一定量的gas。gas是衡量執行某些操作所需的計算量的單位,用來計算為了執行操作而需要支付給網路的費用數額。
這裡我們將了解gas的工作原理和具體對gas的具體理解。
1.什麼是以太坊gas
gas的名字起得非常貼切,翻譯成中文就是天然氣的意思。在這之前,我們先了解下bitcoin的背景和bitcoin面臨的問題。
比特幣的創建是因為每個人都在問同樣的問題:
? 是否有可能創造一種可以在沒有任何中間人的情況下在兩個人之間轉移的金錢形式?
? 是否有可能創建一個可以在區塊鏈等功能上運行的分散化資金?
Satoshi Nakamoto在創造比特幣時回答了這些問題。我們終於有了一個去中心化的貨幣體系,可以將資金從一個人轉移到另一個人身上。
然而,比特幣存在問題,這是所有第一代區塊鏈都存在的問題。他們只允許貨幣交易,沒有辦法為這些交易添加條件。
Alice可以發送Bob 5 BTC,但她不能對這些交易施加條件。例如。她不能告訴鮑勃,只有當他執行某些任務時他才能拿到錢。
這些條件將需要非常複雜的腳本,需要一種「東西」使流程更加無縫。...這個「東西」是就是以太坊的智能合約。關於以太坊的基本原理不多闡述,各位可以參考:區塊鏈技術:以太坊系統核心總結
進入正題:
2.什麼是以太坊gas?
正如介紹中所解釋的那樣,Gas是一個單位,用於測量執行某些操作所需的計算量。
以太坊虛擬機(EVM)中運行的所有智能合約都使用 solidity進行編碼(以太坊計劃未來將從Solidity轉移到Viper。)每一行代碼都需要一定量的gas來計算,就好比汽車要用汽油。
下面的圖片來自以太坊黃頁,可以用來粗略地了解多少具體說明的成本。
圖片來源:Ethereum Yellow Paper
3. 以太坊Gas如何工作
為了更好地理解以太坊的gas工作方式,我們使用一個類比。假設你正在進行一次公路旅行。在你這樣做之前,你要經過這些步驟:
? 你去加油站,並指定你想要在你的車中注滿多少汽油(gas)。
? 你的汽車裡充滿了汽油(gas)。
? 你向加油站支付你欠他們汽油(gas)的金額。
現在,讓我們來與以太坊展開類似的比較。
汽車,就是你想要執行的操作,如gas或智能合同。
加油站是你的礦工。
你付給他們的錢是礦工費。
用戶希望在以太坊執行的所有操作必須為以下方面提供gas:
? 涵蓋其數據,即intrinsic gas。
? 覆蓋整個計算。
現在我們已經介紹了基本的基礎知識,你可能會問以下問題。
為什麼我們有這個gas系統?
答案很簡單...激勵。
像任何工作對等系統一樣,以太坊嚴重依賴礦工的哈希效率:更多的礦工,更多的哈希效率,更安全和快速的系統。
為了吸引更多的礦工進入該系統,他們需要使該系統對礦工有利可圖並儘可能誘人。在以太坊,礦工有兩種賺錢方式:
? 通過挖掘塊和獲得塊獎勵。
? 通過成為他們的開採塊裁決和打包者。
我們來探討第二點。
礦工負責將交易置於其區塊內。為了這樣做,他們必須使用他們的計算能力來驗證智能合約。gas系統允許他們為此收取一定的費用。
這筆費用被稱為礦工費,它有助於激勵他們積极參与生態系統。
那麼,他們可以收取多少費用?
gas度量的最小單位是wei。所以,如果我們在操作過程中花費1個gas單位,我們稱它為1 wei。
單位增加如下:
那麼:
4:我們如何將gas轉換成以太?
沒有固定的轉換價格,完全取決於礦工來確定轉換價格,然而,平均轉換率通常為:1 gas = 0.02 micro Ether
如果要繼續深入,了解Gas Limit的概念很重要:
5:以太坊燃料限制(Gas Limit)是什麼?
為了在Ethereum中完成操作,發起交易的人員或智能合約創建者必須在向礦工提交Gas Limit之前指定Gas Limit。當指定Gas Limit時,礦工將開始執行操作。
提交Gas Limit時,必須考慮以下幾點:
? 不同的運營會產生不同的gas成本(如前所示)。
? gas用完時,礦工將停止執行。
? 如果有剩餘gas,將立即退還給發起交易的人員或智能合約創建者。
讓我們在假設的場景中看到這一點。
假設我們添加兩個數字,並且合同必須執行以下操作:
? 把10存儲在一個變數中 —假設這個操作成本是45 wei 的gas。
? 儲存最終結果 —成本為45wei。是10 wei。
? 儲存最終結果—成本為45wei。
假設 gas limit是120 wei。
礦工使用的gas總量為45 + 10 + 45=100 wei。
假設1 wei的費用為0.02 micro ETH,則所欠的費用為(100 * 0.02 micro ETH)= 0.000002 ETH。
現在,剩下多少gas?
120 - 100 = 20 wei。
20 wei退還給發起交易的人員或智能合約創建者。
所以,在指定的情況下,我們必須考慮兩種情況:
? gas limit太低。
? gas limit太高。
情景#1:gas限制太低
如果一個操作用盡了gas,那麼它就會恢復到原來的狀態,就好比啥事都沒發生過,然而,發起交易者或智能合約創建者仍然需要向礦工支付計算成本的費用,並將操作添加到區塊鏈中(即使它尚未執行)。
回到我們的剛剛提到駕車旅行的比喻,如果你的汽車中沒有充足的汽油,那麼你將無法到達目的地,但即使如此,你還是向加油站支付了燃油費。
讓我們看看這是如何在我們假設的智能合約中起作用的。步驟是:
? 把10存儲在一個變數中—假設這個操作成本是45 wei 的gas。
? 增加兩個變數—假設這個成本是10 wei。
? 儲存最終結果—成本為45wei。
但是,這一次,gas limit是90wei
現在,我們知道履行合同所需的gas是100 wei,但我們卻有90 wei的限制。
此外,合約還原為原始狀態並添加到區塊鏈中。
情景#2:gas limit太高
那麼,如果我們將gas limit設置得太高怎麼辦?
是不是看起來很合理?畢竟剩下的東西都退還給發起者是吧?
雖然聽起來不錯,但在現實中並沒有那麼好。
礦工受到每塊6,700,000gas limit的限制。以太坊的每個簡單交易通常都有2.1萬的gas limit。礦工只能增加加起來小於或等於塊gas limit的操作。
圖片來源:Hackernoon
假設有一個交易A有一個42,000 gas limit 和兩個交易B和C的正常 limit (如21,000)。
哪一個礦工更容易投入其中?
? 他們是否會優先進行交易A並退還大量gas?
? 或者他們會優先處理交易B和C並且退還少量gas?
顯而易見,第二點對他們來說更具備吸引力
這正是為什麼超高的gas limit不是明智的做法。
以下是平均gas限制圖表。
圖片來源:Hackernoon
到目前為止,你應該清楚,gas和以太幣不是一回事,就如燃料(gas)和費用(fee)不是同一回事一般。gas是需要的計算能力的數量,而以太幣是價格,也就是人們必須為這種gas支付的費用。
現在我們已經掌握了迄今為止所獲得的一切,讓我們通過一些gas和收費情景。
如果一項操作只有低gas,那麼礦工不會去處理,因為它沒有足夠的gas來完成計算。
如果一項操作的費率(fee)較低,但礦工們仍然不會去處理,因為低費用的工作沒有吸引力。
如果一個操作有高gas,那麼這意味著gas limit非常高,礦工還是不會去處理。
如果一項操作收取高額費用(fee),那麼礦工知道他們會從中賺取很多錢,當然優先處理。
根據ethgasstation推薦的不同交易費用的gas價格是:
以太坊gas機制。它是否合理?
儘管gas系統因為提出了一個能夠非常積極地激勵礦工的平穩運行機制而受到讚揚,但最近也受到了很多質疑,因為對於開發商和智能合約創造者來說成本有點高了。無論如何,以太坊項目的參與者必須了解這些成本,並據此設計dApp。我們需要在區塊鏈鏈上和鏈外的複雜性之間找到平衡。
※到底買不買25|賞金獵人 波巴費特|Hottoys
※超感人動物電影推薦
TAG:全球大搜羅 |