歡迎光臨
比特幣資訊網

EIP-4844之後,StarkNet降費100倍?但我發現事情沒有這么簡單

來源:LXDAO

前言

EIP-4844 作爲 The Merge 之後以太坊最大的升級,吸引了全網足夠多的目光。這次升級引入的 Blob 臨時存儲空間,相當於在爲以太坊這列火車增加了側掛車廂,在不影響火車原有運行狀態的前提下,提供了更便宜的數據可用性空間。

Optimism、StarkNet、Arbitrum 等 Layer 2 網絡都在短時間內支持了 EIP-4844,並獲得了顯著的降費效果,以下是 LXDAO 國庫在 Optimism 上爲貢獻者發工資的交易,前後的 Gas 費竟然相差了 100 倍。

但在驚喜的同時,我們發現 StarkNet 作爲 ZK Rollup 的代表,居然也獲得了驚人的降費效果,從以前 Gas 消耗動不動就超過 1$ 的水平,也下降到了 0.01$ 。

想了解更詳細的技術原理,歡迎大家進入 MyFirstLayer2 學習。

注:MyFirstLayer2是一個由以太坊基金會支持、LXDAO 發起的 Web3 教育項目,旨在通過各種吸引人的教學方法,如文字、圖片、動畫和交互,幫助新人理解Layer 2的發展歷史和基本概念。

爲什么 StarkNet 的降費令人感到驚訝?

OP Rollup 與 ZK Rollup 對一層存儲空間需求的不同

因爲 OP Rollup 和 ZK Rollup 對 DA 費用(Data Availability:數據可用性,包含對數據的存儲和分發服務,以便讓第三方取得希望獲取的數據)的依賴程度不同。

OP Rollup 會將近期交易的所有細節,包括用戶籤名等信息,打包壓縮後全部上傳到一層網絡。它不需要在一層網絡進行太多的驗算任務,幾乎所有的成本都在使用一層網絡的存儲空間之上。

ZK Rollup 相比之下,對數據擁有更高的壓縮率。比如它可以拋棄用戶籤名數據,依靠零知識證明來確保交易合法;並且不需要打包所有交易細節,只需將狀態的變化打包上傳。

舉個例子,在二層網絡上,有 100 個用戶在 USDC / USDT 交易對進行了交易,每次交易用戶以及 Swap 合約裏的 USDC、USDC兩種余額都會發生變化。對 OP Rollup 來說,就是 100 條交易、200個账戶的 400 次余額變動;而對 ZK Rollup 來說,涉及用戶余額變化部分的差異不大,但對 Swap 合約來說,它的 USDC、USDT 余額共計 200 次的變化就可以壓縮爲 2 次最終余額的變化,大大減小了數據體積。

ZK Rollup 驗證 ZK Proof 消耗的額外 Gas

了解了兩者區別之後,大家的第一印象也許是 ZK Rollup 的 Gas 費會普遍比低,但實操過的同學們應該都知道,諸如 StarkNet、ZkSync 等 ZK Rollup 的 L2,其費用往往是顯著高於 OP Rollup 的,特別是 StarkNet 的 STARK 技術路线比其他 SNARK 路线的 ZK Proof 體積更大,在各 L2 轉账費用的排名裏常常處於墊底位置。

ZK Rollup 沒有一上线就將 OP Rollup 打得滿地找牙的原因很簡單,是因爲它雖然對交易數據有更高的壓縮率,節省了向一層傳輸數據的費用,但它需要在一層網絡上驗證零知識證明的合法性,增加了計算的費用。

而 Blob 只能降低存儲部分的費用,對計算部分是沒有任何幫助的,因此 ZK Rollup 能在 EIP-4844 上獲得的好處是更少的,所以看到 StarkNet 從排名倒數的“後進生”進步到與全班第一名第二名同一水平线上,很難不讓人驚掉下巴。

StarkNet 費用的探索

