GasNow:真正的 Gas 價格指示器

買賣虛擬貨幣
對於以太坊使用者來說,真正的靈魂三問莫過於:我在做什麼交易?我該給多少的 Gas?應該把 Gas Price 設成多少才經濟實惠?簡單來說,Gas 是用來度量以太坊上一筆交易所需花用的計算量的單位。一筆交易的複雜度越高,所需花用的 Gas 也就越多,所以,越是複雜的交易,在發起交易時越要設定(預留)較多的 Gas 額度,如果發起者預留的 Gas 數量不夠多,交易會因為計算資源耗盡而失敗。但是好就好在,這事用不著操心,可以設一個自己的賬戶支付得起又充分大的數值,因為,沒有用掉的 Gas 是不會計算手續費的,換言之,雖然你設定了這筆交易可以用掉 100 Gas,但實際上只用掉了 20 Gas,那打包你的交易的出塊者就只能得到 20 Gas 的手續費,不能白收你的。此外,現在的 Gas 使用量估算技術已經很普遍了,使用者使用 Metamask 錢包外掛跟應用互動的時候,會發現自己根本不需要手動設定 Gas Limit,外掛已經幫你估算好了。但是講到 Gas Price,就頭疼了。大家都知道,這個參數列達的是交易發起者自己願意為每一單位的 Gas 支付的價格,而這部分價格最終會被打包該筆交易的出塊者得到;有鑑於此,出塊者當然青睞那些 Gas Price 高的交易。但是,誰不想讓手續費便宜一些呢?誰不想經濟實惠地達成交易呢?

因此,幾乎所有的以太坊使用者在日常使用中都會接觸到一種工具:Gas 價格指示器,它的作用是告訴你,你設定多少的 Gas Price,就能讓自己的交易在自己想要的時間內被打包。比如下圖展示的就是生態裡可能是最常用的 Gas 價格指示器:Gas Station。

大多數像你我一樣的使用者,在使用 Gas Station 時都不會發覺有什麼問題。但是,假如你要做高頻的交易呢?或者假如你要寫一個交易機器人呢?Gas Station 真的可以依賴嗎?

這可不是在找茬,也不是裝神弄鬼。這篇文章就提到了 2020 年 3 月 14 日(因 ETH 價格暴跌而導致鏈上活動大量增加)時候許多使用者的艱難遭遇:在以太坊協議中,一個賬戶發起的交易是有順序的,由一個只增不減的流水號 nonce 來標記順序;當你的前序交易因為 Gas Price 太低而被出塊節點丟棄的時候,不論你給後序交易設定再高的 Gas Price,都於事無補,因為節點不能越過前序交易直接打包後序交易,但是前序交易已經丟棄了,這就等於使你的賬戶鎖死了。唯一的解救辦法就是找回你最早一筆還未上鍊的交易,使用這筆交易的流水號重發一筆交易,並且 Gas Price 要足夠高。同樣地,許多交易機器人也因為同樣的原因被卡,原因就是因為它們依賴的 Gas 價格報告器對網路 Gas 價格的預估有誤,發出幾筆交易之後,機器人就卡死了。

這些血淋淋的教訓充分說明了,為每一筆交易安排合適的 Gas 價格,有多麼重要。因為當鏈上應用活躍的時候(比如前一段時間的 Yield Farming 熱潮),一筆交易的成功不僅會影響這筆交易,還會影響後序交易。

但是,是什麼阻礙了我們獲得準確的 Gas 價格估計呢?我們能克服嗎?

在最根本上來說,阻礙我們的是區塊鏈網路的點對點網路架構:所有節點都是分散的,當某一筆交易被髮送到一個節點時,該節點做一定的校驗之後會把交易資料廣播給其它節點;這種網路結構決定了,沒有任何一個節點能實時獲得整個網路的未處理交易的全域性狀態,交易的傳播需要時間,也需要偶然(某些節點可能會用更高的 Gas Price 作為門檻、拒收低手續費的交易來保護自己)。對於這一點,我們只能改善,不可能從根本上克服,因為我們不想要一箇中心化的網路結構。

但另一方面,至關重要的是我們預估 Gas 價格的方法。目前為止,絕大部分 Gas 價格指示器所用的方法,都是根據過去一段時間裡被打包到區塊裡的交易的 Gas 價格加以統計方法處理,得出對未來 Gas 價格的估計。仔細想想這其實很不合理,在你發交易的這一刻,決定你的交易多快能上鍊的是現有未處理交易中比你交易的 Gas 價格更高的交易有多少,以及在你的交易還未打包的這段時間裡有多少人發出了比你的 Gas 價格更高的交易。拿已經上鍊的交易,也就是歷史資料,去做這樣的預估,貌似合理,實則荒謬。當網路活動快速增加、Gas 價格快速攀升的時候,按歷史資料估計的方法大概率只能給出低估的 Gas 價格。更準確的估計應該基於現有未處理交易的 Gas 價格分佈,哪怕還需要統計方法處理,也會比拿歷史資料來估計要更簡單。

這就是 GasNow 厲害的地方。它不再基於歷史資料來預測未來,它基於星火礦池節點的交易池中交易的 Gas 價格分佈。為了收益的最大化,礦池一方面要儘可能地收集交易,另一方面,要從高到低打包交易池中待打包的交易。所以,GasNow 給出的資料,是真正具有參考意義的。

理論上來說,所有的 Gas 價格指示器,都應該轉變成 GasNow 這樣的模式,不再根據歷史資料,而是根據實時資料,來幫助使用者做決策。但饒是如此,GasNow 也是有競爭力的。因為礦池的交易池會比普通的、沒有最佳化的節點的交易池更全面,更有參考意義。

Gas Station 在自述中說,“希望能提高 Gas 價格的透明度”,這當然是個很有意義的目標;而且,Gas 價格的不清晰,其實根值於網路的點對點特性(因此,我個人非常不願意把這種不清晰當成是一種 “問題”),值得更多人作出更多的嘗試,用服務本身的分散性來降低點對點網路帶來的不確定性、使我們獲得更全域性的視野。

但至少,GasNow 應該是離這個理想更近一步了。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;