作者: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 不同路徑上的持續創新。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。