不得不說 ZK Rollup 的機制要遠比 OP Rollup 的復雜,比如通過 Optimism: Batcher 合約在升級前後向主網打包數據的費用中,任何人都完全能理解爲什么它的交易費用下降了兩個數量級。

點擊藍字了解更多:

升級前最後一筆舊 Batch。

升級後第一筆新 Batch(包含 Blob 費用共 0.0011 ETH):

6 個 Blob 的費用(合計 0.00078 ETH)

但在探索 StarkNet Gas 費用的過程中,筆者卻經歷了相當大的困難,甚至遇到了多次劇情反轉,這個探索的過程本身也極具啓發性,讓我們一起隨着文章來重溫一遍。

消失的 L1DA

因爲有了探索 Optimism 降費祕密的經驗,我們很自然就想到,只需找到當初 StarkNet 向主網提交數據的合約就可以了,這種重要合約肯定一度在 Etherscan 的 Gas 消耗榜榜上有名,應該是不難找的,還沒適配 Blob 的 Scroll 至今還名列前茅掛在耀眼的頂端呢。

當我們搜索 StarkNet 關鍵詞之後,會找到 Operator、Core Contract、Memory Page Fact Registry 3個相關合約,但第三個看起來和存儲空間相關的合約,在接近兩年前就已經停止使用了。

於是我們只能看到 Operator 在不斷和 Core Contract 交互,不斷地更新最新的狀態。

並且如果我們翻到適配 Blob 的前後,發現 Operator 的 Update State 交易確實進行了升級,但都僅僅是指向另一個數據包的哈希。甚至於後來的 updateStateKzgDA ,消耗的 Gas 反而變多了,這完全不能解釋 StarkNet 降費的原因。

後來的這個更新,僅僅是一個 KZG 多項式承諾,用於證明 Blob 裏的數據和它對應的 Batch 的數據包是對應的,也只是一個“狀態根(State Root)”。這個狀態根對應着記錄着二層網絡所有合約所有狀態的“小账本”,這個小账本理論上也是存在於一層網絡上的。

那么問題來了,爲啥只剩個根?那厚厚的小账本上哪兒去了呢?

第一次挫敗後的分析

雖然第一次探索不太成功,但我們仍然能得到一些推論和猜想。看過 MyFirstLayer2 的小夥伴一定知道 Rollup 探討的核心問題就是 DA 問題(數據可用性),而它們採用的方案都是將關鍵數據上傳到主網來解決數據可用性的問題,讓所有人都能輕松訪問到需要的數據。

  1. OP Rollup 其實是簡單粗暴地把每一條交易都壓縮打包上傳一層網絡,那么其他人就可以通過解壓之後,Replay 每一條交易來獲取到二層小账本的全貌,以檢驗交易是否被正確執行。

  2. ZK Rollup 則不需要上傳全部交易細節,只需上傳 State Diff(每個批次狀態變化的部分)即可,由零知識證明來確保所有交易已經在二層被正確執行。而其他人則可以通過 Replay 多次狀態變化的結果,來還原二層小账本的全貌。

而且我們知道 Blob 裏的數據對一層來說只是一串二進制文本,一層只保護 Blob 裏數據的准確性而不驗證其合法性,一層的智能合約也無法讀取並驗證 Blob 裏的內容,因此如果仍由一層來驗證 ZK Proof,那 ZK Proof 本身肯定不能放在 Blob 裏,所以 StarkNet 能夠有一定的降費效果,一定是把每個批次的 State diff 放到 Blob 中了。

所以我們下面的任務顯然就是搞清楚,StarkNet 到底把 State diff 放在哪裏了?過去是放在哪兒的,現在究竟是不是放 Blob 裏面了。

此外,只能找到一個狀態根的現實也不禁讓人懷疑,是不是很早以前 StarkNet 就悄悄把向主網上傳狀態變化的數據,改爲由自己的 DAC (數據可用性委員會)負責了,如果真的是這樣,那之前StarkNet 高昂的收費就完全沒有道理,只能解釋爲……

相關鏈接:

https://layer2.myfirst.io/zh#2.4-rollup

