1 月份,Optimism 發推更新其 Rollup 的固定開銷 (Fixed overhead) 從 2750 gas 減少至 2100 gas,動態開銷 (Fee Scalar) 從 1.5 倍降低到 1.24 倍;3 月份又發布更新,稱將對交易的 calldata 進行一次系統級別的壓縮。而這一系列調整與更新將會給 Optimism 的開銷帶來極大的變化,進而影響用戶的交易費 (交易費平均減少 30%-40%)。這些收費部分在 Optimism 的運作中分別扮演什麼角色?本文先整體介紹了 Optimism 開銷的組成部分,然後再分析對這些組成部分的調整如何影響用戶的交易手續費。

— 譯者註
cr:@optimismPBC

譯文:次美元交易之路,第 2 部分:壓縮版(Optimism PBC)

編譯: EthereumCN

Optimism 交易費介紹

想要理解我們是如何減少開銷的,首先需要了解 Optimism 交易費的組成部分:1)  Rollup 開銷:將交易 “rollup” (打包) 進交易 batch 中然後提交至以太坊主網 (L1) 的開銷;2)  L2 執行開銷:在 Optimism (L2) 上運行交易的開銷。想要深入研究,請閱讀 "Optimism 是如何運作的"  文檔。

1) Rollup 開銷

在 Optimism 中用戶不再需要支付整個交易執行的 L1 gas 費用,而只需支付將你的交易數據通過交易 batch 提交至 L1 所產生的那部分費用。這筆費用包括你的交易的實際 Calldata  (輸入數據) 和固定開銷 ( Fixed Overhead ) 產生的費用,即在更大的交易 batch 中添加一個交易所需的額外處理費用。

Optimism 還增加了一個動態開銷 ( Fee Scalar, 費用比例係數) 作為附加費用。這給了我們一些額外資金用來作為緩衝,以防 L1 價格迅速上升,而多餘的資金用於推動公共物品發展。(Optimism PBC 發布的 《追溯性公共物品募資》文章中有承諾這一點,還可以閱讀我們首輪募資的回顧文章)

Calldata 的開銷和 L1 gas 價格是由以太坊 L1 決定的,但是固定開銷 (Fixed Overhead)  和費用比例係數 (Fee Scalar)  是可以由 Optimism 調整的 “花哨數字”。

“L1 gas 費” 代表這些 rollup 開銷:

Layer 1 Gas Fee =Fee Scalar * L1 Gas Price * (Calldata + Fixed Overhead)

目前 Optimism 一筆交易費中 rollup 開銷佔大概 99.6%,所以我們可以通過優化這一部分大大地降低交易費用。

2) L2 執行開銷

Optimism 上的交易使用的 gas 量與以太坊上的同等交易使用的 gas 量相同;但是,Optimism 上 gas 的標准開銷只有 0.001 gwei,比 L1 便宜很多倍。這個 gas 價格在使用率高期間會略有增加,但平均只佔總交易費的 0.4%。

“L2 gas 費” 代表著執行開銷:

Layer 2 Gas Fee = L2 Gas Price * L2 Gas Used

交易費用的節省

將 rollup 開銷和 L2 執行開銷相加,我們就得到了總的交易費用。對於簡單的交易 (如 ETH 轉賬),Optimism 上的費用比以太坊便宜約 5 倍,但對於更複雜的交互 (如進行一筆永續 swap 交易或者期權交易),Optimism 能比直接使用以太坊 L1   便宜 200 倍以上

發現我們新的費用參數

在我們降低費用之前,固定開銷參數被設置在 2750 gas 每筆交易,費用比例係數被設置在 1.5 倍。後來對它們都做了一些調整:

  1. 更低的開銷結構:由於 Optimism 在去年 11 月 11 日進行了 EVM 等同性 (EVM Equivalence) 升級,提交 Optimism 交易 batch 至 L1 需要的 gas 變少了。實際開銷減少了將近 25%,從 2750 每筆交易降至 2100 gas 每筆交易。
  2. 從經驗中學得什麼:雖然現在 Optimism 仍處於十分早期的階段,但自我們上線主網這幾個月以來,我們知道我們有能力將額外費用從 35% 的利潤率減少至 10% 的利潤率 (利潤率= [L2 收集的費用- L1 提交開銷]/L2 收集的費用)。
