zkEVM 一直以來都是 layer2 和以太坊擴容的聖杯,並處於區塊鏈&以太坊的最前沿,這一領域匯聚了很多零知識證明和工程創新,以及以太坊生態系統中所有最有才華的人。這是一個非常有趣且非常值得研究的話題,在這篇文章中,我將帶領大家深入了解 zkEVM,並解釋 EF 和 @Scroll_ZKP 的原生 zkEVM 架構。

原文:Luozhu on Twitter

作者:Luozhu 丨經作者授權發布

編譯: DYan,Web3Cafff 譯者

封面: Photo by Steven Lelham on Unsplash

zkEVM 的三個層級

首先並不是所有的 zkVM 都等同於 zkEVM,即使是 zkEVM 本身也分為三個層次(感謝 @drakefjustin 的研究)

第一層是 “語言層”(兼容 EVM),即將適配 EVM 的語言(例如 Solidity 或 Yul)編譯成適配零知識證明的語言(例如 @zksync ‘ zinc,和 @StarkWareLtd 的 Cairo),然後編譯 Zinc 和 Cairo 代碼運行在對應的虛擬機上,這可能和以太坊的 EVM 完全不同。

這種解決方案的優點是,我們可以從頭開始設計一個對零知識證明兼容的虛擬機,而不受過去 EVM 設計的限制。

@gavofyork 沒想到有一天 zk-snark 會用在 EVM 中,所以如果將零知識設計結構直接應用在 EVM 的很多地方,會造成巨大的開銷,尤其是運行 Keccak 哈希算法和 MPT 算法時,詳情參考 @yezhang1998 的文章 https://hackmd.io/@yezhang/S1_KMMbGt。這些缺點導致開發者很難獲得最佳的開發體驗,這些 zkVM 在底層使用自己語言的指令集,且不能支持很多重要的 EVM 操作碼。

因此,開發者要想獲得最佳的開發體驗,他們可能需要學習這些 zkVM 自帶語言(如 Cairo),這可能會導致 zk-Rollup 無法直接繼承 Layer1 生態,並且 Layer2 開發者也因為開發語言問題而無法順利編碼。

第二個層級是 “字節碼級別”(等同於 EVM),既可以在 solidity 語言級別實現兼容,又可以在 EVM 操作碼級別實現完全兼容,只有達到字節碼級別兼容,才能稱為 “zkEVM”。在 zkEVM 基礎上,solidity 開發者可以獲得最佳的開發體驗,L1 應用和開發工具基本可以不加修改地遷移到 L2,現階段的 @Scroll_ZKP 和 EF 原生 zkEVM 的(包括 @ConsenSys@0xPolygonHermez 的努力),都是針對字節碼級別的 zkEVM。

第三層是 “共識層”,也是最終的 zkEVM,它不僅將在語言和字節碼層面實現兼容性,而且在共識層面也實現了兼容性。當實現共識層兼容後,每個礦工在生成區塊時都會為此區塊生成一個證明,當所有節點同步時,只需要驗證生產的證明是否有效,無需重新計算所有交易。並且基於 Halo2 算法的遞歸證明,可以用一個證明來驗證整個區塊的歷史是有效的,那時同步節點甚至不需要驗證每一個證明,只需要驗證最後一個證明就可以接入網絡。

從長遠來看,當同步一個以太坊節點只需幾分鐘甚至幾秒鐘,任何人都可以輕鬆加入以太坊網絡時,以太坊將變得更加去中心化和可靠,我真的很期待看到它發生。

所以 zkEVM 的最終目標其實就是把它應用到 L1 上,取代我們現在的 EVM(非常有野心!)。這也是 EF ( @PrivacyScaling ), @Scroll_ZKP 和我們一起努力的最終目標,詳情見 @VitalikButerin 發送的以太坊路線圖的最後部分—“zk-snark Everything”,我相信 @VitalikButerin@barrywhitehat 也會探索堆棧解決方案。

零知識證明

是什麼讓 zkEVM 即將發生

有很多密碼學突破可以讓 zkEVM 從想像變為現實,其中最重要的就是 Plonk 算法和 Halo2 算法,詳情可以看 @Zac_Aztec 這個帖子,他也是 Plonk 算法和 @aztecnetwork 的創始人。