SHARP 系統

所幸和@0xYandhii討論之後迎來了新的曙光,StarkNet 在通用型主網上线之前,第一個產品其實是 StarkEX,包括去中心化衍生品交易所 DYDX 也是那個時期的產物。在主網上线之後,原先的產品沒有被放棄,而是轉而與主網共享一個驗證系統。

即 SHARP: Shared Proving and Verifying System 系統,然後我們就找到了SHARP Blockchain Writer、Starkware: SHARP Verifier等相關合約。

打开區塊瀏覽器查詢相關交易,可以發現 SHARP Blockchain Writer 進行了以下4類操作:

  1. Verify Merkle:驗證默克爾樹

  2. Verify FRI:Fast Reed-Solomon Interactive Oracle Proof of Proximity,用於確保提交的數據或計算結果遵循特定的規則或約束,而不需要揭示數據本身的內容。

  3. Register Continuous Memory Page:在一個周期內上傳一百多次,注冊連續的內存空間,疑似是向一層網絡寫入數據的部分。

  4. Verify Proof And Register:一個周期一次,快則十分鐘,慢則一兩個小時,應該是攢夠足夠多的交易進行一個批次的驗證。

不難看出 1、2、4 個步驟是與零知識證明相關的步驟,而第 3 個步驟注冊內存空間顯然是向一層網絡寫入數據的步驟,是最有可能存放 State diff 的地方。

合理推測是那三個驗證步驟的費用在 Blob 升級前後沒有顯著變化,而第 3 個步驟的費用,應該能解釋 StarkNet 前後兩個數量級的降費效果。

於是筆者繼續翻區塊瀏覽器,在 EIP-4844 前倒數第二個舊版本、倒數第一個版本,已經升級後的最新版本 3 個時期各取一個驗證周期,統計 4 個步驟消耗的 Gas 如何。

結果如下,令人撓頭。

內存費用有下降一半,但從其在一整輪 ZK Proof 驗證過程中的費用佔比來說,這個 DA 下降的水平說明不了任何問題。

探索走到這裏幾乎就到了山窮水盡的一部,筆者感覺自己就像三體世界裏坐在大型粒子對撞機前的物理學家,每個腦細胞都在尖叫着:This doesn't make sense ! 我甚至去 StarkNet 社區發了一篇帖子詢問,但也許是因爲問題涉及太過復雜,英文社區也遲遲沒有人回應。

SHARP 系統 GasUsed 探索

至此,我們還剩最後一個小 Trick ,之前下載的交易數據 csv 裏面,只有 Gas 費消耗的 ETH ,沒有 Gaslimit 等信息,所以無法排除 Gas 單價波動對統計的影響。於是筆者寫了腳本將之前涉及的每一筆交易實際消耗的 GasUsed(Gaslimit 裏被使用掉的部分)統計了出來。

終於,曙光出現!可以看到在升級之前,注冊內存空間的交易其實是 2 筆一組發送的,一筆 Gas 是最低的 5 萬,而另一筆一般在 30 萬左右。

而升級之後,則幾乎所有的注冊內存交易都變成了 5 萬的低消耗交易。

上一次的奇怪結論很可能是我們取的樣本太少,正好那一次升級後的驗證周期裏,趕上了大段的主網 Gas 暴漲的時期,使得維持時間比較久的上百次 Register Continuous Memory Page 交易都花了更高的 Gas,使得統計出來的結果產生了偏差。

按照這個思路我們重新整理了 3 個時刻的 GasUsed 數據,這回合理了許多。至此可以證實 Memory Page 確實在升級之後體積顯著縮小,這應該就是存放 State Diff 狀態變化數據的地方,而升級之後這部分數據則轉移至了 Blob。

並且後續我們在 l2beat.com 上找到了 StarkNet 的技術示意圖,可以發現 State diff 確實如我們所料,是存放在 Memory Page 中的。

