本文作者:Chainlink;编译:Cointime Freya
零知识以太坊虚拟机(zkEVM)是一种通过与零知识证明计算和现有以太坊基础设施兼容的方式,来执行智能合约交易的虚拟机。这使它们成为零知识rollup、第二层扩展解决方案的一部分,从而在降低成本的同时提高交易吞吐量。
如果第二层可以在不修改底层智能合约逻辑的情况下运行为以太坊环境创建的程序,那么它就是EVM兼容的。这使得第二层与现有的以太坊智能合约模式、代币标准和工具兼容。与 EVM兼容对于这些广泛采用的第二层来说非常重要,因为它使熟悉以太坊的Solidity编程语言的开发人员能够使用他们习惯的、经过实战测试的工具,来构建高度可扩展的应用程序。
在本文中,我们将探讨zkEVM的工作原理、构建zkEVM的挑战、zkEVM的优势以及各种类型的零知识项目等。
zkEVM是如何工作的?

zkEVM 获取初始状态、处理交易并输出更新后的状态以及零知识证明。
zkEVM将以太坊环境复制为零知识rollup,将以太坊开发人员的经验和现有工具带到高度可扩展和安全的第二层。这使得开发人员能够将现有的dApp和智能合约无缝地引入到新环境中,或者轻松地构建新的应用程序。
1. zkEVM执行环境
EVM执行智能合约,并在每个新区块被添加到链上后计算以太坊网络的状态。它解析人类编写的Solidity代码,将其翻译成计算机可读的字节码,然后更新以太坊状态。它规范了关于改变状态的特定规则,并定义了开发人缘可以编写的智能合约。
zkEVM是一种新型的EVM,智能合约可以在上面运行。它获取初始状态、计算交易,并输出一个更新后的新状态和相应的零知识证明。由于zkEVM是基于以太坊的EVM,因此开发人员能够轻松地将以太坊的dApps和代币移植到zkEVM上。
2. zkEVM证明电路
零知识证明(ZKP)是一方以加密方式向另一方证明,他们拥有关于某项信息的知识而不透露实际基础信息的一种方式。
zkEVM 的证明电路产生零知识证明来验证和确认交易,证明用户交易计算正确且新状态是正确的。
3. zkEVM验证者合约
在以太坊上,每笔交易都必须经过每个节点的验证。相比之下,零知识rollup是一个第二层的扩展解决方案,它“roll up”大量交易,用发布在以太坊等第一层区块链上的ZKP验证其正确性。这在保持安全性的同时提高了吞吐量且降低了成本。
第二层的零知识rollup向部署在底层第一层的验证者智能合约提交有效性证明。它们使用提交的零知识证明来检查基于初始状态的输出是否正确,从而验证更新的状态是否正确,而无需单独处理所有交易。
构建zkEVM的挑战
零知识证明和以太坊虚拟机是分别开发的技术,直到最近才被结合在一起创建zkEVM。为了让它们一起工作,需要克服许多挑战和先天的低效率。
1. 基于堆栈的架构
EVM使用基于堆栈的架构,遵循后进先出(LIFO)原则,最后添加到调用堆栈的数据会最先被删除。这种模式简单易用。然而,在创建zkEVM时,基于寄存器的模型(即数据存储在虚拟CPU寄存器中),对于zkEVM通常需要的高性能计算和零知识计算来说,会更加有效。
2. 操作码的复杂性
与典型的虚拟机不同,EVM在执行智能合约时使用特殊的操作码来指示EVM做一些事情,如CALL、DELEGATECALL、REVERT和INVALID。这增加了复杂性,使人们更难确切理解EVM到底在做什么。
3. 存储开销
EVM使用Merkle Patricia Trie来组织数据,并使用Keccak哈希函数通过将数据转换为哈希来帮助跟踪数据。这有很高的证明开销,因为它需要大量的计算来检查哈希值是否正确。
4. 证明成本
生成零知识证明是一个资源密集型的过程,需要专门的硬件。
探索zkEVMs的优势
与第一层和其他第二层rollup相比,zkEVMs有许多优势。
1. 安全的可扩展性
与以太坊不同,zkEVM不需要遵循以太坊的共识协议规则。然而,zkEVM上的所有第二层交易仍然通过使用有效性证明在底层第一层进行验证。这意味着zkEVM可以在不影响安全性的情况下优化速度和交易吞吐量。
2. 低成本
第二层滚rollup将成批的交易发布到像以太坊这样的第一层区块链上。Optimistic rollup必须在链上发布所有交易数据,包括签名,这可能会导致高昂的gas成本。然而,zkEVM只需要在链上发布最终的状态变化,因为零知识证明保证了该批次内所有交易的有效性。这种较低的成本被传递给zkEVM的应用程序和终端用户。
快速最终性
最终性是指区块链交易不能被更改、取消或逆转的时刻。使用Optimistic rollup(一个竞争性的第二层架构),在网络参与者获得其有效性的客观证明并可以最终确定之前,交易有一到两周的挑战期。相比之下,零知识rollup一旦发布到底层第一层区块链上,就会被最终确定。对于需要在DeFi生态系统中快速转移资产的交易者而言,更快的最终确定性非常重要,这有助于吸引流动性并提高资本效率。
网络效应
EVM兼容性使zkEVM能够利用以太坊现有的开发人员生态系统、广泛的工具、文档、代码库以及经过实战测试的基础设施。此外,Avalanche、Polygon和其他区块链使用EVM环境,进一步巩固了EVM作为整个Web3的标准。
zkEVMs的类型

