分片“老古董”華麗轉身,本地Rollup閃亮登場
原文作者 | Taiko Labs
編譯| (@OdailyChina)
譯者| 叮噹(@XiaMiPP)

編者按:還記得當年分片(Sharding)的熱鬧嗎? 那時候它可是區塊鏈界的“流量密碼”,結果以太坊冷靜一想,放棄了這個燙手山芋。 如今,本地 Rollup 捲土重來,通過執行預編譯合約(EXECUTE Precompile)和優化以太坊區塊處理結構,不僅讓 Rollup 更安全、更靈活,還順手給以太坊L1來了個橫向大擴容,為未來的實時證明開了條路。
以下為 Taiko 實驗室發布的原文內容,由編譯。 由於本文的技術性較強,為保證文章的可讀性,Odaily 進行了適當的刪減,盡可能清晰易懂呈現。
引言
分片(Sharding)在 2017-2020 年間是一個熱門話題。 當時,Harmony、Zilliqa 和 Elrond 等不同團隊在其區塊鏈中實施了分片技術。 這種技術本質上是將網絡劃分為多個較小的、並行運行的鏈(稱為“分片”),這些分片可以同時處理交易,以此作為擴展分佈式系統的一種直接方式。
分片也是以太坊 2.0 時代被社區認真討論的話題。 然而,以太坊最終決定不採用分片方案,主要基於以下四個挑戰:
1. 思維模式的不同(Mindset Differentiations)
在這種分片模式下,協議本身會自上而下強制規定確切的分片數量。 這些分片是按照預定義模板運行的單一鏈,缺乏可編程性,並且本質上只是 L1(第一層區塊鏈)的多個相同副本。
2. 樂觀安全性(Optimistic Security)
當時,為了保證分片的誠實性,需要使用樂觀證明(Optimistic Proofs),而零知識(ZK)技術尚未成熟。 這意味著必須在鏈上系統性地管理欺詐證明(Fraud-Proof)邏輯。
3. 複雜性(Complexity)
在 L1 層實現分片會顯著增加協議的複雜性,特別是在管理快速的預確認(Preconfirmation)和較慢的最終確認(Final Confirmation)系統,以及協調不同安全級別的分片方面。
4. 共識過載(Overload Consensus)
在 L1 層追求更高的可擴展性可能會增加中心化風險。 如果在基礎層(Base Layer)實現分片,這種風險可能會影響整個協議,而不像現在那樣僅限於單個 L2(第二層擴展方案)。
本地 Rollup(Native Rollups)本質上可以被視為分片的一種回歸,但這次有所不同。 我們已經吸取了教訓,並且具備了更好的技術和經驗。

什麼是本地 Rollup?
需要記住,Rollup 由數據、排序(Sequencing)和執行(Execution)模塊組成。 本地 Rollup 直接使用以太坊自身的執行環境(Execution Environment)作為其執行模塊。 我們可以將其稱為 L1 的(Programmable Execution Shards)。
要理解如何將 L1 執行環境作為 Rollup 使用,可能會有些複雜。 為了在 Rollup 中消費 L1 執行環境,我們需要能夠在 evm 內部執行另一個 EVM(EVM inside EVM)。 因此,L1 需要能夠感知本地 Rollup 在每個區塊中的狀態轉換(State Transition)。 要實現這一點,我們需要一個來提供支持。
EXECUTE 預編譯合約
EXECUTE提供了一種機制,使得一個 EVM 上下文能夠驗證另一個 EVM 上下文的執行結果,同時保持相同的執行規則和狀態轉換邏輯。
預編譯合約接受三個輸入參數:
pre_state:執行前的 32 字節狀態根(State Root)
post_state:執行後的 32 字節狀態根
witness_trace:執行軌跡,包含交易和狀態訪問證明
預編譯合約的核心是:它會驗證從 pre_state 開始執行 trace 是否能得到 post_state。 如果狀態轉換函數有效,預編譯合約會返回 true。
執行軌跡需要對所有驗證者可用(以 blobs 或 calldata 形式),以便驗證者可以重新執行計算並驗證狀態轉換的正確性。 值得注意的是,該預編譯合約將證明(Proof)作為輸入。 這意味著協議本身不會強制執行任何特定的證明系統,而是通過 p2p 網絡的 Gossip 頻道傳播不同類型的證明。
Gas 計費模型
以太坊的計算資源有限,因此 Gas 機制用於管理這些資源。 EXECUTE 預編譯合約實現了一個 Gas 計費模型來管理計算資源:
基礎成本(Base Cost):預編譯合約會收取固定的 Gas 費用 EXECUTE_GAS_COST,再加上執行軌跡使用的 Gas 乘以當前 Gas 價格。
累計 Gas 限制(Cumulative Gas Limit):類似於 EIP-1559 機制,管理和定價所有 EXECUTE 調用在 L1 區塊中的總 Gas 消耗:
EXECUTE_CUMULATIVE_GAS_LIMIT:一個區塊中所有 EXECUTE 調用的最大 Gas 限制。
EXECUTE_CUMULATIVE_GAS_TARGET:目標 Gas 使用量,以便進行高效定價。
這個模型類似於 blob 中的數據可用性(DA)定價機制。

