摘要:雖然將calldata 發布至L1 是rollup 節省gas 費的一個重要部分,但這個費用同時也是二層用戶進行交易的主要開銷。譯者註:1 月份,Optimism 發推更新其Rollup 的固定開銷(Fixed overhead) 從2750 gas 減少至2100 gas,動態開…
雖然將calldata 發布至L1 是rollup 節省gas 費的一個重要部分,但這個費用同時也是二層用戶進行交易的主要開銷。
譯者註: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) 的縮寫。它是一種簡單的壓縮算法,將一串零替換成應該存在的多少個零。
原文鏈接:
來源| Optimism PBC