以太坊GAS如何計算?

以太坊GAS如何計算?

本文大概3500字,閱讀需要7分鐘

前文提到 gas 的價格由市場決定,類似於比特幣的交易費用,一般來說,在 Ethereum 上計算和存儲比在傳統環境中計算和存儲更貴,但是 Ethereum 為您的代碼提供了好的屬性同樣重要。

用戶存儲 Ether 時存儲的是什麼?從某種意義上說,他們存儲的是在以太坊網絡上執行計算的能力。下面是對 GAS 概念更深入的概述。

截止到目前(2018.6.23)這一天,gas 價格中位數為3 Gwei,並長期處於10 Gwei 以內範圍。這是大於 EthGasStation.info 上公佈的的標準gas價格(Gas Price Std)和安全的最低價(Gas Price SafeLow Transfer)(分別為1 Gwei 和 0.01 Gwei)的。中位數如此之高,是因為許多錢包中存在嚴重的gas價格違約行為。儘管現在的價格已經比 2017 年的中位數低了約9成。我們還是建議使用 EthGasStation.info 上面公佈的的 gas 平均價格或更低的價格,以免支付高額費用並且能夠幫助降低 gas 的市場價格。

用戶存儲以太幣時存儲的是什麼?從某種意義上說,他們存儲的是在以太坊網絡上執行計算的能力。這種計算是以分散到計算機節點的方式來進行:

礦工執行與塊中包含的每個交易相關聯的計算,並更新結果狀態。在成功開採到塊後,礦工將該塊廣播給網絡。在該塊被認證為有效之前,其他礦工和非採礦節點要驗證交易計算的正確性和更改結果狀態的有效性,將該塊合併到區塊鏈的副本中,並繼續轉移到下一塊。

你可能已經注意到區塊鏈上的每一點計算都有非常多的冗餘。例如,每個節點都會驗證交易的結果,讀取每個節點運行所有的計算。

一旦你瞭解了更多技術方面的東西,它就是區塊鏈系統的一個明顯特徵。這難道不比僅僅在服務器上運行計算要昂貴的多麼?當然,根據協議的性質,它必須要貴的多。以下可能是經濟學或計算或兩者兼有的基本原理:

運行代碼的機器越多相當於花費在運行代碼上的錢越多

我們必須要明白的是在以太坊上執行代碼和更新狀態與在簡單的服務器上執行代碼和更新狀態有很大區別。在以太坊中產生的狀態變化具有不同於服務器的屬性 - 即不可變性和公開可驗證性。我們先來看看網絡上實際花費的計算量,然後我們可以確定它是否值得。

01 交易花費是如何計算的?

gas

EVM(以太坊虛擬機)中可用的每個低級操作稱為 OPCODE。

這些操作包括例如:

  • ADD - 將兩個整數相加
  • MUL - 將兩個證書相乘
  • BALANCE - 獲得賬戶餘額
  • CREATE - 用提供的代碼創建一個新的合約

這些 OPCODE 中的每一種都有自己的 gas 價格.gas是一個抽象的數字,表示操作的相對複雜性。例如, ADD(兩個整數相加)使用3個gas,而 MUL(兩個整數相乘)使用5個 gas,所以 MUL 比 ADD 更復雜。

需要注意的是,所有的交易都以21000 gas 為一個基礎。所以如果你只是轉移資金而不與合約交易,你的交易需要21000 gas。如果你正在與合約交互,你的交易需要21000 gas 以及與其他操作產生的gas 費用。

Gas Price

雖然每次操作花費的 gas 都是固定的,但用戶支付的 gas 的金額卻是動態的,並由市場條件決定。gas 價格是代表用戶願意為每 gas 支付多少以太幣。當用戶發起交易時,他們指定Gwei / Gas 中的 gas 價格(1 Gwei等於0.000000001 以太幣),並且他們支付的總費用等於gas_price * gas_used。礦工支付這筆費用,因此他們優先考慮 gas 更高的交易。你願意支付 gas 的價格越高,你的交易處理的越快。

網站 EthGasStation.info 是瞭解當前 gas 市場狀況的重要渠道。“建議的 gas 價格(Recommended Gas Prices)”顯示你可能支付的 gas 價格範圍以及預計的交易時間。

02 常規計算需要花費多少gas?

