zkEVM
zkEVM 是一套用來證明「以太坊虛擬機正確執行」的零知識證明系統。每當一條彙整處理一批交易時,zkEVM 便產出一個有效性證明,佐證新的狀態根確實是「在 EVM 規則下跑那些交易」的真正結果。其回報是:以太坊的驗證合約只需檢查一個簡潔的證明,而不必重新執行整批交易,於是彙整在把沉重計算搬到鏈下的同時,仍繼承了以太坊的安全性——這正是 ZK 彙整的核心。
困難之處在於,EVM 從來就不是為了「被證明」而設計的。它的 256 位元字組、Keccak 雜湊、以默克爾帕特里夏字典樹形式存在的儲存、gas 計帳,以及各種古怪的操作碼,全都很難廉價地表達成算術電路。Vitalik Buterin 那套著名的分類,依 zkEVM 與以太坊吻合的忠實程度來排名:第一型完全等同於以太坊(證明真正的 L1 區塊,最慢);第二型等同於 EVM(對開發者而言一模一樣,僅有細微的內部更動);第三型幾乎等同於 EVM(有少數不支援的預編譯或行為,較易建造);第四型則把高階的 Solidity 編譯到一個不同的、對 ZK 友善的虛擬機(證明最快、位元組碼相容性最低)。數字越小代表越相容,但越慢、越難證明。
實際的系統橫跨了整個光譜:Polygon zkEVM 與 Scroll 瞄準第二/2.5 型的位元組碼等價,zkSync Era 與 Starknet 走第四型的語言等價路線,Taiko 則追求第一型。它們全都把「EVM 執行的算術化」(通常是 PLONK 式、並大量使用查表論證來處理操作碼與位元組運算)與遞迴聚合結合起來,且往往把最終的證明包進一個小型 SNARK 裡,以求廉價的鏈上驗證。
「等同於 EVM」與「等同於以太坊」並不是一回事。一個第四型 zkEVM 能跑相同的 Solidity 原始碼,卻在位元組碼與 gas 層面有所不同,這可能會弄壞那些倚賴確切 EVM 語意的工具、除錯器或合約。相容性是一道光譜,而非一個打勾欄。