在以太坊Layer 2擴展網絡Arbitrum和Optimism網絡都宣布其主網的公開測試版正式啟動後,Layer 2的整體數據增長都極其明顯,這也標誌著以太坊Layer 2擴展解決方案之一Optimistic Rollup已經正式啟動。沒錯,這是一個屬於Layer 2的季節。
當像Arbitrum和Optimism這樣的Optimistic Rollup成為市場焦點時,另一個Layer 2網絡zkEVM也取得了一些關鍵性的進展。現如今,我們看到越來越多地zkEVM已成為擴展以太坊的關鍵。本文就將會帶你深入了解zkEVM的基本原理和發展現狀。
作者:DeGate Team
來源:Medium
編譯:陳一晚風
概述
1、zkSync宣布推遲8月31日發布其2.0版本。基於zkEVM的zkSync 2.0有望成為第一個兼容EVM的zk Rollup;
2、8月13日,Polygon宣布以2.5億美元收購以太坊Layer 2擴展解決方案Hermez,其核心技術是其zkEVM解決方案;
3、以太坊基金會在一份關於研發進展的定期更新聲明中表示,在過去幾個月中以太坊基金會資助籌建zkEVM團隊,希望能將EVM的所有操作碼直接通過ZK電路實現。
正如我們所知,在比較Optimistic Rollup和ZK Rollup的兩種擴容解決方案時,V神認為Optimistic Rollups可能會在短期內贏得通用EVM計算。但從長遠來看,隨著ZK-SNARK技術的改進,ZK rollup才可以在所有的應用場景中“獲勝”。而所謂“ZK-SNARK技術的改進”主要是指zkEVM的成功。
zkEVM的作用
在開始探究zkEVM的作用前,讓我們先來重新認識一下以太坊。從本質上來說,以太坊就是一個基於交易的狀態機。在計算機科學中,狀態機是通過讀取一系列輸入,從舊狀態轉換到新狀態的機器。
從創世狀態開始,以太坊通過一個又一個的交易轉換到以太坊的當前狀態。該狀態包含所有帳戶地址及其映射的帳戶狀態。
其中,EVM或以太坊虛擬機負責處理交易。 EVM作為堆棧機運行,程序員在其中使用Solidity等高級語言編寫代碼,然後將其編譯為EVM能夠理解的EVM字節碼。 EVM以各種EVM操作碼的形式執行標準堆棧操作,最終產生一個新的狀態。
現在問題來了。我們知道zk Rollup解決方案需要為Layer 2上的交易生成零知識證明,並將它們傳遞回Layer 1進行驗證。為了生成零知識證明,交易的處理需要符合zk電路證明規範。而在EVM設計之初,設計者並沒有考慮支持零知識證明。因此我們需要zkEVM。從技術上講,zkEVM 的含義是:運行在zk Rollup網絡上的虛擬機,兼容EVM並且零知識證明友好。
兩種實施策略
對於zkEVM來說,目前主要有兩種實現策略。
1、直接支持現有的EVM操作碼集,與Solidity操作碼集完全兼容。使用此解決方案的人包括Hermez和以太坊基金會zkEVM。
2、通過設計一個零知識證明友好的新虛擬機並適應EVM開發工具來保持Solidity兼容性。該方案主要被zkSync使用。
對於第一種策略,由於它完全支持現有的EVM操作碼集,並且使用與EVM相同的編譯器,現有的生態系統和開發工具完全兼容,也更好地繼承了以太坊的安全模型。而第二種策略,它不受原始EVM操作碼集的約束,因此可以更靈活地將代碼編譯為對零知識證明更友好的操作碼集。它還免去了與所有原始EVM操作碼集兼容所需的繁重工作。
總的來說,第一種策略更兼容、更安全,但工作量更大;第二種策略更靈活、工作量更少,但需要額外的努力來適應。
主要解決方案對比
赫梅茲zkEVM
Hermez使用第一種策略,將整個EVM操作碼集轉換為微操作碼。
眾所周知,有一些可變的EVM操作碼,例如CALL、EXP、CREATE 等,它們對zk電路證明本質上是不友好的,而這些操作碼的邏輯可以使用微操作碼以一種更友好的方式來表達。微操作碼在uVM中執行,uVM使用大量加密工具實現zk完成,並使用Plookup算法提高證明和驗證效率。
Hermez zkEVM的另一個亮點是它同時使用了兩個證明系統,專門生成一個STARK證明,然後使用PLONK或Groth16生成一個STARK證明的證明並在Layer 1上進行驗證,就像一個證明的證據。原因是STARK的證明量大,驗證鏈上的成本高,而Groth16或PLONK的證明量小,驗證速度快。兩者的這種組合各有優勢,很容易被認為是一種組合使用非對稱和對稱加密算法的場景。
應用ZKP zkEVM
與Hermez一樣,AppliedZKP zkEVM也使用第一種策略。 AppliedZKP使用Bus Mapping映射思想來分離存儲和計算。基於Bus Mapping映射提取的正確存儲數據,State證明證明了數據的一致性,EVM證明證明了計算邏輯的正確性。
具體流程如下:
1. EVM通過Bus Mapping映射讀取所需的相關狀態。狀態由存儲、內存和堆棧組成;
2. EVM執行操作碼;
3. EVM通過Bus Mapping映射寫回新狀態;
4.State證明負責Bus Mapping讀寫數據的一致性和正確性,EVM證明負責EVM操作碼執行的正確性。
zkSync EVM
與Hermez和AppliedZKP不同,zkSync選擇了第二種策略。 zkSync的zkEVM不是EVM的複製品,而是新設計的,可以運行99%的Solidity合約,並確保它在各種條件下(包括回滾和異常)正常工作。同時,zkEVM可用於在電路中高效生成零知識證明。
zkSync EVM使用TinyRAM來實現通用的操作碼集,而消耗大量gas的操作碼,例如SHA256和keccak,將特別實現其電路,最後使用遞歸聚合技術將所有證明聚合為一個以提高效率。
zkSync還為zkEVM開發了兩個編譯器前端:Yul和Zinc。 Yul是一種微型Solidity表示,可以為不同的後端編譯成字節碼;Zinc是一種基於Rust的語言,用於智能合約和通用零知識證明電路。這為開發人員提供了更多選擇。
另外,zkSync在構建編譯器時,選擇了LLVM這個生產工業級產品最先進的編譯器框架,以確保編譯器足夠完整,並具有所有經典優化。
總結
從上述這些擴容項目中,我們看到在團隊的不斷努力下,zkEVM技術正在走向成熟,並將在大約六個月內實現與EVM兼容的zk Rollup擴展解決方案。
如今,區塊鏈技術正在進入一個前所未有的充滿爭議的時代。從公鏈之爭到以太坊擴容方案之戰,甚至到一個具體擴展解決方案,不同的項目都在相互競爭、追趕和超越,這其中蘊含著對現實世界的巨大遊戲,很幸運,我們處於區塊鏈技術技術最具活力的時代。