頭部 ZK Rollups 的 zkEVM 類型對比。
作者: 0x1,IOBC Capital
封面: zkEVM
以太坊的發展路線越來越傾向於 Modular Blockchain,其本質就是 Layer1 的 data sharding 和 Layer2 的 Rollups 擴容相結合,成為一種模塊化架構,從而推動以太坊實現 “世界計算機” 的初衷。其中 Rollups 的技術路徑選擇方面,ZK Rollup 被認為是以太坊擴容的最終目標。
ZK Rollup
ZK Rollup 的核心工作機制是將鏈上的用戶狀態壓縮存儲在一棵 Merkle 樹中,並將用戶狀態的變更轉移到鏈下進行,同時通過 zksnark/zkstark 證明來保證該鏈下用戶狀態變更過程的正確性。通俗地理解,ZK Rollup 可以理解為通過 zksnark 或 zkstark 來使用亞線性處理以驗證線性數量的語句。比如,1000 條語句需要 10 次驗證者檢查,10000 條語句需要 11 次驗證者檢查。所以,呈現出來的結果是,ZK rollup 可以實現以太坊擴容。
ZK Rollup 的大致區塊鏈事務處理過程如下:
- 用戶將他們的資產鎖定在 L1 上的 zk rollup 智能合約中;
- 用戶將涉及這些資產的交易提交給 L2,L2 中的某些角色(Sequencer,早期多數項目是中心化的,也有項目開始採用去中心化方式)將這些交易通過某些規則收集成有序批次,並為每個批次生成有效性證明(zksnark/zkstark)和聚合狀態更新;
- 這個狀態更新和證明被提交到 L1 的 zk rollup 智能合約並被驗證,就會更新在 L1 的區塊鏈上;
- 用戶可以使用這種 L1 狀態(取決於不同的數據可用性機制)來檢索他們的資產,從而實現完全的自我託管,所以 zk rollup 也被認為繼承了以太坊安全。
zkEVM 的必要性
眾所周知,第一代的 ZK Rollups 是不支持 EVM 的,可編程性和可組合性較差,只能限定在一些特定的場景,比如:Loopring 只能限定在 Payments&Swaps 等場景;Immutable 只能限定在 NFT Minting&Trading&Games 等場景;zksync1.0 其實也不支持 zkEVM。不具有通用性。
後來,頭部的那些 ZK Rollups 開始探索,在 ZK Rollup 上研發支持 EVM 字節碼的代碼執行環境,從而使得以太坊上的智能合約可以從以太坊遷移到 ZK Rollup 上,而無需從頭開始編寫代碼。EVM 是第一個圖靈完備的區塊鏈虛擬機,於 2015 年發布。它是迄今為止最久經考驗的區塊鏈虛擬機,也是以太坊非常重要的智能合約基礎設施。甚至在談到其他區塊鏈時,也會將 EVM 兼容與否作為一個評判維度,因為 EVM 兼容的背後代表的不僅僅是智能合約執行環境,也代表著可用的以太坊生態和工具集,更代表著不可忽視的網絡效應。所以,ZK Rollups 也沒敢忽略這一塊兒。zkEVM 則可以理解為將 EVM 作為智能合約引擎運行在 ZK Rollup 中。zkEVM 的目標是在不失去 Rollup 性能優勢的基礎上,將以太坊體驗完全帶入到 L2。截至目前,zkSync2.0、Polygon Hermez2.0、Scroll 等頭部的通用 ZK Rollup 項目都已經先後推出了 zkEVM 測試網,StarkNet 則已經進入到了 Alpha Mainnet 階段。
zkEVM 的兼容性分類
當前的 ZK Rollups 的 zkEVM 與 Ethereum 本身並非完全兼容,更遑論 “以太坊等效” 的終極願景。所以,不僅以太坊本身的升級規劃在遷就 Rollup 友好型,各個 ZK Rollup 項目也一直在解決與以太坊的兼容性問題。
Vitalik 根據與現有 EVM 基礎設施的兼容性程度,將 zkEVM 通用 ZK Rollup 分為 4 類:
Type-1:完全等效於以太坊
Type-1 型 zkEVM 力求完全且毫不妥協地與以太坊等效。無需改變以太坊系統的任何部分,無需取代哈希、狀態樹、事務樹、預編譯或任何其他共識邏輯。簡而言之,Type-1 型的 zkEVM 完全等效於 Ethereum。
Type-1 型 zkEVM 能夠像以太坊一樣驗證以太坊區塊,或者至少驗證執行層端(包括所有交易執行、智能合約和賬戶邏輯,不包括信標鏈共識邏輯)。
Type-1 型 zkEVM 是以太坊最終需要的,也是 Rollups 的最理想選擇。一方面,Type-1 型 zkEVM 可以讓 Rollups 重用大量的基礎設施(例如:Ethereum Execution Clients、Block Explorers、Block Production 等);另一方面,Type-1 型 zkEVM 能使得以太坊 Layer1 本身更具可擴展性,因為在 Type-1 型 zkEVM 上探索的一些對以太坊的修改,也許未來會被引入到 Ethereum 本身。
當然,Type-1 型 zkEVM 也有缺陷。以太坊最初並非圍繞 ZK 友好型設計的,因此以太坊協議的許多部分需要大量計算才能進行 ZK 證明。Type-1 型與以太坊一樣,無法緩解在這個事情上的低效(在生成證明方面,需要較長時間)。針對這個問題,目前行業裡提出的解決方案主要是:通過巧妙的工程大規模並行化證明,或通過 ZK-SNARK ASIC 來實現硬件加速。
目前,主要有兩個團隊在嘗試探索 Type-1 ZK-EVM,一個是 Privacy and Scaling Explorations team,一個是 Taiko。
Type-2: 完全等效於 EVM
Type-2 型 zkEVM 力求完全等效於 EVM,但不完全等效於以太坊。它們與現有的應用程序也完全兼容,但需要對以太坊進行一些小的修改,以使開發更容易並更快地生成證明。
Type-2 型 zkEVM 對區塊結構和狀態樹之類的數據結構有一些修改。由於這些是 EVM 本身無法直接訪問的結構,所以在以太坊上運行的應用程序幾乎可以直接在 Type-2 型 zkEVM Rollup 上運行。雖然無法按原樣直接使用以太坊執行客戶端,但通過一些修改仍可以使用它們,並且還可以使用 EVM 調試工具和大多數其他開發工具。
通過刪除部分不必要的和 ZK 不友好的以太坊堆棧,Type-2 zkEVM 的證明時間比 Type-1 zkEVM 更快些。這些修改雖然顯著提高了證明者的效率,但並沒有根本性解決證明時間慢的問題。總而言之,Type-2 的證明時間還是很慢。
Type-3: 幾乎等效於 EVM
Type-3 型 zkEVM 幾乎與 EVM 等效,在兼容性方面也有所犧牲,但其 EVM 更易於開發。
Type-3 型 zkEVM 通過刪除一些在 zkEVM 中很難實現的功能(比如:預編譯),以及在處理合約代碼、內存或堆棧方面的調整,總體在等效性方面做出了一些犧牲,實現了更多的驗證器時間、並使 EVM 更易於開發。
在兼容性方面有所犧牲,由於有一些應用程序使用了被 Type-3 型 zkEVM 刪除的預編譯,這些應用程序需要對其中的部分進行重寫。
目前,Scroll 和 Polygon 都屬於 Type-3。當然,從長遠來看,還沒有哪個 zkEVM 團隊公開表明願意長期停留在 Type-3。Scroll 和 Polygon Hermez 都在朝著 Type-2 型 zkEVM 的方向發展,雖然還有許多複雜的預編譯還沒有實現。
Type-4: 高級語言等效
Type-4 類實際上屬於 zkVM。Type-4 系統通過獲取以高級語言(Solidity、Vyper)編寫的智能合約源代碼,並將其編譯為明確設計為 ZK-SNARK 友好的某種語言來工作。
優劣勢都很明顯。有非常快的驗證時間,因為 Type-4 類不對每個 EVM 執行步驟的所有不同部分進行 ZK 證明,而是從更高級別的代碼開始,從而降低成本並獲得更快驗證時間。兼容性較差,合約在 Type-4 系統中的地址與它們在 EVM 中的地址不同;手寫的 EVM bytecode 更難使用;很多調試的基礎設施不能被繼承,因為這些基礎設施是運行在 EVM 字節碼上。
總而言之,Type-4 屬於語言級別等效,與字節碼級別等效相比在兼容性方面有較大差距。根據 Vitalik 的觀點,目前主要有 Zksync 屬於 Type-4 類,儘管隨著時間的推移它可能會增加對 EVM 字節碼的兼容性;基於 Nethermind 的 warp 項目正在構建從 Solidity 到 Starkware 的 Cairo 編譯器也會把 StarkNet 變成 Type-4 型。
各類 zkEVM 的比較
這些 zkEVM 並沒有絕對的優劣之分。它們只是在兼容性與速度之間有所取捨,Type-1 型 zkEVM 與以太坊的兼容性最高,但證明速度較慢;Type-4 型 zkEVM 與以太坊的兼容性較差,但驗證速度更快。而且我們會發現,現有的 ZK Rollup 的明星項目,包括 Zksync、StarkNet、Polygon、Scroll 等都屬於 Type-4/Type-3 這樣的與以太坊兼容性沒有那麼高的 zkVM/zkEVM 類型。
Vitalik 是希望隨著時間的推移,通過 zkEVM 的改進和以太坊本身的改進相結合,最終所有 zkEVM 都成為 Type-1 類。這樣的好處在於,未來會有多個 zkEVM,既可以用於 ZK Rollup,也可以用於驗證以太坊鏈本身(未來以太坊會對 ZK-SNARK 更加友好)。
Vitaliki 提出的觀點,一般來說很容易達成整個行業的共識,我也非常認可。Type-1 型 zkEVM 的項目在 Ethereum 生態自然是最受歡迎的、也比較匹配 Ethereum L1。但 Type-4 類 zkVM 也未嘗不是執行層項目的一個好的技術方案選擇。主要有兩點考慮:
- 放在 Modular Blockchain 的敘事下,zkVM 更方便對接其他 L1。如果跳出只是做以太坊生態 L2 的思維,沒有在字節碼級別兼容以太坊虛擬機,而是選擇採用 zkVM,也許反而方便未來對接到其他的 L1 共識層;
- 現在 ZK Rollup 的性能頂板是受限於證明生成速度,Type-4 類 zkVM 有優勢。執行層的生成證明的速度還是非常重要的,L2 把執行層的性能做到極致,也未嘗不是一個好的思路。雖然說未來能夠通過 ASIC 硬件加速來提高生成證明的效率,但效果猶未可知,Type-4 類 zkVM 的證明生成速度較快是個挺重要的優勢。
當然,zkEVM 的兼容性和速度實際上並不是開發者考量基於哪個 ZK Rollup 去做應用的唯一指標。還有許多其他的因素會影響他們的選擇,比如:
- 費用:以哪些代幣支付費用,L2 費用的降低程度也是一個非常重要的考量因素,但由於多數通用 ZK Rollup 項目還處於測試網階段,尚無法做對比;
- 生成證明的規則:支持哪些人作為 Prover,甚至採用哪種硬件來加速生成證明;
- L2 交易排序的規則:採用單個 Sequencer 還是採用去中心化的方式;
- 自託管:是否有明確的機制來確保 L2 發生事故的時候仍然能夠在 L1 恢復用戶資產;
- 數據可用性:完整的數據可用性成本自然要高些,是否可接受有些 ZK Rollup 採用的較低成本的數據可用性模式。
總而言之,每種 ZK Rollup 的 zkEVM 是在諸多性能中有所取捨,實際並沒有絕對的優劣之分。
免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。