Optimism 开銷優化:通往美分級手續費之路
譯者注:1 月份,Optimism 發推更新其 Rollup 的固定开銷 (Fixed overhead) 從 2750 gas 減少至 2100 gas,動態开銷 (Fee Scalar) 從 1.5 倍降低到 1.24 倍;3 月份又發布更新,稱將對交易的 calldata 進行一次系統級別的壓縮。而這一系列調整與更新將會給 Optimism 的开銷帶來極大的變化,進而影響用戶的交易費 (交易費平均減少 30%-40%)。這些收費部分在 Optimism 的運作中分別扮演什么角色?本文先整體介紹了 Optimism 开銷的組成部分,然後再分析對這些組成部分的調整如何影響用戶的交易手續費。
cr:@optimismPBC
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) 的縮寫。它是一種簡單的壓縮算法,將一串零替換成應該存在的多少個零。
原文鏈接:
https://medium.com/ethereum-optimism/fancy-numbers-how-we-lowered-fees-for-optimism-users-a3bb80cbc65f
https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92
來源 | Optimism PBC
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
殺》比特幣一度跌破9.6萬、以太坊苦守3300美元,超19萬人爆倉5億美元
比 特幣在剛結束的週末一度觸及 99,588 美元的歷史新高後就開啟震盪下跌,昨日傍晚左右從 98...
WBTC「大插針」閃崩至5200美元,與Coinbase宣布下架有關?
W rapped Bitcoin(WBTC)週末於幣安交易所發生異常閃崩的狀況,在 23 日晚間十...
拆解微策略買比特幣行為和資金來源 = 加強版「Grayscale + Luna」
比 特幣突破 8 萬美元!比特幣突破 9 萬美元!比特幣突破 9.5 萬美元!比特幣突破 9.9...