https://platform.twitter.com/embed/Tweet.html?dnt=true&embedId=twitter-widget-0&features=eyJ0ZndfZXhwZXJpbWVudHNfY29va2llX2V4cGlyYXRpb24iOnsiYnVja2V0IjoxMjA5NjAwLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X3JlZnNyY19zZXNzaW9uIjp7ImJ1Y2tldCI6Im9mZiIsInZlcnNpb24iOm51bGx9LCJ0Zndfc2Vuc2l0aXZlX21lZGlhX2ludGVyc3RpdGlhbF8xMzk2MyI6eyJidWNrZXQiOiJpbnRlcnN0aXRpYWwiLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X3R3ZWV0X3Jlc3VsdF9taWdyYXRpb25fMTM5NzkiOnsiYnVja2V0IjoidHdlZXRfcmVzdWx0IiwidmVyc2lvbiI6bnVsbH19&frame=false&hideCard=false&hideThread=false&id=1440295503938215947&lang=zh-cn&origin=https%3A%2F%2Fweb3caff.com%2Fzh%2Farchives%2F16657&sessionId=3f5482e58ef4d158c772fca3b745f76e967797cf&theme=light&widgetsVersion=b45a03c79d4c1%3A1654150928467&width=550px

Plonk 算法是基於 Sonic 結合數學多項式的創新

基於 Sonic 算法,Plonk 有一個 “通用且可更新” 的可信設置,即只需要一個設置,然後就可以重複使用,並且基於多項式推導(非常漂亮的數學公式),我們可以使用表現項更直觀的 PLONKish 算法,這比 groth16 和其他 zk-snark 證明方案使用的 R1CS 算法更好,更多信息請見  https://www.youtube.com/watch?v=bz16BURH_u8

zkEVM 也使用了 Plonkish 的兩個非常重要的特性,即 “自定義門” 和 “查找表參數”。

Plonk 的這兩個特性讓我們可以編寫高度自定義的約束條件,這對減少算法的開銷很有幫助(後面你會發現,我們經常在原生 zkEVM 架構中使用這兩個特性)。https://www.youtube.com/watch?v=Vdlc1CmRYRY 感謝 @zeroknowledgefm 積累了這麼多的零知識證明的資源,讓大家了解零知識證明背後的神奇魔力和奇妙的數學。

原生 zkEVM 架構

正如我們之前提到的,Native zkEVM 不僅會在 zk-Rollup 中使用,而且也會取代我們現在的 L1 EVM,成為 L1 zkEVM,所以它的設計/代碼和架構非常值得學習(也是最前沿的創新!)

眾所周知的 EVM 本質上是一個狀態機,通過交易驅動 state1 到 state2,所以可以理解為驅動最小狀態變化的操作是一個事務(其實就是 trace)。

如果我們可以得到交易並約束/證明它們,那麼就可以約束/證明整個狀態機。

zkEVM 的基本思想是創建一個 EVM 架構來約束 EVM(狀態機)並證明 EVM 的所有執行邏輯是正確的,這個 EVM 架構可以獲取所有交易,以及該交易調用的每個特定操作碼,然後證明每筆交易,以及每筆交易調用的所有操作碼,操作碼的操作邏輯,甚至操作順序,都是完全正確的。

但在我們的實際操作時,我們發現如果只用一個架構(EVM 架構)去約束 EVM,這個架構會變得非常龐大,最後會增加不必要的複雜度和開銷,所以我們根據 EVM 的不同模塊設計了不同的子架構/表格查詢,當需要證明時,我們只需要查詢對應的表(一個表大概是這個樣子,根據需求填寫不同的變量)。

比如是內存/堆棧/存儲讀&寫的邏輯,EVM 架構會查詢狀態表,如果是涉及操作碼的操作,EVM 架構會查詢字節碼表,同理,事務和區塊會分別查詢事務和區塊表。

這裡狀態架構在約束存儲相關操作(狀態表)時需要操作 MPT,所以查詢對應的 MPT 表,交易架構在計算哈希和交易簽名驗證時,也需要查詢對應的 Keccak 表和 Sig 表。

這個表不是固定的,而是根據不同的操作填入不同的值(這也是 zkEVM 能變得通用的原因之一),所以證明者有能力填寫虛假值來偽造一個無效的表。因此,為了保證查詢表格的正確性,我們為每個表格設計了一個架構,每個架構與對應表格都有一些特定的多項式約束,以保證表格完全正確。

當一個事務進入 EVM 架構時,它所涉及的所有操作(操作碼、堆棧/存儲等)都會被重新排序,然後分配給不同的子架構,這些子架構將證明這些操作的正確性並生成證明。最後,這些子架構生成的證明將輸入到聚合架構中,聚合架構將這些單個證明轉變為聚合證明。

之後就可以將聚合證明發送到 L1 合約來驗證證明的有效性,這也是 Scroll 在高級別架構的工作流程。

結束和開始

zkEVM 是 “zk Everything” 的里程碑,只有在實用的 zk-proving 系統成熟之後才能出現的創新,在研究 zkEVM 的過程中,我對它背後的數學機製印象深刻,我相信零知識證明是一個巨大的創新,我們正處於這個創新的最前沿。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。