由亞歷杭德羅·蘭查爾-佩德羅薩撰寫。
我們要感謝Luca Donno和Jonas Theis對本文初稿的深思熟慮的評論和意見。
Rollup 通過在鏈下處理交易並定期向 Layer 1(L1)提交簡潔的正確性證明,實現了卓越的可擴展性。雖然這保證了快速的鏈上最終性(可由 L1 智能合約驗證),但用戶對快速的鏈下最終性的需求日益增長——確保Rollup排序器確認的交易即使在數據在 L1 上完全提交和驗證之前也不會被撤銷。
快速鏈下最終確定性的挑戰
為用戶提供快速的鏈下最終性存在著固有的挑戰:
- 安全問題:如果在 L1 上提供不可逆的交易數據承諾之前信任排序器,則依賴快速確認的用戶可能會面臨雙重支付攻擊的風險。
- 高數據可用性(DA)成本:立即將交易數據提交給 L1 可確保鏈下最終性,但會顯著增加運營成本。
因此,當前的設計將鏈下最終性直接與即時 DA 發佈結合在一起,從而迫使在延遲、安全性和成本之間進行權衡:安全性要麼以高 DA 成本為代價,要麼以高延遲為代價。
隨著時間的推移,對 blob 的需求一直在穩步增長,如下圖所示的每日 blob 數量圖表所示(最近的飆升是由 pectra 升級中的新 6 個 blob 目標引起的)。
隨著時間的推移,隨著以太坊生態系統對吞吐量的需求不斷增加,對來自多個 rollup 的 blob 的需求將持續穩步增長,同時,由於擁堵導致的 blob 價格也將上漲,從而加劇 DA 成本與鏈下最終確定性之間的權衡。
引入子承諾
子承諾打破了這種權衡,它無需在鏈上發佈 DA,即可提供快速的鏈下最終確定性。子承諾是常規、頻率較低的承諾(會在鏈上發佈 DA)的補充。子承諾包含 L2 賬本的簡潔表示,因此,在本地持有與 L2 狀態轉換對應的數據的用戶可以獨立驗證這些數據,從而實現快速安全的鏈下最終確定性。
由於消除了 DA 成本、安全性和延遲之間的權衡,子承諾可帶來兩個主要好處:
1. 更便宜的交易費用:
- 由於無需支付 Blob 費用即可立即獲得鏈下最終確定性,DA 現在僅對鏈上最終確定性而言是必需的。因此,排序器可以靈活地決定何時在最佳時間提交完整數據,從而利用更低的 Blob 價格和更好的數據壓縮率(例如,當 Blob 費用較低時,一個 Blob 中可以同時處理更多交易,這意味著每筆 L2 交易的費用更低,並且/或者Rollup的利潤更高)。
- 預計幾分鐘/小時內完整交易數據的 L2 交易數量的壓縮效率將超線性增長,如果 DA 包括提交 State Diff,那麼在大多數情況下更是如此。
- 此功能對於 zk rollups 至關重要,因為 optimistic rollups 面臨著儘快提交完整交易數據的壓力,需要儘快啟動挑戰期,並且不進一步延遲鏈上最終確定性,而 zk rollups 則不存在這一要求。因此,子提交是 zk rollups 可以用來在價格方面與 optimistic rollups 競爭的新武器,同時獲得相同的鏈下最終確定性延遲,並顯著降低鏈上最終確定性的延遲。
2.更高的安全性:
- 用戶可以通過自行提交子承諾 (DA) 獨立地將已驗證狀態錨定到 Layer-1 上,從而減少對排序器的依賴,或避免受 Layer-2 系統默認的鏈下最終確認頻率約束。雖然用戶可以通過適當的設計直接提交 DA 來實現,但對於追求更高安全性和更低延遲的用戶來說,收取如此多的額外成本是不合理的。子承諾可以以合理且恆定的成本有效地實現此功能,無論被錨定狀態轉換的 DA 大小如何。
子承諾如何運作
子提交是簡潔的元數據(通常是加密哈希值),它唯一地表示了一次 L2 狀態轉換(例如,L2 區塊序列的哈希值)。排序器會定期(例如,每 30 分鐘)提交這些子提交,其頻率明顯高於完整的 DA 承諾(例如,每 12 小時)。
或者,測序器還可以提供子承諾即服務:通過對子承諾的元數據進行簽名並在鏈下分發元數據和簽名,用戶可以自由提交由測序器自己簽名的子承諾,並獲得比系統默認提供的更低延遲的鏈下最終性(例如,一個應用程序轉移了大量資金並且不信任測序器,想要為用戶提供他們習慣的安全性和延遲級別,可以決定在前一個子承諾之後 10 分鐘進行子承諾,或者比測序器提交的默認子承諾快 3 倍)。
好的情況。因此,在排序器誠實的良好情況下,子提交協議如下:
- Sequencer 定期提交子承諾,或者用戶提交由 sequencer 在鏈下分發和簽名的子承諾。
- 觀察 L1 上的子承諾並根據其本地數據進行驗證的用戶可以放心地信任相關的鏈下狀態。
- 完整的交易數據承諾和證明稍後會進行優化,以降低 blob 費用並實現更好的壓縮。
測序器的不當行為。承諾可用於鏈下最終確定性,因為即使測序器出現故障,它們也能提供安全性保證。因此,為了使子承諾能夠提供鏈下最終確定性,我們需要考慮測序器的不當行為。如果測序器出現故障,它可能會破壞良好的情況,例如:(i) 不提交子承諾;(ii) 提交不正確的子承諾(其數據對任何人都不可用,或僅對測序器可用)。
如果定序器未提交子承諾,則Rollup會按照其通常的承諾頻率運行。同樣,已知的用於防止定序器出現此類不當行為的機制(強制批次、去中心化承諾ETC)也可用於子承諾。
如果排序器提交了錯誤的子承諾, Rollup就會面臨一個問題:這些錯誤的子承諾與排序器以外的任何人所知的交易數據都不對應。由於承諾和證明必須與子承諾匹配,因此在問題解決之前, Rollup無法繼續進行。這種情況會導致一個關鍵的邊緣情況,即可能需要撤銷子承諾。
撤銷子提交:為了處理錯誤的子提交,協議必須定義明確的超時期限。如果排序器未能在此超時期限內提交併證明狀態轉換,則可以安全地撤銷有問題的子提交。在正常情況下,由於及時提供了正確的承諾和證明,因此不會達到此超時期限。
防止序列器濫用:允許子承諾回滾會帶來新的風險——惡意序列器(與惡意證明器協作)可能會故意回滾有效交易,從而引發雙花問題。為了解決這個問題,協議設置了一個更短的超時期限,任何人都可以在該期限內提交有效的承諾和/或證明。此機制確保即使序列器行為不當,網絡依然安全,並且如果子承諾正確,交易仍然可以最終確定。如果序列器未能在去中心化承諾期開始前提交,他還可能會被削減一定數量的權益,這筆錢可以用來補貼甚至獎勵去中心化提交者。除了去中心化的承諾和證明之外,強制模式也可以作為一種防範此類攻擊的措施。
這種兩層超時結構(分散干預的較短超時和撤銷子承諾的較長超時)平衡了安全性和操作穩健性。
結論
子承諾是Rollup技術的重大改進,它為 zk-rollup 帶來了一項關鍵的競爭優勢:將 DA 成本與快速的鏈下最終確定性脫鉤。這項創新降低了成本,增強了安全性和靈活性,使 zk-rollup 比其他樂觀的替代方案更具優勢。最終,子承諾使用戶和應用程序能夠安全高效地充分利用以太坊擴容的全部潛力。