在以太坊的運營成本是gas_price * gas_used,這些運營成本轉換成以太幣或者美元又是多少呢?我們已經編制了一份電子表格,其中包含當前中值gas價格(3Gwei)和當前美元/ 以太幣匯率(¥460 / 以太幣)計算的一些示例操作的成本。每一行顯示一個任務,任務所需的gas成本為以太幣和美元,你可以使用1個以太幣和1美元執行的此任務的數量,每個塊可執行的任務數以及塊的數量需要執行這個任務。

數字相加運算的花費

以下的表格列出了兩個數字相加所產生的成本。

以太坊GAS如何計算?

我們可以在這裡看到,將兩個數字加在一起100萬次,花費0.009 以太幣或4.14美元,與在本地計算機或雲服務器上運行相比,這看起來非常貴。

我們在普通的服務器上 0.04 秒內就可以把兩個數字相加一百萬次。以阿里雲最便宜的 ECS 服務器來計算,ECS 每小時收費大約是 0.14 美元。那麼運行0.04秒只需要花費 0.0000016美元,與 26.55 美元相比,這大約要貴260萬倍。真是難以想象!

數據存儲的花費

我們可能感興趣的另一個常見操作是存儲數據,無論它是存儲單個值,例如合同到期之前的天數,還是一篇文章等。

以太坊GAS如何計算?

從上面的表格中我們可以看到,將數據存儲到區塊鏈中非常昂貴,但是這也是有其原因的!當你將數據存儲在區塊鏈中的時候,你可以將數據存儲到千萬個節點的不可變數據庫中。把自己最喜愛的電影上傳到區塊鏈上這樣的操作肯定是不允許的,應該避免昂貴的成本,以保持區塊鏈的增長是可控的。更直接一點的看,存儲單個256 bit(32字節)需要 20000個 gas,這個花費比把兩個數字相加在一起貴6000倍以上。

存儲大量數據的另一個瓶頸是目前的每個塊交易所能花費的的 gas 的最大數約為2100000。在每個塊交易花費的 gas 的這個上限內,要將 1MB 的數據寫入區塊鏈需要312塊以上的資源,這將需要1.96個以太幣,摺合2013美元,這比現實中的存儲價格也高出了10萬倍以上。這還僅僅是在你能夠控制每個區塊的所有 gas,並且你不需要做其他操作的基礎上做的假設!

03 總結

當然了,在實際生產中計算兩個數字相加 100萬次是不太可能的。一個好的合約會避免算力浪費在這種複雜計算當中,而是更多地去處理合約的狀態更新。將大量數據存儲到區塊鏈中也不是一項普通的任務。根據任務的不同,用戶可能會在數據鏈上存儲數據的加密引用(散列),並將其餘的數據保留在鏈外。

也就是說,我們作為開發人員需要了解這些成本,並據此相應的設計合約。我們需要在鏈上和鏈外的複雜性之間找到平衡,同時也要更多的利用區塊鏈的分散能力。

隨著區塊鏈成本的增加和效率的提高,我們獲得了開放。區塊鏈技術的每一步計算都會經過所有節點的驗證,並且數據的安全性也是完全可以保證的。這是我們以前在互聯網上從來沒有過的,而且區塊鏈技術到底能帶給我們多大的財務和社會效益也是現在無法估量的。

小知識

Ethereum : 以太坊,是一個開源的有智能合約功能的公共區塊鏈平臺。

Ether:以太幣,簡稱ETH。是在以太坊平臺上用來支付或交易的一種電子貨幣。

gas : 交易過程中花費的工作量的計量單位,可以按一定比例兌換為以太幣。

gas price : 單位gas的價格,一般以以太幣計算。

以太幣單位:

以太幣的最小單位:wei

1個以太幣 = 10的18次方wei

Kwei(Babbage)= 10的 3次方 wei

Mwei(Lovelace)= 10的 6次方 wei

Gwei(Shannon)= 10的 9次方 wei

MicroEther(Szabo)= 10的 12次方wei

MilliEther(Finney)= 10的 15次方wei

Ether = 10的 18次方 wei

About Gravity:去中心化數據計算和交換引擎

Decentralized Data Computing and Exchange Engine

Gravity提供一個共享計算網絡,將空閒的手機、終端、PC等設備組成一個巨大的計算引擎。Gravity獨創點對點的MapReduce框架處理大數據,以及點對點的資源調度系統將網絡中的各節點的資源高效利用。利用區塊鏈價值,使資源共享者在互信的網絡中獲取激勵。

Contact us

郵件:[email protected]

Twitter:Gravity.link

Telegram:Gravity link


分享到:


相關文章: