如今 DeFi 的價值被發現了,人們的交易活躍度大大提高,Gas 價格也水漲船高。每個項目方都有義務,以最少的讀寫操作完成業務,爲以太坊生態省出寶貴的區塊空間。另外,每個項目方也都有義務,爲用戶尋找一個便宜且安全的 L2 解決方案。

撰文:雷明達,DODO 創始人

我在這裏系統介紹下 Gas 問題。

Gas 的使用機制

首先,以太坊的 Gas 是一種預付機制。在 DEX 的使用過程中,你會看到三個 Gas 數值

A. DEX 前端展示的 Gas

B. 錢包簽名時看到的 Gas limit

C. 在 Etherscan 看到的真實 Gas 消耗

打個比方,你去住酒店:

A. 攜程上看到的酒店價格預估 1000

B. 酒店要刷你預付款 3000

C. 走的時候結賬,住宿加酒水真實花掉 1200

下面我們先着重討論真實消耗,再討論如何讓這個數字儘可能真實地展示給用戶。

什麼叫 Gas 貴?

我們所講的一筆交易用了 100 美金 Gas,指的是:

「Gas * GasPrice * ethPrice」

這裏面,GasPrice 由用戶決定,要快速成交就多花點,不着急就少花點。ethPrice 由市場決定。

真正受產品影響的,是 Gas 消耗本身。所以要真的深入瞭解 Gas,我們討論的基礎,就要從美元,變成 Gas 數量。

數量級概念

那麼 Gas 主要消耗在什麼地方了呢?

兩大部分: 1. 數據寫入 2. 外部調用

所謂的 Gas 優化,指的就是用盡可能少的數據寫入和外部調用,來完成業務邏輯。

寫入數據花費大約 20,000~5,000 Gas,合約調用花費大約 3,000 Gas,這是最大頭的部分,由於計算執行環境的複雜,在生產環境中,下面所有提到的 Gas 消耗都是會小範圍浮動的。

  • 一筆 ERC 20 轉賬涉及兩次寫入,大約花費 60,000 Gas

  • 一筆 ERC 20 Approve 涉及一次寫入,大約花費 45,000 Gas

  • 一筆 Uniswap 單跳交易,大約花費 110,000 Gas (e.g. USDT→ETH)

  • 一筆 Uniswap 兩跳交易,大約花費 170,000 Gas (e.g. USDT→ETH→UNI)

  • 一筆 Uniswap 三跳交易,大約花費 230,000 Gas (e.g. USDT→ETH→WBTC→LINK)

由此可見,同樣在 Uniswap,一次 Swap 也可能 Gas 消耗差距很大!

這還是在路由策略非常簡單的情況下。如果路由策略開始變得複雜,例如 1inch 或 Matcha,一筆交易的 Gas 可以在 150,000 到 1,000,000 之間浮動。

因此,不能簡單地講某個平臺的 Gas 貴。

看起來聚合器的 Gas 比 Uniswap 貴很多,是不是應該拋棄聚合器?

並不是這樣的。

聚合器雖然 Gas 貴,但這不是傻貴。貴是因爲有額外邏輯要執行,而這些額外邏輯會帶來很大的利潤。如果利潤能覆蓋 Gas 的額外開銷,那就應該使用聚合器。

在過去聚合器可能不太在意 Gas,但現在 Gasprice 和以太坊價格的提高,使得 Gas 的美元開銷增長了 100 倍。所以在 DODOV2,我們會綜合比較 Gas 和報價,給出平均成本最低的解決方案。

DODO 貴不貴

貴,也不貴。

DODO 在執行路由時,會在原始流動性外包一層函數調用,會比流動性源頭貴 40,000 gas 左右。

但是:

  1. 經過 gas 補貼後,DODO 的 Gas 消耗可以做到和流動性源一樣甚至更便宜。
  2. 考慮到報價的優勢,雖然 Gas 的開銷大,但平均成本在 DODO 最低。

如何合理地展示 Gas

回想之前酒店的例子。

如果你是攜程,你的目的是儘可能真實地展示用戶實際花銷 。

普通用戶都已經被教育好了,去住酒店,刷的預授權肯定比消費的多,也不會太在意。

A. DEX 前端展示的 Gas

B. 錢包簽名時看到的 Gas Limit

C. 在 Etherscan 看到的真實 Gas 消耗

但是以太坊用戶還遠遠沒有理解這些機制,他們不知道錢包彈出的是預授權。如果你在網頁上直接顯示數字 C,但錢包彈出的數字 B 很大,用戶會感到非常困惑。

所以在 DODO 的網頁上會先顯示數字 B,以保證和錢包端的統一。再顯示數字 C,以保證沒有讓用戶望而卻步。

這裏 0.084 是數字 A,即錢包預授權。0.084-0.042 是數字 C,即 DODO 預估你真正的花銷。在此場景下,你真正的花銷和 Uniswap 單跳是差不多的。

以太坊 DeFi 的 Gas 消耗是否還有改進空間?

DODO 的 Gas 還有改進空間嗎?

有的,在 DODOV2 主要體現在以下幾方面:

  • 綜合比較 Gas 和報價,避免出現報價優勢,卻因 Gas 過貴而使用戶利益受損的情況;
  • 路由的改進,減少上層計算開銷;
  • V2 池子的 Gas 優化,減少下層計算開銷;
  • 更準確的 Gas Price 估算,讓用戶精準插隊(這一點要感謝星火礦池的 Gasnow 服務);
  • 支持 BSC,L2 平行遷移。

總結

Gas 是所有項目躲不開的痛,這是一種幸福的煩惱。我經歷過以太坊 1 gwei 打包交易的慘淡時光,那時鏈上交易和不要錢似的,但是生活卻非常難捱。

如今 DeFi 的價值被發現了,人們的交易活躍度大大提高,Gas 價格也水漲船高。每個項目方都有義務,以最少的讀寫操作完成業務,爲以太坊生態省出寶貴的區塊空間。

另外,每個項目方也都有義務,爲用戶尋找一個便宜且安全的 L2 解決方案。

DODO 一直將 Gas 問題當作一個科研項目,並走在科研的第一梯隊裏。我們期待用戶可以儘早體驗到 V2 帶來的 Gas 優化,並歡迎任何關於 gas 優化的提議。