原文標題:《A comparison of zkEVMs》
原文作者:Daniel Lubarov
原文編譯:Kxp,BlockBeats
隨著「zkEVM 戰爭」的升溫,公眾討論了許多關於不同 zkEVM 的優點。但也存在一些錯誤的資訊,因此我們想澄清一些關於 Polygon zkEVM 以及它與其他專案的比較的事實。
作為 Polygon 的一名員工,我有偏見,但我會盡力保持比較公正。我主要關注 Polygon 的 zkEVM 和 zkSync Era,因為它們已經投入生產使用,並且我不太瞭解其他 zkEVM 專案。
zkSync 的 zkEVM 和證明器由 100 k 多行程式碼組成。我盡力提供準確的摘要,如果有任何不準確之處,請告訴我,我會進行更正。
文章目錄
EVM 相容性
Polygon zkEVM 直接執行 EVM 位元組碼。根據 Vitalik 的分類,它是一種型別 3 的 zkEVM。很快它將成為型別 2 ;目前我們缺少四個預編譯。Scroll 也在努力向型別 2 zkEVM 發展。
相比之下,zkSync Era 使用不同的位元組碼格式,透過提供編譯器來支援 Solidity。這使它成為一種型別 4 的 zkEVM:它支援 Solidity,但不支援 EVM 位元組碼本身。例如 Hardhat 這樣的工具不能直接使用,儘管可以使用 zkSync 的外掛。
zkSync 認為他們的 zkVM 更加具有未來性,即它可以更好地與 Solidity 以外的語言配合使用。但是,他們的 VM 似乎繼承了 EVM 的許多效能特徵,例如其 256 位字大小。像 Miden 這樣的 zkVM 可能更具有未來性,因為它是為通用計算而設計的,而不是專注於 Solidity。
域選擇
經過研究多個替代方案,我們選擇了所謂的 Goldilocks field,一個二階巨大素數域 2 ^ 64 – 2 ^ 32 1 。它的小尺寸和美麗的二進位制結構導致了極快的域操作,乘法僅需在現代 CPU 上花費不到兩個週期。
zkSync 採用了更傳統的方法,使用基於 alt-bn 128 曲線的 SNARK。基礎域的大小約為 254 位,域乘法在 CPU 上需要大約 80 個週期。
為了感受到這種巨大差異的影響,我們可以看看 Celer 的 SHA 2 基準測試。在那裡,我們的 STARK 證明器比基於橢圓曲線的證明器快了 5-50 倍。
alt-bn 128 的優點在於 EVM 原生支援它,因此向 Ethereum 提交證明更簡單。在 Polygon,我們將最終的聚合證明用 alt-bn 128 的 fflonk 證明「包裹」起來。雖然我們的方法需要更多的工作,但我們認為這對於不可思議的效能增益來說是值得的。
算術化
區別不止於此。我們的 zkEVM 基於 STARKs 構建,但具有現代化的變化。我們有一個主 STARK 用於 CPU(每個週期有一行),還有其他用於算術、雜湊等的 STARK。這些表格可以連線,就像我們在 RapidUp 中描述的那樣。這類似於物理 CPU,它們經常有協處理器來加速渲染、Crypto 或 ML 推斷等密集操作。
以 Keccak 為例。由於它在 EVM 應用中被廣泛使用,我們設計了一個專門的 STARK 用於它,使用了一些我們在這裡記錄的新技巧。設計這樣的定製算術化需要大量的工作,但它帶來了回報,使我們能夠每秒證明數百個 Keccak 排列。
zkSync 採用了我稱之為更傳統的方法。他們使用基於 PLONK 的證明器,儘管它支援自定義門,但他們的 zkEVM 並沒有多少使用;大多數計算都是使用一個名為 SelectorOptimizedWidth 4 MainGateWithDNext 的通用門進行的。它似乎比 vanilla PLONK 門稍微強大一些,但仍然侷限於像 mul-adds 這樣的簡單操作。
值得讚揚的是,zkSync 使用了查詢引數(像我們一樣),這是一種更現代的技術,可以幫助提高像 Keccak 這樣的效率。但是,沒有自定義算術化, 256 位數學、Keccak 等等的效率都會大打折扣。
L1 資料
Polygon zkEVM 將所有交易資料釋出到 L1。在 Twitter 上存在一些關於此的混淆,有關此的 Gas 費用請參見 Edu 的文章。目前,平均交易大小約為 120 位元組,因此每筆交易的 Gas 費用約為 120* 16 = 1920 Gas。
zkSync 則釋出狀態差異。惡意的序列化器可能會隱瞞交易資料,但 zkSync 認為擁有當前狀態的 trie 足以確保安全。這似乎存在爭議,因為通常預期交易資料是可用的,並且某些應用程序依賴於此。
檢視經過更正的資料後,我們可以發現我們的 zkEVM 和 zkSync 的每筆交易 Gas 費用基本相同。這些數字可能會隨著每個鏈上發生的交易型別的混合而隨時間變化,但截至今日,狀態差異並沒有節省任何 Gas 費用;兩個系統都向 L1 傳送大約 120 位元組的每筆交易資料。
我們計劃在這裡進行一些最佳化,但不使用狀態差異。交易本身可以進行壓縮,降低 Gas 費用,同時仍能保證交易資料的可用性。敬請期待!