作者:RJ;來源:作者推特@0xRJ_eth
引言
預計於2023 年秋冬實施的以太坊重大升級——坎昆升級(Cancun-Deneb Upgrade),核心目標是增強以太坊網絡的可擴展性、安全性和可用性,同時極大程度降低二層網絡的Gas費。因此,如若成功實施,將直接利好太坊二層擴容(L2 Rollups)生態,甚至有望帶動整個L2 賽道的爆發。
在L2 擴容賽道中,具有極佳數據壓縮性能的零知識證明擴容方案(ZK Rollups)已然被認為是以太坊的中長期核心方案。以太坊創始人Vitalik 於2022 年根據各家ZK Rollups 與EVM(Ethereum Virtual Machine)以太坊虛擬機的兼容性將其分為4 種不同的類型,為zkEVM 類型確立了基礎標準。
這篇文章深受上述 Vitalik 的開創性分類標準的啟發。經過一年的發展,該領域已取得重大進展。本文旨在以清晰的邏輯和簡潔的語言,以Vitalik 見解為基礎,提供賽道更新和更詳細的詮釋(技術小白友好)。
什麼是EVM?
EVM(Ethereum Virtual Machine)以太坊虛擬機,是第一個圖靈完備的區塊鏈虛擬機。可以理解為是以太坊上的代碼運行環境,專門用以執行部署在以太坊網絡上的智能合約。通過EVM,智能合約能夠在去中心化網絡上實現自動化的功能。
作為2015年發布的、迄今為止最久經考驗的區塊鏈虛擬機,EVM 絕對是以太坊非常重要的基礎設施。甚至在評判其他區塊鏈時, EVM 兼容與否已是一個重要的考量維度,因為EVM 兼容的背後代表的不僅僅是智能合約執行環境、可用的以太坊工具集,更代表著巨大的網絡效應和成熟複雜的生態。
不過,EVM 在設計之初,並未想像到有朝一日ZK Rollup L2 會成為以太坊擴容的核心方案,因此EVM 的設計並沒有考慮要對零知識證明友好。這就使得構建零知識證明友好的EVM (zkEVM)變得非常困難。
什麼是zkEVM?
正因為零知識證明(Zero Knowledge Proof)和以太坊虛擬機(EVM)兼容方面的難度之高,早期的ZK Rollup 是不支持EVM 的。它們普遍缺乏執行智能合約的能力(或者支持特別的虛擬機),因此受限於相對簡單的特定場景:比如代幣兌換(swap)和支付(payment)。
為了解決這個問題,許多組織和研究人員專注於創建zkEVM (Zero Knowledge Ethereum Virtual Machine),顧名思義,它就是為智能合約在EVM中的執行(過程和結果)生成零知識證明的。
隨著ZK Rollup 擴容方案確定性的增加和技術的進展,各家zk擴容項目根據在兼容性Compatibility 和性能Performance(生成零知識證明的時間Proving Time)之間做衡量和取捨,開創了不同的將EVM 執行與零知識證明計算結合的方法。
不同類型的zkEVM:
來源:Vitalik 博客《The different types of ZK-EVMs》
2022年 Vitalik 曾發文闡述“不同類型的zkEVM”,並將市面上的zk擴容項目做了大致的分類和對比。
接下來讓我們用淺顯的語言和清晰的邏輯梳理一下zkEVM 的類型、技術架構、以及各自的優缺點。
Type1 類zkEVM :完全等效於以太坊
Type2 類zkEVM :完全兼容EVM 以太坊虛擬機(曾經還有Type2.5 類,如今看來基本與Type2 類融合了)
Type3 類zkEVM :幾乎兼容EVM 以太坊虛擬機
Type4 類zkEVM :兼容高級語言
Type1 類zkEVM——完全等效於以太坊
架構:
-
完全等同於以太坊且無需改變以太坊系統環境的任何部分。
-
無需取代哈希(Hashes)、狀態樹(State Trie)、交易樹(Transactions Trie)、預編譯的合約(Precompiles),和任何其他共識邏輯(In-consensus Logic)。
-
其目標是與現有的應用程序完全兼容,開發者可以將應用程序絲滑地照搬過去。
優點:
-
是所有類型ZK Rollup 中兼容程度最高的方案。因此也是開發者最友好對方案——允許開發者將現有代碼零摩擦(無需修改)地部署到L2 上運行,因為所有的共識邏輯和系統環境完全等同於以太坊。
-
和以太坊本身探索擴容的方向高度一致,因為在Type1 類zkEVM 上的探索,未來是可以被無摩擦地引入到Ethereum 本身,從而使得以太坊L1 本身更具可擴展性。
-
它可以讓Rollup 無摩擦地照搬現有的海量以太坊基礎設施(例如:以太坊執行客戶端可以按原來的方式用於生成和處理Rollup 區塊、現有的區塊瀏覽器和區塊生成等工具也可以絲滑地部署到L2)。
-
能夠如同現在的以太坊一樣驗證以太坊區塊,或者更確切來說是驗證執行層端(包括所有交易執行、智能合約和賬戶邏輯,但目前還不包括信標鏈共識邏輯)。
-
正如先前提到的,完全等價以太坊的一大價值,便是可以藉助以太坊現有的巨大網絡效應和成熟複雜的生態。
缺點:
-
以太坊在融合零知識證明方面所面臨的問題,Type1 類方案也同樣面臨(畢竟它是以太坊等價,而以太坊最初並非為了zk功能設計的)。
-
最大的問題就是生成證明所需時間久。針對這個問題,目前行業裡主要的解決方案主要是:通過巧妙的工程大規模並行化證明,或通過硬件優化來加速。
主流項目:
-
以太坊基金會PSE(Privacy and Scaling Explorations 隱私和擴容)團隊
-
Taiko:今年7月已更新至Alpha-4 測試網,預計2024 年年初上線主網。 Taiko 項目從最初就優先考慮去中心化和兼容性,是目前第一家且唯一一家實現去中心化提議者(proposer)的ZK Rollup。
Type2 類zkEVM——完全兼容EVM 以太坊虛擬機
架構:
-
力求完全兼容EVM 以太坊虛擬機,但不等效於以太坊。
-
與以太坊自身的運行環境相比,此類型zkEVM 主要對區塊結構、狀態樹的數據結構、gas fee的定價邏輯(根據zk 友好度重新定價)和數據存儲等方面進行了一些修改,使zk驗證證明生成得更快更便宜。
-
其目標是盡可能與絕大部分現有應用程序兼容,少數應用需進行一些改動。
優點:
-
通過對gas fee 的重新定價(越zk 不友好的op code 價格越貴,反之亦然),和刪除部分對ZK 不友好的以太坊堆棧,來提供比Type1 類更快的驗證時間。
-
Type2 類型可以做到與極大部分現有的以太坊應用程序兼容,因此絕大多數開發者和用戶層面基本感受不到摩擦。
-
雖無法零修改地直接使用以太坊執行客戶端,但通過一些調試仍可以支持現有的EVM 調試工具和其他開發基礎設施。因此仍在極大程度上可以藉力於以太坊現有的繁榮生態。
缺點:
-
更改執行環境的影響範圍雖小,但中長期依舊存在潛在的開發問題。比如將以太坊常用哈希(Keccak)替換為其他zk 友好的哈希值(例如Poseidon ),有可能會導致那些依賴於Keccak 哈希值(涉及到歷史數據)的程序應用(比如:跨鏈橋。大致原理:跨鏈橋不是實時通訊,通常是你在A鏈做了一個行為——比如已經burn了什麼;要在B鏈做相互對應行為——要鑄造什麼…那本質就是你在B鏈上需要去證明A鏈的歷史數據,因此會涉及到使用Keccak來證明歷史數據)在遷移到Type2 類型項目後出現不兼容問題(無法使用、或者跑出不同結果)。
-
對gas fee定價規則的更改(本意是通過重新根據對zk 友好程度來定價op code,來“引導”開發者減少使用zk 不友好的op code),對於已經在以太坊上已經進行過gas fee 優化的合約、甚至是以太坊上的gas fee優化工具就會帶來問題。
-
這些修改雖然和Type1 類zkEVM 相比,進一步提高了證明者的效率,但和Type4 類zkEVM 相比,證明時間依舊是一個相對缺點。
主流項目:
-
Scroll:2022 年9 月上線Pre-Alpha 測試網,2023 年2 月上線Alpha 測試網,預計於2023 年8 月上線主網。測試網上線時屬於Type3 類zkEVM,但正在逐步增強EVM 兼容性並向Type2 類zkEVM 過渡。
-
Polygon zkEVM(Polygon團隊的ZK Rollup 方案):2023 年3 月上線了主網Beta 版本。上線時屬於Type3 類zkEVM,但目前在向Type2 類zkEVM 過渡。
Type3 類zkEVM——幾乎兼容EVM 以太坊虛擬機
架構:
-
Vitalik 在其2022 年的blog 文章中稱,Type3 類zkEVM 更像是一個過渡(通過提高兼容程度過渡為Type2/1 類;或者通過降低兼容程度、提升zk 友好度,過渡為Type4 類)。
-
近乎兼容EVM 以太坊虛擬機。通過在兼容性方面進一步犧牲,使其zkEVM 更易於開發、zk 證明生成速度更快。
-
刪除了更多在zkEVM 中難以實現的功能(比如預編譯功能)。
-
在處理合約代碼(contract code)、內存(memory)或堆棧(stack)方面存在更大差異。
-
目標是與大多數現有應用程序兼容。
優點:
-
相比起Type1 和Type2 類zkEVM,此類型更加zk 友好,運算zk 證明時間更短。
-
相比起Type4 類zkEVM 可以兼容的現有以太坊應用程序更多。
缺點:
-
相比起Type1 和Type2 類zkEVM,此類存在更高的不兼容性和更多元素的犧牲(對以太坊開發者更加不友好)。這也是為什麼Type3 類更像是一個過渡,處於此類的方案大概率會通過提升兼容度,過渡到type2 類zkEVM。
-
相比起Type4 類zkEVM 證明速度更慢。
主流項目:
-
Scroll:2022 年9 月上線Pre-Alpha 測試網,2023 年2 月上線Alpha 測試網,預計於2023 年8 月上線主網。一年前Scroll屬於此類型,但目前通過提升以太坊兼容度,在向Type2 類zkEVM 發展。
-
Polygon zkEVM(Polygon 團隊的ZK Rollup方案):2023 年3 月上線了主網Beta版本。上線時屬於Type3 類zkEVM,但目前在向Type2 類zkEVM 過渡。
Type4 類zkEVM——兼容高級語言
架構:
-
此類實際上屬於zkVM(零知識證明虛擬機,而非零知識證明以太坊虛擬機)。
-
可以理解為編程語言層面的兼容。大致邏輯是:開發者可以繼續使用他們在以太坊上習慣使用的編程語言(比如Solidity)編寫智能合約。此類型項目會用編譯器將此編程語言轉換為它們自定義的可讀代碼(比如Starkware 使用Warp 編譯器將Solidity 代碼轉換為Cairo 字節碼;zkSync 通過LLVM 編譯器將Solidity 代碼轉換為其自定義的虛擬機可執行的代碼LLVM-IR)進行編譯,並在它們自定義的環境中(比如Starknet 的Cairo VM 和zkSync 的Sync VM)執行。
-
目標是低成本、高效率、最大化零知識證明友好性。
優點:
-
非常快的驗證時間。
-
直接從高級語言編譯可以大大降低成本(時間、金錢和計算工作量)。
-
降低成為證明者的技術門檻,提高去中心化程度。
-
此類zkEVM 可以通過使用其自定義的虛擬機原生支持帳戶抽象(Account Abstraction)。因為EVM 等效的鏈無法原生支持賬戶抽象,需要通過以太坊的 ERC-4337 來實現。
缺點:
-
大量現有的以太坊應用程序無法被複製到這類zkVM 中,或者在復製過程中會出現問題:比如合約在Type 4 類zkVM 系統中的地址可能與EVM 中的地址不一樣;Type4 類zkEVM 不支持手寫的EVM 字節碼(而目前許多應用程序都會使用手寫的EVM 字節碼以節省gas fee);(先前提到了此類型是通過編譯器達到Solidity 代碼語言層面的兼容)其編譯器並不支持Solidity 的一些功能。
-
以太坊開發者如果想將應用部署到此類項目上,需要進行更複雜的的調整。因此,和前幾類zkEVM 相比,此類項目的開發者友好度相對低,有可能影響生態的發展和技術的迭代速度。
-
極難借力於以太坊現有的複雜繁榮的生態和網絡效應。
主流項目:
-
zkSync Era(Matter Labs 團隊構建的ZK Rollup 方案):2020 年6 月上線zkSync Lite(zkSync 1.0),主要支持簡單的支付(payment)和資產兌換(swap)場景,並不支持EVM兼容的智能合約; 2023年3月上線zkSync Era(zkSync 2.0),通過上述架構可以實現在高級語言層面的兼容。 zkSync 的目標本就不是EVM 兼容,而是提高零知識證明生成速度。
-
Starknet(Starkware 團隊構建的ZK Rollup 方案):2021 年11 月上線主網,今年7 月已更新至v0.12.0 版本。其自身屬於Type4 類zkEVM,目標本就不是EVM 兼容。但目前它上面也有像Kakarot 這樣的項目,旨在使Starknet 也能達到類似Type 2.5-3 類zkEVM 的兼容程度)。
基於Vitalik 2022 年對於不同zkEVM 的分類,再結合各家項目的進展(截止2023年8月),我們可以用下圖簡單地總結:
各家主流ZK Rollup 項目分類
各類zkEVM 主流項目
各家主流ZK Rollup 項目對比圖
Vitalik 在其文末總結稱:“就我個人而言,我希望隨著時間的推移,通過zkEVM 的改進和以太坊本身的改進相結合,使其(以太坊)對ZK-SNARK 更加友好,最終一切都將成為Type1 類。
在這樣的未來,我們將有多個zkEVM 實現,它們既可以用於ZK Rollup(零知識擴容),也可以用於驗證以太坊鏈本身。從理論上講,以太坊沒必要為L1(第一層)使用制定單一的、標準化的zkEVM 規範;不同的客戶端可以選擇使用不同的證明方式,這樣我們就可以繼續受益於代碼層面的冗餘。
但是,要實現這樣的未來,還需要相當長的時間。與此同時,在以太坊(自身)擴容和基於以太坊的ZK Rollup 的不同路徑方面,我們也將會看到大量的創新。 ”
同時,需要強調的是,雖然市面上主流的zkEVM 分類方式是Vitalik 2022年推出的分類(本文引用的),但同時也存在其他的分類標準。且無論如何分類,這些zkEVM 類型並沒有絕對的優劣之分。它們只是在兼容性與速度之間有所取捨:Type1 類zkEVM 與以太坊的兼容性最高,但證明速度較慢(在ZK Rollup 賽道中屬於);Type4 類zkEVM 與以太坊的兼容性較差,但驗證速度更快。
當然,zkEVM 的兼容性和速度實際上並不是開發者考量應該基於哪個ZK Rollup 去部署應用的唯一指標。還有許多其他的因素會影響他們的選擇,比如:
L2 交易排序的去中心化程度:sequencer/proposer是否是去中心化的,這直接影響到生態參與者的複雜程度,以及整個網絡的安全性;
費用:以哪些代幣支付費用、一條公鏈的代幣經濟模型如何;
生成證明的規則:對於prover的激勵機制、加速生成證明的硬件標準;
自託管:是否有明確的機制來確保L2 發生事故的時候仍然能夠在L1 恢復用戶資產;
數據可用性:完整的數據可用性成本自然要高些,是否可接受有些ZK Rollup 採用的較低成本的數據可用性模式。
但由於多數通用ZK Rollup 項目目前還處於測試網階段,以上諸多因素尚無法做橫向對比。
最後,任何zkEVM 項目所屬的類型也並非是靜態不變的。隨著各家方案在zkEVM 方面的探索、甚至是以太坊本身的改進,有可能所有方案最終都能達到Type 1 類zkEVM 的效果。屆時我們將有多個zkEVM 實現——既可用於ZK Rollups,又可用於驗證以太坊鏈本身。
而在那之前,讓我們期待看到在擴展以太坊和ZK Rollup 不同路徑上的持續創新。