以下类别是由以太坊创始人Vitalik Buterin确定的。一般来说,编号较低的类型与以太坊基础设施更兼容,而编号较高的类型有更快的证明时间。
类型1(完全等同于以太坊)
类型1的zkEVM不改变当前以太坊系统的任何部分,从而使其更容易生成零知识证明。这使得它们与所有以太坊原生应用程序完全兼容,并使区块浏览器和执行客户端等工具能够被重用。然而,以太坊协议的某些部分需要大量的计算来生成零知识证明,这导致zkEVM的证明时间很长。
类型1项目:zkEVM社区版
类型2(完全等同于EVM)
类型2的zkEVM旨在与现有的以太坊应用程序完全兼容,但会进行少量修改以加快证明生成速度,且简化开发过程。虽然证明时间更快,但目前的实现仍被认为太慢了。
类型2项目:
Scroll和Polygon Hermez的目标是创建类型2的zkEVM,尽管它们目前更接近于类型3。
类型2.5(除gas成本外,等同于EVM)
增加特定操作的gas成本可以缩短一些最困难的证明生成场景的证明时间。但是,这可能会破坏某些应用程序,并需要开发人员进行修改。
类型3(几乎等同于EVM)
类型3的zkEVM牺牲了一些EVM的功能,以简化应用程序开发和证明生成,例如对预编译、虚拟机内存、堆栈和智能合约代码的处理方式的更改。虽然大多数的以太坊应用程序都可以在这种环境下运行,但有些可能应用程序需要重写。
类型3项目:
类型4(等同于高级语言)
类型4的系统采用高级语言(如Solidity或Vyper)编写的代码,并将其编译成一种旨在支持零知识证明的语言。从本质上讲,它们等同于高级语言,但不是实际的EVM。这可以更快地生成证明并降低成本,尽管合约可能没有相同的地址。
类型4项目:
- zkSync 2.0
- Nethermind的Warp(一个从Solidity到Starkware语言Cairo的编译器,它将把StarkNet变成一个类型4系统)

结论
有限的交易和高昂的gas费用限制了以太坊和其他区块链成功扩展的能力。zkEVM将以太坊的经验及其现有的基础设施带入到高度可扩展和低成本的第二层rollup,同时通过生成链上证明来维护底层安全性。最终,通过结合零知识证明和以太坊虚拟机,zkEVM克服了之前的限制,并提供了实现广泛采用Web3所需的可扩展和安全的基础设施。
*本文由CoinTime整理编译,转载请注明来源。
所有评论