「zkEVM 戰爭」升溫一文全面對比Polygon zkEVM與zkSync Era

原文標題:《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。

性能

性能一直是Polygon 的重點,我們的zkEVM 非常高效。在CPU 上運行我們的證明器的成本大約為每筆交易0.000084 美元。

雖然我們沒有找到任何關於zkSync 的zkEVM 的工作基準,但我們懷疑由於我們非常不同的ZK 技術選擇,存在著很大的性能差距。

域選擇

經過研究多個替代方案,我們選擇了所謂的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 等等的效率都會大打折扣。

安全性

Polygon 非常重視安全性,我們的zkEVM 經過了兩次獨立審計:一次是由Spearbit 進行的,另一次是由Hexens 進行的。兩份報告都可以在這裡公開查看。我們還發布了驗證部署的說明。

我們不知道zkSync 的zkEVM 是否經過任何公開審計。 zkSync 的網站列出了橋接合約的審計,但沒有zkEVM 本身的審計。

除了審計外,兩個項目都有各種「安全備胎」,以提供備用的安全層,但這是一個很深的話題,我在這裡不會詳細介紹。

L1 數據

Polygon zkEVM 將所有交易數據發佈到L1。在Twitter 上存在一些關於此的混淆,有關此的Gas 費用請參見Edu 的文章。目前,平均交易大小約為120 字節,因此每筆交易的Gas 費用約為120* 16 = 1920 Gas。

zkSync 則發布狀態差異。惡意的序列化器可能會隱瞞交易數據,但zkSync 認為擁有當前狀態的trie 足以確保安全。這似乎存在爭議,因為通常預期交易數據是可用的,並且某些應用程序依賴於此。

查看經過更正的數據後,我們可以發現我們的zkEVM 和zkSync 的每筆交易Gas 費用基本相同。這些數字可能會隨著每個鏈上發生的交易類型的混合而隨時間變化,但截至今日,狀態差異並沒有節省任何Gas 費用;兩個系統都向L1 發送大約120 字節的每筆交易數據。

我們計劃在這裡進行一些優化,但不使用狀態差異。交易本身可以進行壓縮,降低Gas 費用,同時仍能保證交易數據的可用性。敬請期待!

原文鏈接

Total
0
Shares
Related Posts