随着「zkEVM 战争」的升温,公众讨论了许多关于不同 zkEVM 的优点。但也存在一些错误的信息,因此我们想澄清一些关于 Polygon zkEVM 以及它与其他项目的比较的事实。

zkSync 的 zkEVM 和证明器由 100k 多行代码组成。我尽力提供准确的摘要,如果有任何不准确之处,请告诉我,我会进行更正。

Polygon zkEVM 直接执行 EVM 字节码。根据 Vitalik 的分类,它是一种类型 3 的 zkEVM。很快它将成为类型 2;目前我们缺少四个预编译。Scroll 也在努力向类型 2 zkEVM 发展。

zkSync 认为他们的 zkVM 更加具有未来性,即它可以更好地与 Solidity 以外的语言配合使用。但是,他们的 VM 似乎继承了 EVM 的许多性能特征,例如其 256 位字大小。像 Miden 这样的 zkVM 可能更具有未来性,因为它是为通用计算而设计的,而不是专注于 Solidity。

性能一直是 Polygon 的重点,我们的 zkEVM 非常高效。在 CPU 上运行我们的证明器的成本大约为每笔交易 0.000084 美元。

域选择

zkSync 采用了更传统的方法,使用基于 alt-bn128 曲线的 SNARK。基础域的大小约为 254 位,域乘法在 CPU 上需要大约 80 个周期。

alt-bn128 的优点在于 EVM 原生支持它,因此向 Ethereum 提交证明更简单。在 Polygon,我们将最终的聚合证明用 alt-bn128 的 fflonk 证明「包裹」起来。虽然我们的方法需要更多的工作,但我们认为这对于不可思议的性能增益来说是值得的。

区别不止于此。我们的 zkEVM 基于 STARKs 构建,但具有现代化的变化。我们有一个主 STARK 用于 CPU(每个周期有一行),还有其他用于算术、哈希等的 STARK。这些表格可以连接,就像我们在 RapidUp 中描述的那样。这类似于物理 CPU,它们经常有协处理器来加速渲染、Crypto 或 ML 推断等密集操作。

zkSync 采用了我称之为更传统的方法。他们使用基于 PLONK 的证明器,尽管它支持自定义门,但他们的 zkEVM 并没有多少使用;大多数计算都是使用一个名为 SelectorOptimizedWidth4MainGateWithDNext 的通用门进行的。它似乎比 vanilla PLONK 门稍微强大一些,但仍然局限于像 mul-adds 这样的简单操作。

安全性

我们不知道 zkSync 的 zkEVM 是否经过任何公开审计。zkSync 的网站列出了桥接合约的审计,但没有 zkEVM 本身的审计。

L1数据

zkSync 则发布状态差异。恶意的序列化器可能会隐瞒交易数据,但 zkSync 认为拥有当前状态的 trie 足以确保安全。这似乎存在争议,因为通常预期交易数据是可用的,并且某些应用程序依赖于此。

我们计划在这里进行一些优化,但不使用状态差异。交易本身可以进行压缩,降低 Gas 费用,同时仍能保证交易数据的可用性。敬请期待!