Gas,以太坊中的費用概念詳解

在以太坊網絡當中有個比較重要的概念——費用,具體來說,在以太坊網絡上的交易而產生的每一次計算,都會產生費用——這個費用是以稱之為”gas”的單位來支付。

gas就是用來衡量在一個具體計算中要求的費用單位。

Gas,以太坊中的費用概念詳解

gas price就是你願意在每個gas上花費Ether的數量,以“gwei”進行衡量。

“Wei”是Ether的最小單位,1Ether表示10^18Wei. 1gwei是1,000,000,000 Wei。

對每個交易,發送者設置gas limit和gas price。gas limit和gas price就代表著發送者願意為執行交易支付的Wei的最大值。

例如,假設發送者設置gas limit為50,000,gas price為20gwei。這就表示發送者願意最多支付50,000*20gwei = 1,000,000,000,000,000 Wei = 0.001 Ether來執行此交易。

Gas,以太坊中的費用概念詳解

gas limit代表用戶願意花費在gas上的錢的最大值。如果在他們的賬戶餘額中有足夠的Ether來支付這個最大值費用,那麼就沒問題。在交易結束時任何未使用的gas都會被返回給發送者,以原始費率兌換。

Gas,以太坊中的費用概念詳解

在發送者沒有提供足夠的gas來執行交易,那麼交易執行就會出現“gas不足”然後被認為是無效的。在這種情況下,交易處理就會被終止以及所有已改變的狀態將會被恢復,最後我們就又回到了交易之前的狀態—完完全全的之前狀態就像這筆交易從來沒有發生。因為網絡在耗盡gas之前還是為計算做出了努力,

所以理論上,將不會有任何的gas被返回給發送者。

Gas,以太坊中的費用概念詳解

那麼這些gas的錢到底去了哪裡?發送者在gas上花費的所有錢都發送給了“受益人”地址,通常情況下就是礦工的地址。因為礦工為了計算和驗證交易做出了努力,所以礦工接收gas的費用作為獎勵。

Gas,以太坊中的費用概念詳解

通常,發送者願意支付更高的gas price,礦工從這筆交易總就能獲得更多的價值。因此,礦工也就更加願意選擇這筆交易。這樣的話,礦工可以自由的選擇一筆交易自己願意驗證或忽略。為了引導發送者應該設置gas price為多少,礦工可以選擇建議一個最小的gas值他們願意執行一個交易。

存儲也有費用

gas不僅僅是用來支付計算這一步的費用,而且也用來支付存儲的費用。存儲的總費用與所使用的32位字節的最小倍數成比例。

存儲費用有一些比較細微的方面。比如,由於增加了的存儲增加了所有節點上的以太坊狀態數據庫的大小,所以激勵保持數據存儲量小。為了這個原因,如果一個交易的執行有一步是清除一個存儲實體,那麼為執行這個操作的費用就會被放棄,並且由於釋放存儲空間的退款就會被返回給發送者。

費用的作用是什麼?

以太坊可以運作的一個重要方面就是每個網絡執行的操作同時也被全節點所影響。然而,計算的操作在以太坊虛擬機上是非常昂貴的。因此,以太坊智能合約最好是用來執行最簡單的任務,比如運行一個簡單的業務邏輯或者驗證簽名和其他密碼對象,而不是用於複雜的操作,比如文件存儲,電子郵件,或機器學習,這些會給網絡造成壓力。施加費用防止用戶使網絡超負荷。

以太坊是一個圖靈完備語言(短而言之,圖靈機器就是一個可以模擬任何電腦算法的機器。對於圖靈機器不太熟悉的人可以看看這個 和這個 )。這就允許有循環,並使以太坊受到停機問題 的影響,這個問題讓你無法確定程序是否無限制的運行。如果沒有費用的話,惡意的執行者通過執行一個包含無限循環的交易就可以很容易的讓網絡癱瘓而不會產生任何反響。因此,費用保護網絡不受蓄意攻擊。

你也許會想,“為什麼我們還需要為存儲付費?”其實就像計算一樣,以太坊網絡上的存儲是整個網絡都必須要負擔的成本,也就是說網絡為此付出了工作,是應得的報酬。


分享到:


相關文章: