第一种方法要求开发者为不同 dApp 设计专用 「ASIC」 电路。这是最传统的使用零知识证明的方式。自定义的电路设计有助于降低各个 dApp 的成本。但是,这也带来了可组合性问题,因为电路是 「静态的」,而且对电路设计知识的高度依赖导致开发者体验很糟糕。 第二种方法不需要任何特殊的设计,也不要求开发者具备极强的专业知识。这种基于机器的证明背后的深层概念是,任何程序终将运行在 CPU 上。因此,我们只需要构建一个通用 CPU 电路来验证低级 CPU 操作。然后,我们可以使用这个 CPU 电路来验证任何程序执行。就本文的应用场景而言,程序指的就是智能合约,CPU 就是 EVM。然而,由于成本过高,这个方法在过去几年里没有得到普遍采用。例如,即使你只想证明某一个操作中 add 的结果是正确的,你依然需要负担整个 EVM 电路的成本。如果你的执行追踪中有上千个操作,证明者就要负担 1000 倍的 EVM 电路成本 3。 最近,有很多研究致力于利用这两种方法来优化零知识证明,包括(i)提议新的零知识证明友好型原语 Poseidon 哈希(Poseidon 哈希 在电路中的效率是 SHA256 的 100 倍);(ii)持续提高通用可验证虚拟机的效率,就像 TinyRAM 那样;(iii)越来越多的通用优化技巧,如 Plookup,以及运行速度更快的密码学库。 在我们 之前的文章 中,我们提议为每个 dApp 设计 「ASIC」 电路,并让它们通过密码学承诺进行通信。然而,根据社区的反馈,我们改变了研究重点,将聚焦于使用第二种方式构建通用 EVM 电路(所谓的 「zkEVM」)。zkEVM 将带来与 Layer 1 完全相同的开发体验。我们不会把设计复杂性留给开发者,而是利用自定义 EVM 电路设计取而代之,解决效率问题。 zkEVM 的设计挑战zkEVM 构建起来很难。尽管多年来这种直觉都很清晰,但是至今还没有人成功构建出原生 EVM 电路。不同于 TinyRAM,zkEVM 在设计和实现上更具挑战性,具体原因如下: 第一,EVM 对椭圆曲线的支持有限。目前,EVM 只支持 BN254 配对。由于不直接支持 循环椭圆曲线,EVM 很难实现证明递归。在这种设置下,我们也很难使用其它专用协议。验证算法必须是 EVM 友好型的。 (责任编辑:admin) |