在Uniswap給20多萬個用戶地址撒錢的時候,也許不少人在開心之余心里想的都是,「這gas費也太高了。」
當天是以太坊歷史上值得紀念的一天,gas建議最高達到了1000GWEI,這是歷史最高點。
在見證歷史、全民領空投的當天上午,不少人都遇到了關于gas費的問題,gas費貴已經不是問題了,問題是gas費交到錢包建議的最大值也不能在計劃時間內成交。大家Metamask上顯示都是pending,一圈一圈轉得讓人心煩。
為什么你使用了默認的gas費金額,卻依然不能即時交易?。此文將詳細講解以太坊交易費率機制以及在以太坊上發起交易會遇到的問題。
Gas的邏輯
這個事要先從以太坊賬戶講起。
以太坊網絡中有兩類賬戶,外部賬戶以及合約賬戶(ContractAccount)。
外部賬戶是指用戶們所使用的賬戶,由私鑰持有者所控制。合約賬戶是指帶有應用邏輯的智能合約,由合約代碼所控制。用戶們在使用DeFi應用時,就是在用自己的賬戶與DeFi項目的智能合約進行交互。
在過去的7天里,許多長期持有BAYC的人出售了他們的NFT:金色財經報道,據區塊鏈分析公司Nansen披露數據顯示,在過去的7天里,許多長期持有BAYC的人出售了他們的NFT。其中39人的BAYC已經超過一年了。持有至少一個BAYC NFT的錢包數量一直在下降,并低于2021年10月的水平。[2023/6/25 21:58:16]
各類賬戶之間可以隨意進行交互,錢包間可以進行轉賬,合約間也可以相互調用。每一次鏈上交互都需要消耗一定的計算量,計算量消耗的大小由計算難度所決定,而Gas就是計算量的計量單位。例如加法運算較簡單,需要消耗3個Gas,除法運算相對復雜,需要5個Gas。
每一單位的Gas都有其對應的價格,也就是Gas價格?(GasPrice),而Gas價格以Wei為單位。用戶需要購買ETH來支付Gas費用。1ETH=1e18Wei,而我們通常看到的單位GWei為1e9Wei。通常,錢包軟件會通過歷史GasPrice對用戶將要發起的這筆交易的費用進行預估。
數字資產管理平臺Safe已集成去1inch的限價單交易:10月26日消息,數字資產管理平臺Safe(原 Gnosis Safe)已集成去中心化交易所聚合器1inch的限價單交易。[2022/10/26 11:44:57]
為了避免全節點趨于集中,追求架構去中心化的區塊鏈會嚴格限制每單個區塊的容量。例如比特幣的BlockSizeLimit以及以太坊的BlockGasLimit。在律動BlockBeats撰文時,以太坊每單個區塊的BlockGasLimit約為12,000,000個Gas,這也就是每一區塊總計算量的上限。平均每15秒出一區塊。當交易需求超過區塊容量時,用戶為了將自己的交易盡快被上鏈確認,就需要競爭每一區塊內的資源。此時用戶會對Gas進行競價,礦工會優先將GasPrice高的交易納入區塊。
數據:以太坊2.0存款合約總價值創歷史新高:9月12日消息,Glassnode數據顯示,以太坊2.0存款合約總價值達到13,638,560 ETH,創歷史新高。[2022/9/12 13:23:44]
通常用戶在進行轉賬時還會看到錢包會提高可以調節GasLimit的選項。與BlockGasLimit不同,GasLimit是指對于一筆交易,用戶所能接受的Gas使用量上限。由于有時合約內可能存在漏洞,一筆交易會不停死循環地進行計算。如果沒有GasLimit,這筆交易會消耗盡用戶錢包內所有的ETH。而礦工通常所收取的費用是按實際執行該交易時消耗的計算量(GasUsedbyTransaction)進行結算的,而GasLimit內剩余的ETH就會回到用戶賬戶中。
所以我們可以得出,所消耗的ETH數量(EtherCost)=交易費用(GasFee/TransactionFee)=每筆交易所消耗的Gas數量(GasUsedByTransaction)*Gas價格(GasPrice)。
美國國會議員:比特幣是公民權利的衍生品:金色財經消息,美國眾議院議員Pete Sessions發推稱,金融自由是美國的自由,比特幣是公民權利的衍生品。[2022/7/21 2:27:19]
了解了以太坊的手續費機制以及賬戶類型,我們來看看用戶在交易時時常會碰到的問題。
待確認交易(Pending)/加速交易?
每當用戶發起一筆交易時,交易會被放入一個交易池(Mempool)中。如上文提到,礦工會優先打包池子中GasPrice最高的交易。所以用戶設定的GasPrice決定了交易被打包執行的速度。在網絡擁擠的時候,由于GasPrice飆升,用戶的交易可能長時間處于待確認狀態。為了盡快將待定交易發出,用戶可以選擇支付更多的GasPrice來加速交易。
加速交易又是怎么操作的呢?為了更加詳細地理解加速交易的邏輯,我們需要明白另一個參數:Nonce。每一個賬戶發出的交易都會有一個按順序排列的交易編號--Nonce,從0開始,每次發起一筆轉賬,該賬戶的Nonce值會增加1。
Harmony將黑客賞金提升至1000萬美元,并聯合執法部門進行全球追查:6月30日消息,Harmony官方推特表示,Harmony 已經開始聯合執法部門和所有交易所對黑客進行全球追查,與此同時,Harmony 將黑客賞金提升至 1000 萬美元,并表示最后溝通期限為世界標準時間7月4日23:00(北京時間7月5日7:00)。[2022/6/30 1:41:03]
當用戶想要加速交易時,在以太坊錢包中,用戶可以選擇加速交易選項,這時會被要求支付更高的Gas費用,用戶同意之后相當于發起了一筆新的交易,而新的交易與待確認交易的Nonce值相同。
由于以太坊網絡規定,Nonce值是連續不可跳躍的,且同一個地址每筆交易的Nonce值不可重復,所以礦工會打包新生成的交易,在新交易被打包確認之后,之前較低GasPrice的交易會廢棄掉。
若用戶不想加速交易,只要此交易還在交易池中未被打包,用戶可以隨時選擇取消交易。取消交易的邏輯與加速交易相同,用戶發起一筆GasPrice更高,但與待確認交易Nonce相同的交易,但交易金額變為0,所以本質上,取消交易的成本與加速交易的成本一樣需要成本。
需要注意的是,在待定交易確認完成之前,后面的交易都需要排隊等候,所以用戶不要由于等候時間過長重復發起多筆交易。
交易失敗(Fail)
律動BlockBeats發現,目前最常見的交易失敗原因是交易Gas已用盡(OutofGas)。也就是說,這筆交易的計算量超過了用戶所設定的GasLimit。一般在這種情況下,交易狀態將會顯示為失敗,并提示Gas已用盡,并且所支付的Gas不會被退還。
有些用戶可能會認為這并不公平,但本質上礦工已經在做功計算,只是算到一半Gas不夠了,所以礦工只能放棄繼續作業,但之前的工作需要被支付「工資」,因此之前交的Gas費不退大概也可以理解了。遇到這種情況,用戶只能重新再發起一次交易,并將此交易的GasLimit上調。
另一種交易失敗的情況是,當用戶向智能合約發起交易轉賬,但某些錯誤導致無法執行合約時,交易會返回BadInstruction。
比如,當用戶參與類似于眾籌活動時,可能會發生下面這些情況:
額度已滿;
或用戶未被列入白名單;
或用戶超額認購代幣等情況。
此時,用戶所設置的GasLimit將會被全部用盡,最終導致交易失敗。
不過以太坊拜占庭硬分叉后,增添了新的操作符Reverted(EIP-140)。當合約中出現錯誤導致交易失敗時,交易將不會耗盡GasLimit所設定的所有Gas,合約將停止執行并退回剩余Gas費用,同時告知用戶錯誤原因。
當然,如果用戶錢包中ETH的數量不足以支付Gas費用時,交易也會被判定為失敗。
在沒有熱點的時候,以太坊網絡一片祥和,所有的轉賬成本,包括時間和金額都還可控,但當風口到來,大家在網絡中就會遇到各種問題,gas費的邏輯是新人使用錢包時最大障礙。
基本上,在gas費會遇到的所有問題,這篇文章都覆蓋到了,鏈上交易并不復雜,說簡單點,一切操作有問題,加錢就可以搞定。
這場運動目前看來,以太坊上流動性挖礦的熱潮暫時告一段落,這場運動除了創造出一片泡沫之外,也讓更多用戶開始習慣錢包的使用,錢包終于成了一個高頻使用工具。
而鏈上交易發生的問題其實也在為錢包的優化提供空間,為新人提供「一鍵加速」、「一鍵取消」這樣的服務或許將可以在越來越多的錢包中看到。
如果你現在認真研究NFT,那就跟6月初研究DeFi一樣,你很可能在接下看到一個異乎尋常的市場,或瘋狂,或凋萎。NFT肇始于2016年,2017年,因為加密貓游戲,NFT迎來史詩級爆發.
1900/1/1 0:00:00來源:21世紀經濟報道,作者:胡天姣,邊萬莉數字人民幣真容在深圳正式亮相,5萬中簽幸運兒開啟了數字人民幣體驗之旅。除深圳之外,蘇州、雄安、成都也是數字人民幣的試點地區.
1900/1/1 0:00:00作者:RealBlockchain私募階段參與人數143,人均持有量63.8萬FIL,FIL平均成本為$0.57;公募階段參與人數2318,人均持有量2.57萬FIL.
1900/1/1 0:00:00養老基金和保險公司可能會在未來五年內增加其加密貨幣投資,但他們仍存在一些擔憂。 加密貨幣保險公司Evertas的一份新報告表明,機構投資者計劃在未來五年內增加對加密資產的關注.
1900/1/1 0:00:00來源:區塊律動BlockBeats幣圈所有的熱點都是財富效應引發的,NFT也一樣。先是MEME。一場突然的暴漲讓大家發現了新大陸。這是一個將流動性挖礦與NFT結合起來的項目.
1900/1/1 0:00:00據報道,YearnFinance創始人兼開發人員AndreCronje已經決定退出公眾視野,原因是據說他收到了去中心化金融社區的“死亡威脅”,并且對他非常“不道德”.
1900/1/1 0:00:00