EVM 等同性升級後開銷gas 降低

預測和優化

下一步就是將更低的開銷轉化成 Optimism 用戶更便宜的手續費。為了恰當地調整固定開銷費用比例係數這兩個參數,我們必須理解什麼影響了我們的費用:

  1. Calldata:Calldata gas 的多少由交易類型決定 (比如,ETH 轉賬:0 calldata gas、Chainlink 預言機更新:890 gas、Uniswap V3 交易:3200 gas)。平均一筆交易使用 1100 calldata gas,但這個 gas 可能會變高,也可能會隨著 Optimism 上不同的 app 被普遍採用之後變低。
  2. 開銷:隨著總 batch 的尺寸變大,在一個 batch 中添加一筆交易的開銷會減少。這是 L2 擴容與 L1 擴容不同的一個地方:交易越多,交易費就越便宜。開銷已經從 2750 gas 減少到 2100 gas,並會隨著 Optimism 的使用率增加繼續減少。
  3. L1 Gas 價格:交易在 Optimism 上發生了之後過幾分鐘就會被提交至 L1,而 L1 gas 價格在這段時間內變化相當大。如果 L1 gas 價格升高,提交者需要支付比預期多的 gas 費;如果 L1 gas 價格下降, 那麼就會支付比預期少的 gas 費。在 gas 價格波動期間,可以有 10% 的差距。
根據batch 大小而變化的開銷gas 費用

现在我们知道这些因素是什么样的了,但一旦我们降低费用,预计使用情况就会发生变化 (比如,更多的交易,使用更多的 calldata)。因此,我们做了一些假设,提出了一系列的方案,然后在这些范围内模拟了 5000 个随机日 (参考蒙地卡羅方法, Monte Carlo method)。之后我们得到一个简单的优化问题:通过调整固定开销费用比例系数,尽可能地接近 10% 利润的目标。

結論是:將固定開銷調為 2100 gas,費用比例係數調為 1.24 倍。

想了解最新的數據嗎?請看我們的交易開銷 dashboard

圖像

Optimistic rollup 正迅速地走向成熟。我們度過了 “0 到 1” 的階段之後,接下來要開始進行 “優化” 了—— 最實在的優化是開銷方面的優化。在下個月之內,我們將在任意的產品級 ORU 網絡上部署首個系統級別的 calldata 壓縮,實現費用降低 30-40%。

未來,我們還有其他一些計劃來節省更多的 gas 費,今年夏天會推出下一個主要版本:Bedrock。這篇文章深入探討了 calldata 壓縮的細節:特別是我們如何評價各類壓縮算法,以及如何利用它們實現我們的亞美元級別的收費。

Calldata 概覽

Optimism 使用以太坊作為其數據可用性層。這意味著每一筆在 Optimism 執行的交易都會存儲在以太坊上 (但不在上面執行)。目前我們將 Optimism 的交易存儲在 calldata 中。多筆 L2 交易被成批地打包進一個二進制 blob 中,並且該 blob (加上其他信息) 存儲在交易的數據字段中。想要檢索回那個數據,我們需要看回交易主體本身 (存儲在區塊內)。因為以太坊的區塊有保存下來,Optimism 鏈的交易總是可以藉助以太坊重構。

雖然在區塊中存儲數據比在合約狀態中存儲數據要便宜得多,但永久保留歷史區塊確實會給節點運行者帶來成本。因此,以太坊對 calldata 收費。每一個 0 字節的 calldata 消耗 4 gas,每一個非 0 字節的 calldata 消耗 16 gas (0 字節類的在提交給 Optimism 的交易中佔 40% 左右的字節)。

雖然將 calldata 發布至 L1 是 rollup 節省 gas 費的一個重要部分,但這個費用同時也是二層用戶進行交易的主要開銷。也就是說,我們可以減少 calldata 發布的數據量越多,rollup 的交易費就可以越便宜。走進壓縮:縮小數據大小的藝術!下面將對實際運行的數據壓縮進行深入分析:

壓縮的概覽和結果

我們研究了 Optimism 提交給以太坊的 2.2 萬個 batch (將近 300 萬筆單獨交易),並以不同的配置對其進行壓縮,以確定如何最好地執行壓縮,並對可能的情況進行實驗。