那么最終,我們根據 GasUsed 的數量計算(以目前隨機抽取的較小樣本量來寬泛估計),實際對 StarkNet 來說 L1DA 的費用大概有 4 - 10 倍的縮小空間,略低於一個數量級。這也符合理論推演:在 EIP-4844 升級中,ZK Rollup 獲得的好處並不如 OP Rollup 那么多。

總結

經過以上的探索,我們終於理清了 StarNet 降費的原因和程度,其結論還是有點耐人尋味的。

L1DA 費用大降,但解釋不了兩個數量級的下降

可以明確 StarNet 之前是把每一批次狀態變化的數據寫入一層網絡的,現在則是將這部分數據放在了 Blob 中,因此在注冊內存空間的行爲中可以獲得略小於一個數量級的降費效果。

但 StarkNet 從之前倒數第一第二的水平,躋身到與 OP 系尖子生們一個水平的降費效果,從相對進步程度來說甚至吊打了全體 OP Rollup,這么顯然是不可能的。

那么唯一合理的解釋就是——之前確實“心黑”收太高了。在 STRK 代幣發行之前,StarkNet的所有开發,社區激勵都需要資金,除了燒投資人的錢之外,設置更高的 L2 L1 Gas 差價可能是他們維系开發的方式之一,才造成了此前 StarNet 令人尷尬的 Gas 費局面。

而現在 STRK 代幣發行爲他們帶來了足夠的流動資金和生態激勵手段,也就是時候讓 Gas 回到合理的水平了,趁着這波 Blob 升級把綁在腳上的沙袋一起拆下,其展現出的降費效果確實驚豔了許多人。

ZK 的 OP 化

OP Rollup 在升級之後,將原本存儲在以太坊主網 Calldata 裏的數據轉移到臨時儲存區之後,其實犧牲了一點點的安全性。

在此前,Calldata 空間的數據是永久儲存的,意味着任何人都能從以太坊主網裏獲取足夠的數據,來還原 OP L2 上當前的所有狀態。

但升級之後,Blob 的數據將會過期,如果全網沒有任何一個實體保存過去的 Blob 數據,那 OP L2 的歷史交易記錄有可能會丟失。雖然當前最新的二層網絡狀態仍然能被保護——因爲 Blob 的保存期限超過 OP 的 7-14 天挑战期,所以每個 Blob 在即將過期之前,它所對應的二層狀態仍然是可信的,這最新的十幾天的交易記錄滾動地維護着 OP L2 的安全性。

ZK Rollup 如果希望享受 Blob 帶來的好處,同樣需要把重要的二層狀態數據,從永久的 Calldata 空間轉移到 Blob 空間裏去。這意味着在一段時間後,我們也不再能像以前一樣,依靠一層網絡提供的數據來 Replay 二層的狀態。

也許這將成爲一種新常態,今後所有的二層網絡,都依靠 Blob 維護最新狀態的安全,而每一條 L2 也需要自己另外想辦法解決歷史交易數據的可用性,如此在安全和效率之間取得更好的平衡。

OP 與 ZK 的融合趨勢

過去,第一代的 OP Rollup 率先上线,而第一代的 ZK Rollup 上线後沒有帶來更具競爭力的 Gas 費。到後續 OP Stack、Polygon SDK 出現帶來的模塊化風潮,OP Stack 甚至計劃在將來引入 ZK 技術來降低挑战期。

這無疑都指向一個事實:OP 與 ZK 兩種技術路线並不是你死我活的競爭,他們會互相借鑑,有融合的趨勢,只不過這一次是“高貴”的 ZK 向“簡單粗暴”的 OP 學習的一次。

很難想象二層網絡的技術在短短兩三年之間演化到如此的地步,也許這就是區塊鏈世界的魅力吧。

參考資料:

[1] FeedTheFed. Data availability with EIP4844[EB/OL]. (2024-02-11)[2024-04-16]. https://community.starknet.io/t/data-availability-with-eip4844/113065.

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。


標題:EIP-4844之後,StarkNet降費100倍?但我發現事情沒有這么簡單

地址:https://www.globalstockvip.com/article/67607.html