zkEVM技术的对比分析

分析 技术 2024-01-31 89
随着“zkevm战争”的加剧,公众对不同zkevm的优势进行了大量讨论。但是也有一些错误的信息,所以我们想澄清一些关于polygon的信息 zkEVM的事实及与其他产品的比较。

我的观点可能是偏见的,因为我在Polygon工作,但我会尽力保持公平。我将重点关注Polygon的zkevm和zksyncc Era,因为它正在生产中,而且我对其他zkEVM项目了解不多。

EVM兼容性

Polygon zkevm直接执行EVM字节码。根据Vitalik的分类,它是一种三型zkevm。它应该很快成为二型,我们仍然缺少四个预编版本。Scroll也在努力实现2型zkevm。

相比之下,zkSync Era采用不同的字节码格式,通过提供的编译器支持Solidity,使其成为四型KEVMM:它支持Solidity,但不支持EVM字节码本身。像Hardhat这样的工具不能开箱即用,尽管它可以与zkSync的插件一起使用。

zksync认为它们的zkvm更适合未来,换句话说,它可以更好地与Solidity以外的语言一起工作。然而,他们的虚拟机似乎继承了EVM的许多性能特征,比如它的256位字大小。像Miden这样的zkvm可能更有未来性,因为它是为通用计算而设计的,而不是专注于Solidity。

性能

性能一直是Polygon的首要任务,我们的zkEVM非常高效。在CPU上运行我们的验证器,每笔交易的成本约为0.00084美元。

虽然我们没有为zksync找到任何zkevm工作标准,但我们怀疑我们的性能差距很大,因为我们对ZK技术的选择非常不同。

场挑选

在研究了几个备选方案后,我们选择了一个叫Goldilocks的字段,一个阶为2^64-2^32 1的素字段。其超小、美观的二进制结构造成了极快的场操作,在现代CPU中,乘法操作只需不到2个周期。

zkSync采用了基于alt-bn128曲线的SNARK,采用了更传统的方法。底层字段约254位,CPU上的字段乘法约80个周期。

为了解可能造成的巨大差异,我们可以看看Celer的SHA2标准。在那里,我们的STARK验证器比基于椭圆曲线的验证器快5-50倍。

alt-bn128的优点是EVM原本支持它,所以更容易向Ethereum提交确认。在Polygon,我们用alt-bn128上的fflonk来确认“包装”我们的最终集合。我们的方法需要更多的工作,但我们认为这是非常值得的,因为它有令人难以置信的性能改进。

算术化

区别不止于此。我们的zkEVM是建立在STARK的基础上的,但是有一个现代的歪曲。我们有一个STARK用于CPU主STARK(每个周期有一行),以及其他STARK用于算术、散列等。就像我们在Rapidup中描述的那样,这些表可以连接起来。这类似于物理CPU,它通常有协处理器来加速密集操作,如渲染、加密或ML推理。

以Keccak为例。由于它被EVM广泛使用,我们为它设计了一个特殊的STARK,并使用了一些新的技术,我们在这里记录了这些方法。设计这样的自定义算术需要大量的工作,但它得到了回报,使我们能够在每秒内确认数百个Keccak的排列组合。

zkSync采用了我称之为更传统的方法。他们使用基于PLONK的验证器,尽管它确实支持自定义门,但它们的zkevm并没有过多地使用它们;大部分计算都是通过一个名为electoroptimizedWidth4MaingateWithDNext的通用门来完成的。它似乎比普通的PLONK门略强,但它仍然局限于简单的操作,比如mulonk-adds。

令人钦佩的是,zksync确实使用了搜索参数(我们也是),这是一种更现代的技术,可以帮助提高像keccak这样的东西的效率。然而,如果没有定制的算术,256位数学、keccak等的效率将大大降低。

安全

Polygon非常重视安全问题,我们的zkevm已经通过了两次单独的审计:一次是Spearbit,另一次是Hexens。这两份报告都是公开的,在这里。我们还公布了验证部署的声明。

我们不知道zksync的zkevm是否做过任何公开审计。zksync网站列出了桥接合同的审计,但没有列出zkevm本身。

除了审计,这两个项目都有各种各样的“训练轮”来提供储备安全层,但这是一个丰富的话题,我不会在这里讨论。

L1数据

Polygon zkevm将所有交易数据发布到L1,并混淆了相关的gas成本;请参考edu的帖子以获得正确的数字。目前平均交易大小约为120字节,因此每笔交易的成本约为120*16=1920gas。

但zksync发布了状态差异。恶意排序器可以扣留交易数据,但zksync认为,目前状态的推特足以确保安全。这似乎有点值得怀疑,因为交易数据通常被认为是可用的,而且一些应用程序依赖于此。

看看修改后的数据,我们zkevm和zksync的每笔交易的gas成本基本没有区别。这些数字可能会随着时间的推移而改变,基于每个链上交易的混合,但到目前为止,状态差异似乎并没有节省任何gas;两个系统都在向L1发送每笔交易的120字节。

我们计划在这里做一些改进,但不使用状态差异。交易本身可以被压缩,降低gas成本,提高交易效率。

相关推荐