「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。

域選擇

經過研究多個替代方案,我們選擇了所謂的 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 費用,同時仍能保證交易資料的可用性。敬請期待!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *