科普園地09 |以太坊的Gas和手續費
智能合約,顧名思義,是指計算機代碼可以自動執行的合同;以太坊虛擬機是用來執行智能合約的;智能賬戶是智能合約能夠被執行的載體。換句話說,智能賬戶,這個“賬戶”是可以被以太坊虛擬機操控的,依據什麼操控呢,依據智能合約來操控。
天下沒有免費的午餐,智能合約這個功能這麼好,可不是白用的,你在以太坊進行交易的時候也要付給礦工手續費的,那麼在以太坊系統上,你要付出的手續費是怎麼回事,Gas和手續費之間又有什麼關聯呢?

一、以太坊Gas是什麼?
Gas是一個英文單詞,中文意思是:瓦斯、汽油,這個東西在日常生活中,是一種消耗品。以太坊Gas類似於汽車燃油,智能合約的驅動需要以太坊Gas。
以太坊為什麼會產生“燃料”呢?以太坊裡面的Gas是什麼意思呢?以太坊的Gas和交易費息息相關。以太坊交易需要手續費,這個Gas就是以太坊手續費的計算模式。
在以太坊的設定中,交易費類似於一種加密的燃料,也就是Gas,這個東西可以驅動智能合約的運動。當以太坊在區塊鏈上執行交易時,燃料將按照特點的規則而逐漸被消耗。從這一點看,Gas和它的本意一樣,像汽車燃油一樣,想要發動汽車,必須需要燃油。
二、以太坊Gas和比特幣交易費有哪些不同?
天下沒有免費的午餐,無論是比特幣,還是以太坊,都需要手續費,但是二者的手續費模式是不一樣的。
比特幣是直接支付比特幣作為轉賬手續費的,以太坊卻不是這樣的:
以太坊本質上是一個虛擬機,這個虛擬機是去中心化的,是全世界各國人民各自掌控的虛擬機聯合起來形成的“世界級的計算網絡”。
當你發送token,執行合約、轉移以太幣,或者在區塊上做其他事情時,計算機在處理這筆交易時,需要進行計算,這個計算過程需要消耗網絡資源。
這樣一來,你必須支付“燃料費”(也就是Gas),才能讓計算機為你工作,讓礦工為你處理交易。
通常情況下,發送方願意支付的Gas價格越高,礦工從交易中獲得的價值就越大,礦工們也就越有可能選擇這個交易。
通過這種方式,礦工可以自由地選擇交易。為了給發送者設置Gas價格做參考,礦工們可以直接提出他們執行交易所需的最低Gas 價格。
三、以太坊Gas的消耗量該如何計算?
以太坊虛擬機處理交易時,虛擬機會根據交易中確定的一個一個的操作指令進行逐個處理,而每個操作指令都有明文規定的Gas消耗量。
以太坊系統規定了兩個賬戶:一個是正常賬戶,一個是智能賬戶:
普通的轉賬交易,也就是調用“正常賬戶”,所需要的Gas是固定的21000;
而調用“智能賬戶”的的話,因為智能合約的複雜程度不同,使得所需要的Gas也不同。處理交易占用的資源(計算量、內存等)越多,那麼所需要的Gas也就越多,比如:執行一次加法運算將消耗3Gas,如果執行更複雜的運算,那麼消耗的Gas就更多。
大家可能會問一個問題:當用戶的交易涉及一個惡意的智能合約,這個合約超級複雜,執行這個合約要消耗無限的燃料,怎麼辦呢?
以太坊系統的方案是:為了避免惡意智能合約引起無限的Gas消耗,用戶需要在發送交易時設定允許消耗的燃料上限,即GasLimit,這樣一來,就算有惡意智能合約,最壞情況也只是消耗GasLimit 所規定的燃料範圍之內。
四、以太坊Gas和交易手續費有什麼關係?
以太坊系統上,你所支付的手續費等於:GasPrice 乘以GasUsed。
我們可以把GasPrice 理解為是燃油單價, GasUsed 理解為汽車所需多少升燃油
對於汽車,我們舉一個例子:
假如說每升汽油是20塊錢,一萬升汽油就是20萬塊錢。對於以太坊,每Gas是20吉偉(吉偉是以太幣的數量單位),一萬個Gas 就是:20乘以一萬,等於20萬吉偉,2萬吉偉等於0.0002以太坊,也就是說,本次交易手續為0.0002以太坊。
(具體的兌換值見下表)

▲註釋:以太幣數量的基礎單位是“偉”,以太幣的數量單位有“偉、芬尼、以太”,其中,“以太”被用作普通交易;“芬尼”被用作微交易; “薩博”和“偉”被用作進行關於費用和合約實施。
由此我們可以發現,Gas並不是以太坊,它是一種單獨的體系,它的匯率與以太坊成一定的比例,經過了比例兌換,最終形成交易費。
具體的匯率查詢,可以查看以下網站:https://jin10086.github.io/etherconVerter/
Gas價格和以太幣價格都是由市場自由調節的,但是二者是不一樣的,他們的不同之處在於:
以太幣的價格是根據市場情況波動,
而Gas的價格由礦工決定的,如果燃料價格低於礦工們的最低要求,礦工就會拒絕處理交易。
Gas和以太坊分離,可以保護系統免受隨著以太坊價格的快速變化而可能出現的波動。
大部分礦工都會選擇利益優先,處理交易時候,他們會按Gas價格從高到底排列,優先處理Gas價格高的,如果你很著急交易,就需要提高Gas價格,讓礦工早點看到你;如果你不著急呢,你只需要設定一個Gas價格,這個價格在礦工設置的Gas價格底線之上就行了。
五、Gas是怎麼獲取的呢?
實際上,Gas就是從礦工那裡購買的以太幣,用戶自己賬戶中的以太幣就可以向礦工購買Gas,以太坊客戶端根據指定的交易最大支出限額,自動用以太坊購買Gas。
六、Gas最後去了哪裡?
每筆交易,交易發起方都要設置交易的Gas限定和Gas價格,不同的操作會產生不同的Gas成本,Gas用完時礦工將停止執行,使用的Gas會作為獎勵,獎勵給挖礦的礦工,這將涉及到幾下幾種情況:
第一種情況是,如果有剩餘Gas,那麼這些剩餘的Gas會退還給交易發起方或智能合約創建者。比如我發送1個以太坊給依依,我設置的Gas limit 是5萬,正常需要消耗的Gas是21000,那麼,剩下沒有被消耗的29000會返還給我。
第二種情況是,如果我設置的Gaslimit太低,或者我賬號中的以太坊不足以支付我的Gas消耗,那麼,這筆交易會因為Gas不足而被取消,並且用於計算的Gas不會退回到我的賬戶。
第三種情況是,如果交易失敗,我也必須為已經佔用的計算資源來支付手續費。
七、怎麼設置合理的Gas價格?
每次交易之前,可以查詢這個網站來確認需要設置的Gas價格:https://ethGasstation.info/