需要記住,本地 Rollup 和 L1 的 SNARK 化(SNARKifying the L1)這兩個概念經常被混淆在一起。 SNARK 化 L1 是一種(Vertical Scaling)方法,通過 SNARK 化執行(如 zkEVM)和共識(如 Beam)來消除 Gas 限制,從而提升 L1 的性能。 而本地 Rollup 則是(Horizontal Scaling)L1,通過可編程方式創建任意數量的 EVM 副本,實現更高的可擴展性。
為什麼本地 Rollup 更有優勢?
1. 安全性
當前的 Rollup 設計需要安全委員會(Security Councils)來更新鏈,以應對潛在的漏洞。 而本地 Rollup 依賴於以太坊的進行治理。 運營商無需擔心擔心漏洞問題,因為以太坊社區會負責維護和修復。
2. 簡化 L1 同步可組合性(Synchronous Composability)
基於 L1 的 Rollup 接近於實現同步可組合性,但要求 L1 和 L2 的區塊由同一構建者(Builder)同時構建。 本地 Rollup 可以直接通過 EXECUTE 預編譯合約驗證另一個本地 Rollup 的狀態,而無需額外的信任假設。
3. 向前兼容性(Forward Compatibility)
隨著 L1 EVM 進化,本地 Rollup 會自動繼承所有改進,而不需要單獨適配,實現與以太坊發展路線的長期兼容性。
優化執行方案:實時證明(Real-Time Proving)
在重新執行(Re-execution)模式下,驗證者必須自行處理所有交易,其吞吐量受 EXECUTE_CUMULATIVE_GAS_LIMIT 參數的限制。 而可以顯著提高這一限制,因為驗證者只需驗證證明,而無需重新執行所有交易。
隨著行業快速向實時證明發展,我們需要採取措施擴大本地 Rollup 的證明窗口。 為了爭取更多的證明時間,需要調整當前以太坊的區塊處理結構。
如何延長證明窗口?
在現有的結構下,以下所有步驟必須在 12 秒內完成(每 4 秒一個階段),才能進入下一個區塊:
區塊 N 提議交易
在驗證/確認區塊之前,必須完成:
執行所有交易
計算狀態變更
計算狀態根(stateRoot)
計算交易回執和日誌(receipts & logs)
只有完成上述所有步驟後,區塊才能被驗證和確認。

按照目前的流程,如果要實現與 L1 的同步可組合性,證明必須在 4 秒內 完成。 然而,目前 ZK 技術尚不成熟,還無法在 4 秒內 生成以太坊區塊的證明,因此我們需要在證明流程上引入更大的靈活性。
為了給本地 Rollup 爭取更多證明時間,我們需要調整以太坊當前的區塊處理結構。 例如:
延遲 state_root 計算:將 state_root 計算從關鍵路徑中移除,使其在驗證者空閒時間計算。
延遲執行(Delayed Execution):將區塊驗證與交易執行分離,優化共識效率,同時為證明生成提供更長時間。
證明之間是否會達成共識?
不會。 證明不會在鏈上進行共識,而是通過鏈下(off-chain)傳播。 網絡中只需要達成共識,即某個地方存在有效的證明即可。