我們還研究了各種壓縮算法,併計算了壓縮率 (壓縮後的數據大小占未壓縮大小的百分比) 和預估節省的費用 (假設交易中 40% 的字節是 0 字節)。

需要了解的一個配置選項是字典 (dictionary)。提前創建一個字典,以顯示現實數據中常用的算法數據分塊。壓縮算法使用字典來更好地壓縮數據,特別是在一次性壓縮少量數據時。通過隨機抽取交易樣本,我們可以為 zlib 和 zstd 創建一個字典,這可以在壓縮單筆交易和交易 batch 時提高壓縮率。

由於以太坊交易中的大多數字段都是隨機的 (地址和函數選擇器是哈希值,簽名應該都是隨機的),單筆以太坊交易的壓縮率並不高。因為以太坊上 0 字節本身就很省 gas,而壓縮算法會迅速移除這些字節,所以節省的費用不會像壓縮率那麼多。因此,為了節省最多的費用,我們需要在盡可能多的數據上運行一個高級的算法。

下面是對交易本身進行壓縮的結果:

圖像

正如你所看到的,壓縮單筆交易本身只會讓我們節省 10-15%。請注意,交易大小減少的幅度比這個還大,但節省的幅度較小—— 這是由於上面討論的更便宜的 0 字節。

帶有字典的 zstandard 算法明顯性能更好,因為每筆交易和存儲在字典中的交易之間都有共通點。但是,當一次性壓縮大量數據時,zstd 的性能仍然更好。

另一個極端就是一下子壓縮所有單筆交易。這在實際中是不可能實現的,但可以作為最大壓縮比率的例子研究。

圖像

另一個極端就是一下子壓縮所有單筆交易。這在實際中是不可能實現的,但可以作為最大壓縮比率的例子研究。

因此,在這個例子中,我們可以通過壓縮節省 10%-50% 的開銷。但在實踐中,我們能實現什麼呢?

圖像

當查看交易的壓縮 batch 時 (數百筆交易),它們的壓縮率明顯比壓縮單筆交易的壓縮率高,但是要比一次性壓縮所有交易略低一些。這是因為用戶傾向於與某些合約交互。此外,某些字段 (如鍊 ID 和 gas 價格) 在交易中趨於相似。壓縮算法依賴於這些相似性來完成它們的工作。

在比較不同的壓縮算法時,我們發現 zlib、zstd 和 brotli 是壓縮率最高的算法。我們排除了 Brotli 是因為在差不多的壓縮率下,它比 zstd 或 zlib 慢得多。一般來說,某種算法的壓縮率越高 (或某個算法的設置壓縮率越高),這個算法就運行得越慢。在通用基準測試中,在比較過一系列壓縮速度/壓縮率之後,zstd 往往比其他壓縮算法性能更好。還要注意的是,以太坊交易與基準測試中的數據具有不同的特徵。

Zlib 和 zstd 十分接近,我們將在短期內推出 zlib 壓縮 (不帶字典),因為它在不同的編程語言中都有良好的結果、速度和可用性。長期來看,我們希望 zstd 能夠幫助實現盡可能高的壓縮率和盡可能低的用戶費用。

總結

綜上所述:如果按照這樣的歷史趨勢繼續下去,我們預計可以通過引入上述所說的壓縮方法,將費用減少 30%-40%。

使用 Zlib 壓縮算法的 batch 很快就會在 Optimism  上應用。

  • 3/17  推出 Kovan 測試網
  • 3/24  上線主網

基於 Zstd 算法的壓縮 (帶有字典的) 在 Optimism 未來的升級路線規劃中:Bedrock,將在今年晚些時候發布。

除了通過壓縮減少用戶的費用之外,Optimism 同時正研究如何通過 EIP-4844  和類似的方法來改善以太坊作為數據可用性層的能力,以進一步減少開銷。

附錄:算法總結

圖像

ZLE 是零字節運行長度編碼 ( zero-byte run length encoding ) 的縮寫。它是一種簡單的壓縮算法,將一串零替換成應該存在的多少個零。

聲明:ECN 的翻譯工作旨在為中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及 ethereum.cn,若需長期轉載,請聯繫 ethereumcn@gmail.com 進行授權。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。