OP+ZK,Hybrid Rollup會成為以太坊擴容的終極未來嗎?
BlockBeats 律動財經 2023-06-30 15:00
我最近非常確信以太坊 Rollup 的未來實際上 ZK 和 Optimistic 這兩種主要方法的混合。在這篇文章中,我將嘗試闡述我想象中的這個架構的基本要點,以及為什麼我相信這是我們應該前進的方向。請注意,我大部分時間都在研究 Optimism,也就是 Optimistic Rollup,但我並非 ZK 專家。如果我在談論 ZK 方面有任何錯誤,請隨時聯繫我指出,我會更正。
我並不打算在這篇文章里詳細敘述 ZK 和 Optimistic Rollups 的運作原理,如果我要花時間去解釋 Rollups 的本質,那麼這篇文章將會過於冗長。所以這篇文章是基於你已經對這些技術有一定的了解,當然你不需要是專家,但至少應該知道 ZK 和 Optimistic Rollups 是什麼以及他們大概的運作機制。無論如何,請盡情享受閱讀本文。
我們先從 Optimistic Rollup 開始談起
混合了 ZK 和 Optimistic Rollup 的系統最初是以 Optimism 的Bedrock 架構為藍本的 Optimistic Rollup。Bedrock 被設計成與以太坊最大程度的兼容(「EVM 等效」),這是通過運行一個幾乎與以太坊客戶端完全相同的執行客戶端來實現的。Bedrock 利用以太坊即將到來的共識/執行客戶端分離模型,顯著減小了與 EVM 的差異(當然這過程中總會有一些變化,但我們可以處理)。
和所有優秀的 Rollup 一樣,Optimism 從以太坊中提取區塊/交易數據,然後在共識客戶端中以某種確定的方式對這些數據進行排序,並將這些數據饋送到 L2 執行客戶端進行執行。這種架構解決了"理想的 Rollup"謎題的前半部分,並為我們提供了一個等效於 EVM 的 L2。
當然,我們現在還需要解決的問題是:以可驗證的方式將 Optimism 內部發生的事情告訴以太坊。如果這個問題沒有解決,智能合約就無法根據 Optimism 的狀態來做決定。這將意味著用戶可以向 Optimism 存款,但無法提取他們的資產。雖然某些情況下單向 Rollup 是可以實現的,但在大部分情況下,雙向 Rollup 更為有效。
通過提供對該狀態的某種承諾,以及證明該承諾是正確的證據,我們就可以將所有 Rollup 的狀態告知給以太坊。換句話說,我們正在證明「Rollup 程序」被正確執行。ZK 和 Optimistic Rollups 之間的唯一實質性區別就是這個證明的形式。在 ZK Rollup 中,你需要提供一個明確的零知識證明來證明程序的正確執行。而在 Optimistic Rollup 中,不提供明確的證據就可以對承諾做出聲明,通過挑戰和質疑你的聲明,其他用戶可以強制你參與一場來回推敲和挑戰的「遊戲」,以此確定最終誰是對的。
我並不打算詳細講述 Optimistic Rollup 的挑戰部分。值得注意的是,這個環節的最新技術是將你的程序(在 Optimism 的情況下是 Geth EVM + 一些邊緣的部分)編譯成一些簡單的機器架構,如MIPS。我們這樣做是因為我們需要在鏈上建立一個程序的解釋器,而建立一個 MIPS 解釋器比建立一個 EVM 解釋器要容易得多。EVM 也是一個不斷變化的目標(我們有定期的升級分叉),而且且並不能完全包含我們想要證明的程序(裡面也有一些非 EVM 的東西)。
一旦你為你的簡單機器架構構建了一個鏈上的解釋器,並且創建了一些離線工具,你就應該有一個完全功能的 Optimistic Rollup。
轉向 ZK Rollup
總的來說,我堅信 Optimistic Rollups 將在接下來的幾年中占據主導地位。有人認為 ZK Rollups 最終會超越 Optimistic Rollups,但我並不同意這種看法。我覺得 Optimistic Rollups 當前的相對簡單性和靈活性意味著它們可以逐漸轉變為 ZK Rollups。如果我們能找到一種模式來實現這種轉變,那麼就沒必要費力去建立一個更不靈活、更脆弱的 ZK 生態系統,我們可以簡單地部署到一個已經存在的 Optimistic Rollup 生態系統中。
因此,我的目標是創建一種架構和遷移路徑,使現有的現代 OP 生態系統(比如 Bedrock)能夠無縫地轉變為 ZK 生態系統。我相信這不僅是可行的,而且是一種超越當前 zkEVM 方法的方式。
我們首先從我前文中描述的 Bedrock 架構開始。請注意,我已經(簡短地)解釋過,Bedrock 設有一個挑戰遊戲,可以驗證 L2 程序(運行 EVM + 一些額外內容的 MIPS 程序)某些執行的有效性。這種方法的一個主要缺點是,我們需要預留一段時間,讓用戶有機會檢測到並成功挑戰一個錯誤的程序結果提案。這會在資產提取過程中增加相當多的時間(在當前的 Optimism 主網上是 7 天)。
然而,我們的 L2 只不過是一個在簡單機器(比如 MIPS)上運行的程序。我們完全有可能為這種簡單的機制構建一個 ZK 電路。然後,我們可以利用這個電路來明確地證明 L2 程序的正確執行。在不對當前的 Bedrock 代碼庫做任何修改的情況下,你就可以開始為 Optimism 發布有效性證明了。實際操作起來就是這麼簡單。
為什麼這個方法可靠?
簡單澄清一下:雖然在這一部分,我提到了"zkMIPS",但實際上我是把它作為代表所有通用且簡化的零知識證明虛擬機(zkVM)的術語。
zkMIPS 比 zkEVM 更容易
構建一個 zkMIPS(或其他任何類型的 zk 虛擬機)相比 zkEVM 有一個重大優勢:目標機器的架構簡單且靜態。EVM 經常發生變化,Gas 價格會調整,操作碼也會改變,一些元素會被添加或移除。而 MIPS-V 自 1996 年以來就沒有改變過。將焦點集中在 zkMIPS 上,你就在處理一個固定的問題空間。每當 EVM 更新時,你都無需更改甚至重新審核你的電路。
zkMIPS 比 zkEVM 更靈活
另一個關鍵觀點是,zkMIPS 比 zkEVM 更具靈活性。通過 zkMIPS,你可以隨心所欲地更改客戶端代碼,執行各種優化,或者改進用戶體驗,而無需對應的電路更新。你甚至可以創建一個核心組件,將任何區塊鏈變為 ZK Rollup,而不僅僅是以太坊。
你的任務轉變成了證明時間
零知識證明的時間沿着兩個軸度進行擴展:約束的數量和電路的大小。通過專注於像 MIPS 這樣的簡單機器的電路(而不是像 EVM 這樣的更複雜的機器),我們能夠顯著減少電路的大小和複雜度。然而,約束的數量取決於執行的機器指令的數量。每個 EVM 操作碼都被分解成多個 MIPS 操作碼,這意味著約束的數量顯著增加,你的總體證明時間也顯著增加。
然而,減少證明時間也是一個深植於 Web2 領域的問題。考慮到 MIPS 機器架構短期內不太可能改變,我們可以高度優化電路和證明器,而不必考慮 EVM 的未來變化。我對僱傭一位資深硬體工程師來優化一個明確定義的問題感到非常自信,這樣的工程師的數量可能是構建和審核一個不斷變化的 zkEVM 目標的工程師數量的十倍甚至百倍。諸如 Netflix 這樣的公司可能有大量的硬體工程師在優化轉碼晶片,他們很可能願意用一堆風險投資基金來迎接這個有趣的 ZK 挑戰。
像這樣的電路的初始證明時間可能超過了 7 天的 Optimistic Rollup 提款期。隨著時間的推移,這個證明時間只會減少。通過引入 ASIC 和 FPGA,我們可以顯著加快證明時間。有了一個靜態的目標,我們可以構建更優化的證明器。
最終,這個電路的證明時間會低於當前的 7 天 Optimism 提款期,我們可以開始考慮移除 Optimism 的挑戰過程。運行一個證明器 7 天可能仍然過於昂貴,所以我們可能會希望再等一段時間,但是這一點是站得住腳的。你甚至可以同時運行兩種證明系統,這樣我們可以儘快開始使用 ZK 證明,並在證明器出於任何原因失敗時回到 Optimism 證明。準備好的時候,可以以完全透明於應用程序的方式去除 Optimism 證明,於是,你的 Optimistic Rollup 就變成了 ZK Rollup。
你可以去關心其他重要的問題
運行一個區塊鏈是一個複雜的問題,它不僅僅涉及到編寫大量的後端代碼。在 Optimism,我們的許多工作都集中在通過提供有用的客戶端工具來提高用戶和開發者的體驗。我們也在「軟性」問題上投入了大量的時間和精力:與項目進行對話,理解他們的痛點,設計激勵機制。你在鏈軟體上投入的時間越多,就越沒有時間去處理這些其他事情。雖然你總可以試圖僱傭更多的人,但組織並不是線性擴展的,每一個新的雇員都會增加內部的溝通成本。
由於零知識電路的工作可以直接應用在已經運行的鏈上,你可以同時進行核心平台的構建和證明軟體的開發。由於客戶端可以在不改變電路的情況下進行修改,你可以解耦你的客戶端和證明團隊。採用這種方式的 Optimistic Rollup 可能在實際鏈上的活動方面比零知識競爭者領先多年。
結論
非常坦白地說,我認為 zkMIPS 證明器沒有任何明顯的不足,除非它不能隨著時間大幅優化。我認為對應用的唯一真正影響是,可能需要調整不同操作碼的 gas 成本,以反映這些操作碼增加的證明時間。如果真的無法將此證明器優化到合理的水平,那麼我承認我失敗了。但如果真的可以優化這個證明器,那麼 zkMIPS/zkVM 的方法可能會完全取代現在的 zkEVM 方法。這聽起來可能是一種激進的說法,但不久前,單步樂觀故障證明已經完全被多步證明所取代。