本文根據 Vitalik 此前撰寫的 ZK-EVM 介紹文章進行整理,並詳細介紹了各類 ZK-EVM 和它們之間的差異。本文源自 Lisa Akselrod 所著文章《Understanding ZK-EVM Types》,由 Odaily星球日報 編譯、整理。
(前情提要:Layer2蓄勢待發,裡面有什麼類型的zkEVM? )
(背景補充:IOSG研報》開發者眼中不同 ZKRollup 的使用體驗 )
大約一年前,一群 ZK-EVM 宣佈即將推出測試網。這些舉措激起了以太坊社群的好奇心,並引發了人們對以太坊等效和 EVM 等效等術語背後的細微差別的討論。
為了明確起見,Vitalik 撰寫了一篇重要的文章,題為 《不同型別的 ZK-EVMs》,將各種 ZK-EVM 分類為四種類型,並解釋了它們的區別。
其核心思想是:Type 1 (例如 Taiko )與以太坊完全等效,而 Type 4 (例如 zkSync)在高效的證明生成方面表現出色。所有其他型別,Type 2、Type 2.5 和 Type 3 ,介於這兩者之間(例如 Polygon zkEVM、 Scroll 、 Linea )。
大多數 ZK-EVM 最初都是 Type 2.5 和 Type 3 ,並透露了一些朝 Type 1 或 Type 2 發展的意圖,儘管這些專案沒有為此提供具體的時間表或承諾。
本文主要關注 Type 1 和 Type 2/Type 2.5 之間的差異,並描述了破壞以太坊等效性可能帶來的後果。我們還將簡要介紹其他型別。
ZK-EVM 的主要目標是擴容以太坊,即提高以太坊的吞吐量,同時保留其其他特性(安全性、開發者體驗等)。在理想情況下,ZK-EVM 應該能夠:
- 根據黃皮書中以太坊虛擬機器規範,證明未經修改的原生位元組碼的執行情況(覆蓋 100% 的以太坊操作碼)。
- 以低成本快速生成證明。
- 允許 100% 重用為以太坊開發的工具和基礎設施。
- 允許將任何以太坊 dApp 「按原樣」 重新部署在 ZK-EVM 上(「原樣」 意味著不需要任何更改,毫不妥協)。
ZK-EVM 型別之間的區別
在 ZK-EVM 領域,區別主要來自以太坊 / EVM 等效性水平、ZK 不友好元素對證明生成成本和速度的影響,以及電路實現的複雜性(如 VM 構建或狀態樹)。
讓我們分析這些差異,特別是將 Type 1 與 Type 2/Type 2.5 區分開來。我們還將涉及到與每種型別最相關的使用案例。
在比較各種型別時,通常使用下面的圖表:
對於那些不在 ZK-EVM 領域全職工作的人來說,這張表可能看起來一頭霧水,所以讓我們將這些術語翻譯成通俗易懂的話再看看:
這個圖表更清晰地展示了每種型別的實際情況,但它仍然可能有些晦澀難懂,接下來讓我們通過分別解釋每種 Type,全面探索 ZK-EVM 領域。
Type 1 :等效於以太坊
Vitalik Buterin:
「Type 1 ZK-EVM 是我們最終需要的,使以太坊第 1 層本身更具擴容性。」
Type 1 表示不更改以太坊系統的任何部分,以便更輕鬆地生成證明。對以太坊的不改變意味著安全性上的不妥協,因為大多數密碼學原語(例如hash函式)、開發者基礎設施(例如偵錯程式)或鏈基礎設施(例如執行客戶端)已經經過了 9 年的實戰測試。
Type 1 ZK-EVM 不會替換任何東西:hash、狀態樹、事務樹、預編譯或任何其他共識邏輯,一切都與主網的 EVM 完全相同。
- Type 1 是唯一能夠驗證以太坊鏈本身的型別 —— 從整個區塊到交易執行、智慧合約和帳戶邏輯。
Type 2 :等效於 EVM
Type 2 通過去除一些不利於 ZK 的部分,使得證明生成更快、電路開發更容易。然而,由於這一點的後果,它可能會使得 ZK-rollup 的其他部分(例如節點軟體)的開發更加複雜。這些複雜性可能是由於已經確立的最佳實踐和測試工具與實施的更改(例如改變的狀態樹)不相容所導致的。
注意:等效於以太坊和等效於 EVM 並不相同。雖然等效於以太坊意味著沒有改變以太坊的任何部分,也就是說與所有以太坊 dApp 完全相容,但是等效於 EVM 允許改變資料結構(例如塊結構或狀態樹)。
儘管這些調整可能看起來很小,但它們會影響以太坊的相容性。改變資料結構可能導致以太坊 dApp 與 Type 2 ZK-EVM 不相容,特別是在驗證關於過去交易、收據或狀態的 Merkle 證明時(例如跨鏈橋)。
延伸閱讀:沒有Celestia,以太坊就無法擴展Rollup?
刪除 ZK 不友好的元素
對以太坊進行的修改旨在簡化開發並提高證明生成速度。目標是修剪依賴於不友好的零知識密碼學的以太坊部分。用更專業的術語來說,由於非本地域(例如hash函式)而需要大量閘電路(加法和乘法操作)的部分;大量的多標量乘法和 / 或快速傅立葉變換(FFT);或者只是需要大量操作的部分。
Type 2 ZK-EVM 可能修改的不友好的零知識元素的具體示例:
- hash函式:雖然以太坊使用 Keccak hash函式,但許多 ZK-EVM 使用 Poseidon hash函式,它需要的閘電路數量顯著較少。例如,讓我們估計每種型別的hash函式可以每秒計算多少個(即證明生成速度的比較)。
然而,需要注意的是,相對於廣泛社群認可的已建立的密碼學原語,較新的密碼學原語並不那麼受青睞。儘管 Poseidon 可能提供速度,但 Keccak 經過實戰檢驗的特性使其更具魯棒性和安全,因為它被廣泛採用。
這就是為什麼 Keccak 儘管更古老且被更廣泛的社群採用(在其他行業,例如安全系統或智慧裝置中的感測器),但可以被認為比 Poseidon 更更經得起考驗,畢竟 Poseidon 是在 ZK 社群內建立和使用的新hash函式。
- 用於資料儲存的狀態樹:例如,雖然以太坊使用 Merkle Patricia 樹 (使用 Keccak hash),但一些 Type 2 ZK-EVM 選擇 稀疏 Merkle 樹 (使用 Poseidon hash)。更改狀態樹可能會導致一些不相容性。例如,以太坊的 Merkle 樹具有不同的節點型別,並使用 RLP 對資料進行編碼,這在 ZK 中是一件困難的事情。
- 塊結構: 塊包含大量資訊。然而,在探索 L2 時,我們只關心 execution_payload_header(即塊hash)。在下圖中,有 execution_payload_header 中包含的所有資料的結構(塊hash)。
請注意:更改這些元件任意之一都會破壞以太坊等效性。
Type 2.5 :等效於 EVM,考慮 gas 成本
Type 2.5 ZK-EVM 增加了在 EVM 中使用 ZK 技術難以證明的特定操作的 gas 成本。
鑑於以太坊每個區塊的 gas 限制(30 M gas),增加每個操作碼的 gas 成本會導致每個區塊的操作碼減少。因此,一個區塊中可以包含較少複雜的操作碼。較簡單的操作碼使電路變得更小,並且生成證明的速度更快。
- gas 是工作量的度量單位。
- 操作碼的價格是以 gas 計算的。
- 操作碼指定了機器語言指令中的操作。
- 一個程式是操作碼的靜態列表。程式執行是執行追蹤。
- 執行追蹤是程式執行的特定有序操作碼列表。
難以進行 ZK 證明的部分包括:
- Keccak 操作碼和一些依賴於 Keccak 的其他操作碼。
- 預編譯:對 EVM 可訪問的函式。其中一些提供複雜或數學上複雜的任務,例如密碼學函式(例如 blake 2 f 或 sha 256)。它們不在 EVM 內執行,而是作為在執行客戶端中硬編碼的函式,並使用對特殊地址的 CALL 向 EVM 公開。
- 記憶體訪問:例如,增加記憶體插槽大小(例如,以太坊使用 位元組對齊 的記憶體,而 Polygon zkEVM 使用 32 位元組的記憶體插槽)。為了使這種更改成為可能,必須更改某些操作碼(例如 MLOAD)的內部邏輯。
- 儲存(即如上所述更改hash函式或狀態樹)。
改變 gas 成本可能會降低開發人員工具的相容性並破壞某些 dApp。例如,經常執行 gas 成本增加的操作碼的智慧合約可能會超過區塊 gas 限制並且無法執行。
Type 3 :幾乎等效於 EVM
Type 3 ZK-EVM 省略了不適用於 ZK 的預編譯,並可能調整記憶體和儲存訪問。
依賴已刪除的預編譯的 dApp 需要進行重寫。在不常見的情況下,Type 3 ZK-EVM 和原始 EVM 處理邊緣情況的方式的差異可能需要對 dApp 進行調整。
Type 4 (相當於高階語言)
Type 4 離 EVM 已經很遠了。
用高階語言(例如 Solidity,Zinc)編寫的智慧合約原始碼被編譯為中間表現形式,生成適用於 ZK 友好的虛擬機器的操作碼。
- 這種方法避免了為每個 EVM 執行步驟生成 ZK 證明,從而大大減少了證明工作。
- 即使合約可以編譯,如果 dApp 使用 EVM 手寫位元組碼,也需要進一步的工作。
- Type 4 ZK-EVM 還需要自己的開發人員工具((僅適用於操作碼級別),例如偵錯程式和追蹤器。
在證明執行軌跡的 ZK 電路中,每個步驟都實現了約束,每個步驟的成本是所有操作碼的總和。因此,Type 4 ZK-EVM 旨在使用盡可能少的複雜操作碼來優化效率。
值得一提的是,自定義操作碼(不在以太坊中涵蓋的操作碼)使得可以通過預設情況下在以太坊上無法實現的新功能。例如,通過帳戶抽象功能進行多次呼叫執行,或使用像 Argent 這樣的開箱即用解決方案啟動智慧合約錢包。
總結
不同的 ZK-EVM 型別優先考慮不同的目標和特徵。Type 1 側重於以太坊等效性,而 Type 4 優先考慮高效的證明生成。其他型別介於這些極端之間,許多 Type 2 和 3 ZK-EVM 協議已宣佈他們打算轉向以太坊等效。
這四種類型的分類可能不是 ZK 彙總的最終狀態,將來可能會進行進一步的修改。例如,一些 ZK-EVM 可能會成為混合型,Type 1/2 可能會開發 Type 4 解決方案(具有儘可能高的效率)並為 dApp 提供兩種選擇,而 Type 3 和 4 ZK-EVM 可能會新增以太坊等效選項。