零知识以太坊虚拟机(zkEVM)是一项雄心勃勃、改变游戏规则的技术,可以在短期和长期内提高以太坊的可扩展性。今年,三个主要的以太坊扩展项目——zkSync、Polygon 和 Scroll——分别宣布了其 zkEVM 实现的重大发展,其中许多项目在今年的早期 alpha 阶段推出,而如今则作为自己独立的 L2 区块链运作。随着时间的推移,zkEVM 有可能直接从以太坊的基础层中操作。
作为背景,zkEVM 是可以执行与以太坊虚拟机(EVM)相同的高级编程语言或低级字节码的虚拟机,并使用零知识证明(ZKP)来证明这段代码。零知识证明是在不透露数据本身的任何信息,如其属性或内容的情况下验证数据的加密证明。早在 1982 年,计算机科学家 Goldwasser、Micali 和 Rackoff(Silvio Micali 是 Algorand 区块链的创始人)就将 ZKP 作为一个概念首次引入。ZKP 经常与同态加密相混淆,同态加密是密码学的另一个分支,允许对加密数据进行操作而不需要解密。同态加密方案于 1978 年由 Rivest、Adleman 和 Dertouzos 首次提出,并一直是实现云计算和存储的关键技术之一。值得注意的是,同态加密也被用于一些公共区块链协议,如隐私币 Grin,以混淆交易金额。
在过去的 40 年里,计算机科学家已经发明了几种安全有效地生成 ZKP 的算法,算法大致可分成两类:可扩展的透明知识论证(STARK)或简洁的非交互式知识论证(SNARK)。这些算法已被开发用于大量的用例,包括核裁军、身份认证系统,以及最近通过公共区块链和加密货币的出现实现区块链的可扩展性。具体到以太坊,许多开发者认为 ZKP 是扩展的“圣杯”,因为与验证交易数据的其他加密方案相比,ZKP 具有简洁和容易验证的特点。难以构建或破解但简单验证是加密协议开发者的共同目标,因为允许广泛和有效的分发。
对于零知识系统的所有好处,它们是出了名的难以归纳和应用于证明任意复杂度的代码。构建 ZKP 以原生支持和证明以太坊区块链上的所有类型的交易活动,在过去几年中一直是开发人员的一项持续研究计划。直到 2021 年 11 月,Starkware 才推出第一个通用的 ZK 系统,用于证明基于以太坊的交易。这是通过 Starkware 团队创建一个被称为 Cairo 的定制编程语言实现的。然而,最近,在 2022 年 7 月,三个不同的基于以太坊的 L2 协议——zkSync、Polygon 和 Scroll——宣布在利用 ZKP 扩展以太坊方面取得突破,其形式是 zkEVMs.
注:虽然俗称 zkEVM,但这些虚拟机并不利用 ZKP 的隐私优势,而完全受益于 ZKP 的安全和效率优势。因此,这些类型的虚拟机更准确的名称是有效性证明生成的 EVM,但为了本报告的目的,本文将继续使用其更流行的名称 zkEVM 来说明。
本报告旨在让读者熟悉 zkEVM 的一般概念,以及检查在以太坊上开发的各种实现。由于 zkEVM 是一个高级话题,本报告首先简要介绍了以太坊网络的现状,并通过介绍区块生产、 EVM 和 rollup 等核心概念,为理解 zkEVM 奠定了基础。然后,我们将总结以太坊上可能存在的不同类型的 zkEVM,并比较目前生产中的 5 种主要 zkEVM 实现方式。然后,我们将强调这一新生技术在实施中面临的挑战,以及我们对 zkEVM 在一段时间内的竞争格局的展望。总的来说,zkEVM 仍然处于以太坊发展和采用的早期阶段,尽管它们成为 L2 区块链和最终以太坊协议本身的首选扩展技术的潜力很大。
以太坊的现状
在深入了解 zkEVM 的复杂性之前,首先要高屋建瓴地了解以太坊上的交易是如何被纳入区块的。
区块链生产
当用户向以太坊提交新的交易时,连接到网络的计算机,也称为节点,将交易存储在一个称为 mempool 的本地数据结构中,负责维护一个未确认交易的列表。然后,操作节点并将 32 ETH 的增量作为抵押品押给网络的验证者被随机选中,将 mempool 中的交易批量化并处理成块。被选来向以太坊区块链添加新区块的验证者有时被称为“提议者”。一些提议者在构建区块时,会依靠第三方区块构建者,而不是他们的本地 mempool,以获得最大可提取价值(MEV)的额外奖励。关于 MEV 的更多信息,请阅读这份 Galaxy 研究报告。
区块是按顺序组织的,并通过父哈希值,即前一个区块的头哈希值连接在一起。每个区块都包含其父区块的前一个哈希值,将区块链在一起,形成区块链的数据结构。区块通过父哈希值的链接显示在下图中:
直到 2022 年 9 月 15 日,以太坊依靠工作证明(PoW)共识机制,矿工不是验证者,而是负责区块生产,矿工不是消耗大量资本,而是需要消耗大量电力来处理用户交易。关于 PoS 对以太坊的影响的全面分析,请在这里阅读 Galaxy 的 Merge 研究汇编。
谈到以太坊区块链在 PoW 和 PoS 共识协议下缺乏可扩展性,其根源在于区块空间有限的问题。区块空间在以太坊上是以 gas 为单位衡量的。需要更多计算努力才能执行的交易通常以较高的 gas 单位定价,而计算成本较低(即资源密集度较低)的交易的 gas 成本较低。gas 通过以太坊网络自动设置的动态gas 费率(称为基本费)转换成 ETH. 以太坊协议限制了区块,因此它们最多只能包含 3000 万单位的 gas. 这种最大的区块 gas 限制保留了快速的区块传播时间,并减少了链分裂的风险。关于以太坊的收费动态的更多信息,请阅读这份 Galaxy 研究报告。
以太坊虚拟机
一旦交易被包含在以太坊的区块中,这些交易就会通过一个被称为以太坊虚拟机(EVM)的自定义运行环境来执行。EVM 被设计用来在以太坊上部署任意复杂度的代码。这基本上是使以太坊成为通用区块链的原因,有时也被称为[图灵完备](https://en.wikipedia.org/wiki/Turing_completeness#:~:text=In colloquial usage%2C the terms,purpose computer or computer language.)系统。
EVM 执行事务的方式是有规则的。首先,EVM 将人类可读的编程语言如 Solidity 和 Yul 编译成面向机器的或“低级”的语言,称为 EVM 字节码。然后,EVM 将字节码解析成一系列被称为“操作码”的连续指令。每个操作码命令 EVM 执行一个不同的任务,在 EVM 字节码中以十六进制的形式表示。例如,当智能合约在链上执行时,命令 EVM 保持瞬时数据的操作码在记忆上表示为“MSTORE”,在十六进制形式中表示为“0×52”。为了帮助读者了解操作码的概念,以下是以太坊黄皮书中定义的简单操作码的快照:
多年来,以太坊的开发人员已经为 EVM 增加了新的操作代码。他们还增加了预编译,为用户提供了在网络上执行更高级操作的能力,如散列函数和标量乘法。作为同类的第一个运行环境,EVM 已被广泛采用,成为通用公共区块链上智能合约部署的标准。然而,作为同类的第一个技术,EVM 确实拥有设计上的局限性,其中与本报告最相关的是 EVM 与 ZKP 缺乏兼容性。
一路滚动
为了提高以太坊的可扩展性,有几个 L2 网络将交易执行从基础层抽象到 rollup. Rollup 压缩交易数据,使得向基础层提交一批交易所需的区块空间大大低于通过链上的 mempool 单独确认这些交易。相较于验证者或矿工,rollup 由被称为“排序者”的网络运营商操作。排序器负责验证 rollup 的状态转换。他们是将用户交易捆绑成一个 rollup 批次的实体,然后将这批交易的证明提交给以太坊的基础层。下面这张图说明了排序器在 rollup 中的作用:
关于以太坊二级生态系统的全面概述,请阅读这份 Galaxy 研究报告。
Rollup 不同于以太坊上的其他扩展解决方案,如等离子体和状态通道,在以太坊的历史过程中,核心开发人员对以太坊的可扩展性路线图进行了研究和废除。主要有两种类型的 rollup:optimistic 和零知识(ZK)。optimistic rollup 依赖于欺诈证明,这意味着对 L2 网络状态的改变被发布到以太坊,而不需要直接证明其有效性。只要至少有一个诚实的行为者在观察 optimistic rollup 的状态转换,无效的状态转换就可以被发现并取消。在 Arbitrum 和 Optimism 的情况下,可以提交欺诈证明的”挑战窗口"持续一个星期。一旦挑战窗口结束,optimistic rollup 的状态转换被认为是最终和有效的。
另一方面,ZK rollup 依靠 ZKP,每次在 L2 上处理一个交易批次时,ZKP 都会生成有效性证明并发布到以太坊。所有交易批次的有效性证明的自动生成增加了 ZK rollup 的安全保障。这也意味着每次新的有效性证明被提交到以太坊时,ZK rollup 的资金就可以被提取,而对于 optimistic rollup,通常有 7 天左右的等待期,以允许争议和欺诈证明的生成。ZK rollup 还提供比 optimistic rollup 更优越的数据压缩。下面的表格总结了 optimistic rollup 和 ZK rollup 之间的高层区别:
与 ZK rollup 相比, optimistic rollup 的主要优势在于, optimistic rollup 的虚拟机与 EVM 的虚拟机几乎相同。今天在以太坊上上线的 optimistic rollup 实现,如 Optimism 和 Arbitrum,模拟了与以太坊相同的交易执行环境,并分别被称为 OVM 和 AVM. 大多数 ZK rollup 是特定的应用,这意味着它们不支持所有类型的基于以太坊的交易和 DApp. Loopring、StarkEx rollups 和 zkSync 1.0 是特定应用的 ZK rollup 的例子,支持特定类型的支付、代币交换和/或 NFT 铸币。
某些 ZK rollup,如 StarkNet,是通用的,意味着它们支持所有类型的交易和 dapp. 然而,这些 ZK rollup 需要 dapp 开发者学习如何在一个新的自定义执行环境中执行他们的智能合约代码,该环境为生成 ZKP 而优化,而不是 EVM 兼容性。鉴于现有的去中心化应用程序和用户难以加入到新的执行环境中,这对以太坊上的 ZK rollup 的采用提出了挑战。为了克服这个问题,ZK rollup 项目,如 Polygon Hermez、zkSync 和 Scroll 正在研究 ZK rollup,以实现与 EVM 的兼容,EVM 是以太坊上所有智能合约代码的原生执行环境。
STARK、SNARK、volitions 和 validiums
在实践中,rollup 不仅由链上发布的证明类型来区分(optimistic rollup的欺诈证明或 ZK rollup 的有效性证明),而且由 rollup 的数据可用性策略和证明算法来区分。
正如本报告前面提到的,有两大类有效性证明,称为 SNARK 和 STARK.
SNARK 依靠椭圆曲线加密技术,这是一种在比特币和以太坊中最普遍使用的数据加密技术。SNARK 通常也依赖于一个受信任的设置,这意味着该算法需要由一个受信任的实体事先生成一段数据。可信设置仪式不是一个重复的事件,而是一个一次性的程序,由一个人或一群人生成核心数据。这个数据被称为共同参考字符串(CRS),它是一个值,然后被用于 zk-SNARK 算法,以生成可信的证明。如果生成 CRS 所需的输入被破坏,这可能导致错误的证明生成。因此,重要的是,用于生成 CRS/SRS 的输入被所有仪式参与者销毁,或者在仪式结束后变得不可恢复。基于 SNARK 的算法的一些例子包括 Sonic、Plonk、Redshift 和 Marlin.
STARK 不依赖于椭圆曲线或可信设置。STARKS 依靠哈希函数,一些开发者认为这是抗量子密码学的优势。然而,STARK 更加复杂,需要更多的计算资源来运行。它们也是在 2018 年比 SNARK 晚推出的,而 SNARK 自 2012 年以来一直存在。由于这些原因,SNARK 作为一种证明算法比STARKs使用得更广泛。基于 STARK 的算法的一些例子包括 Fractal、SuperSonic、Fri-STARKs 和 genSTARK.
除了生成有效性证明的不同方法外,ZK rollup 还可以通过其数据可用性策略而有所不同,这意味着它们对交易批次的哪些部分最终被发布到链上的策略。无论是 optimistic rollup 还是 ZK rollup,每次处理一批交易时,通常会向主网以太坊提交三块数据。首先,滚动的验证者将向以太坊提交新网络状态的根哈希值(状态是指 L2 上交易和账户余额的更新记录)。状态被记录在一个 Merkle tree 数据结构中,如下图所示:
根哈希是整个 Merkle tree 的加密承诺,有时被称为状态承诺。并不要求所有的 ZK rollup 向以太坊提交根哈希值,但为了方便使用以太坊上发布的数据重建和验证 rollup 上执行的交易,他们通常会这样做。
高级根哈希值除了确认第二层区块链的新状态外,还在以太坊上记录了一个加密证明。这个证明可以是 ZKP,或者在 optimistic rollup 的情况下是一个欺诈证明。它可以通过 STARK 或 SNARK 算法生成。最后,除了这两个数据之外,ZK rollup 还向以太坊发布了一个压缩版的分批交易,也称为状态 delta. 状态 delta 是一种具有成本效益的方式,将大量的交易数据提交给以太坊,这是 ZK rollup 所特有的。Optimistic rollup 代替了状态三角洲,使用其他数据压缩技术来批量交易并在链上提交。
(作为一个附带说明,某些 ZK rollup 项目,如 Scroll 团队,实际上并不依赖于向以太坊发布状态 delta 的额外数据压缩收益。在 Scroll 开发者的心目中,即将到来的代码修改,如 Ethereum Improvement Proposal 4844 和 danksharding 将大大降低向以太坊提交交易数据的成本,以至于相对于其他数据压缩技巧,状态延迟的效率提升可以忽略不计。)
使用 Merkle tree 最低层的数据,也就是树上的叶子,并将其与 Merkle tree 最高层的根部哈希值相结合,任何人都可以重建和验证在链上提交的交易批次的内容。大多数滚动的一个决定性特征是能够使用在链上提交给以太坊的数据重新创建在第二层网络上执行的交易。然而,某些 rollup 避免向以太坊提交状态 delta 或其他压缩的交易数据,而是将数据发布到其他地方,以减少运营成本并提高网络可扩展性。某些开发者会认为,避免向以太坊提交交易数据,从而破坏交易重建的保证的Layer 2 网络不应该被归类为 rollup.
Rollup 处理状态 delta 的方式决定了网络是否可以被归类为有效的或自愿的。
Validium 最好理解为只在链上提交有效性证明和根哈希,而在链外的独立网络上存储状态 delta 的 rollup. 这在理论上增加了 rollup 的交易吞吐量至 9000 TPS,因为 rollup 不再依赖以太坊的数据可用性和受网络的块空间限制。Validium 的缺点是安全性。发布链外数据的独立网络并没有继承与以太坊相同的安全保障。
Volition 将在链外或链上发布状态 delta 的决定权交给了用户。它们首先是由以太坊扩展创业公司 Starkware 开创的。这是一种新颖的方式,让用户决定他们的交易是否需要通过直接在链上确认到以太坊或到链外网络(如 Starkware 的可信数据可用性委员会 DAC)来加强安全,也许成本更高。
EVM 等效性的 4 个主要层
给出上述理解以太坊上的交易执行、EVM 和 ZK rollup 的框架,我们现在可以讨论 zkEVM. zkEVM 是 ZK rollup 的一种类型,模拟与主网以太坊相同的交易执行环境。zkEVM 的实施在其证明算法以及数据可用性策略方面有所不同。zkEVM 在其 EVM 等价水平方面也有所不同。有四个主要的 EVM 等价水平。以下是对不同级别的高层次总结:
语言层面的等效性
为了实现语言层面的 EVM 等效性,zkEVM 必须能够理解和原生编译 EVM 友好语言。换句话说,这些类型的 zkEVM 可以将 EVM 友好的编程语言(如 Solidity 或 Yul)翻译成为生成 ZKP 而优化的定制语言。这被认为是在 ZK rollup 内实现 EVM 兼容性的最简单和最有效的方法之一。然而,这些类型的 zkEVM 在为用户和智能合约开发者提供与 EVM 互动的体验方面是最有限的。
与 EVM 的语言级兼容性意味着通过编译器运行 Solidity,该编译器将 EVM 的高级编程语言翻译成定制的低级语言,可由为生产 ZKP 设计的虚拟机解释。对于以太坊上的大多数用户和智能合约开发者来说,他们只关心通过 Solidity 代码与 EVM 的互动,只要通过 zkEVM 可以执行与以太坊主网相同类型的代码,zkEVM 的底层行为可能并不重要。另一方面,为 EVM 构建的复杂的开发者工具、框架和测试环境可能需要修改,以便在只有语言级 EVM 兼容性的 zkEVM 上使用。
字节码层面的等价性
EVM 等效性的第二和第三层级是字节码级,这要求 ZK rollup 能够解释从高级语言(如 Solidity 或 Yul)编译下来的 EVM 字节码。能够模仿 EVM 的同一高级编程语言和低级字节码的 zkEVM 实现了与 EVM 更深层次的兼容。这些类型的 zkEVM 的构建更为复杂,因为它们需要更先进的工程。
正如本报告前面所讨论的,EVM 字节码被虚拟机执行的方式是通过一个特定的指令列表,称为操作码。每个操作码命令 EVM 执行一个不同的任务。兼容字节码的 zkEVM 的目标是创建一个能够证明 EVM 字节码的 ZK 系统,并通过字节码包含的各种操作码进行解析。这些类型的 zkEVM 的优势在于它们与基于 EVM 的应用程序和工具的兼容性。一个完全兼容字节码的 zkEVM 将能够支持与基于以太坊的本地应用程序相同的调试工具和开发人员基础设施。然而,实现完全字节码兼容往往会产生负面的结果,即创建一个低效和昂贵的 ZK 系统。为了降低成本和提高效率,部分字节码兼容的 zkEVM 可能会删除 EVM 的某些功能,如使用 ZK 数学和密码学更难证明的预编译。
目前,有两个字节码兼容的 zkEVM:Polygon zkEVM 和 Scroll zkEVM. 在本报告的后面,我们将更详细地讨论这两者。在他们目前的设计中,这两个实现只与 EVM 字节码部分兼容。然而,随着时间的推移,这些实现正在努力实现完全兼容。
共识层面的等效性
第四也是最后一级的 EVM 等效性是在共识层面。这是 ZK rollup 能够达到的对 EVM 的最高本地兼容性。它有时被称为“奉行 rollup”,尽管并非所有奉行 rollup 都需要基于 ZK,而是可以是 optimistic rollup. 这个想法是,由 zkEVM 生成的加密证明不需要以任何方式在以太坊上重新执行。这些证明本身可以用来验证主网以太坊上产生的区块。从某种意义上说,实现共识级别兼容的 zkEVM 是 zkEVM 的最真实形式。
在一些开发者看来,能够实现共识级别兼容的 ZK rollup 是唯一一种应该被称为 zkEVM 的 ZK rollup,而其他具有语言和字节码兼容性的 ZK rollup 应该分别被视为 EVM 兼容和 EVM 等效,但不是 zkEVM. 对于 zkEVM 的精确定义和它们不同程度的 EVM 等同性,以太坊开发者之间存在着大量的争议。事实上, EVM 等价性是一个频谱,上面描述的每一个级别都不是僵硬的分类。zkEVM 开发的早期性质意味着,为语言级兼容性而构建的项目也可能提供某种类型的字节码级兼容性,而字节码级兼容的 zkEVM 最终可能发展为具有来量共识级等效的混合 rollup.
在本报告的下一节,我们将深入研究目前在以太坊上生产的五个 zkEVM 实施方案。
以太坊上的 zkEVM 项目概述
目前,没有一个接近生产就绪的 zkEVM 实现可以实现共识级别的兼容性。这是一个正在进行的研究和开发领域,被以太坊核心开发人员描述为“多年的工程努力”。然而,有一些实现在语言和字节码层面上实现了等价,这仍然为以太坊上目前的 ZK rollup L2 层生态系统提供了改进,该系统主要以应用为重点。构建一个 ZK rollup 来执行一般的智能合约和用户交易,而不是以应用为重点的交易,这是一项艰巨的任务,到目前为止,只有少数几个项目在主网上成功推出。
以下是以太坊上的五个 zkEVM 项目的高级概述:
zkSync 2.0
Matter Lab 是一个区块链工程团队,成立于 2018 年 12 月。该团队于 2020 年 6 月在以太坊上推出了他们自己的 ZK rollup 协议,称为 zkSync。zkSync 是以太坊上按总价值锁定的第六大 L2 网络,支持有限的智能合约操作,包括 ETH、ERC20 代币和原生 NFT 的低 gas 转移,以及原子互换和限价订单。该公司最近通过 Andreessen Horowitz 领导的 B 轮融资筹集了 5000 万美元,并宣布了一个 2 亿美元的财政基金,专门用于在未来几年扩大 zkSync 的生态系统。
zkSync 2.0 是一个语言级兼容的 zkEVM,旨在支持所有类型的智能合约操作。zkSync 2.0 依赖于一个基于 SNARK 的证明算法,称为 UltraPLONK. 它还依赖于被称为 LLVM 的开源编译器基础设施,将 Solidity 和其他类型的编程语言编译成 zkEVM 字节码。该项目于 2022 年 10 月启动了“baby alpha”阶段,预计将于 2022 年底向外部用户全面开放,尽管 Matter Labs 团队仍未披露关于 zkSync 2.0 上证明生成的全部细节(由于 L2 网络之间的激烈竞争,以及由于 rollup 技术的初创性造成了更大的技术风险,大多数 rollup 项目都是在高度保密的情况下运作的,并不认同开放源代码的开发过程)。一旦推出,zkSync 2.0 将是一个 volition,让用户可以选择在链外将其交易的状态 delta 发布到一个被称为 zkPorter 的独立协议,而不是在链上发布到以太坊。这一策略理论上会将 zkSync 2.0 的每秒交易吞吐量从 2000 TPS 提高到超过 20000 TPS.
StarkNet
和 zkSync 一样,StarkNet 是一个通用的 ZK rollup,已经在以太坊上运行,由 Starkware 团队建立。Starknet 的交易执行环境被称为 StarkNet OS,其本地智能合约编程语言被称为 Cairo. 与其他 ZK rollup 相比,Starknet 是功能最全面的一个。StarkNet 为用户提供了一个可选的链外数据解决方案(使 rolllup 成为一种意愿),以实现比非 volition 型 rollup 低得多的交易费用。StarkNet 操作系统依靠的是基于 STARK 的证明算法。与 zkSync 2.0 一样,StarkNet OS 上生成证明的过程没有开源。与 zkSync 等竞争对手类似,随着时间的推移,将围绕证明生成的细节开源,以便任何人都可以连接到网络,运行专门的硬件,并通过生成证明获得奖励,这是 rollup 积的长期发展路线图的一部分。
StarkNet 并不支持与 EVM 的语言级兼容。然而,有一个名为 Warp 的 Solidity 到 Cairo 语言编译器正在由以太坊执行层软件客户端 Nethermind 背后的团队积极构建。使用 Warp 编译器,StarkNet 用户可以部署基于以太坊的智能合约,而不必在 Cairo 中重写他们的代码。此外,还有一个名为 Kakarot 的社区驱动的项目,建立另一个 Solidity 到 Cairo 语言的编译器,以帮助支持 StarkNet 与 EVM 的兼容性。
Starkware 团队在 7 月公布了他们推出本地 StarkNet 代币和新基金会的计划。该代币的拟议分配成为争议的来源,因为它被披露最初 100 亿供应量的三分之一将分配给 StarkNet 的核心贡献者。今年,Starkware 作为一家公司以 80 亿美元的估值融资 1 亿美元。该轮融资由投资公司 Greenoaks Capital、Coatue 和 Tiger Global 牵头。除了 StarkNet 之外,StarkWare 还为用户提供了一个可定制的区块链可扩展性解决方案,即 StarkEx,它利用了该公司基于 STARK 的新颖 ZK 技术。与 StarkNet 不同,StarkEx 是一个以应用为中心的 ZK rollup. 一些值得注意的 DeFi 应用程序使用 StarkEx 在以太坊上获得更大的可扩展性,包括 soRare、Immutable 和 DeversiFi.
Polygon zkEVM
由 Polygon 团队构建的 zkEVM 实现,以前被称为 Matic Network,实现了与 EVM 的字节码级兼容。Polygon 的 zkEVM 预计将在 2023 年初的某个时候在以太坊上推出,并在最近向公众开放资源供其审查。(值得注意的是,虽然代码可以公开查看,但不能使用、修改或分享,因为它没有在开源代码许可证下发布)。Polygon 的 zkEVM 实现依赖于基于 SNARK 和 STARK 的证明。具体来说,zk-SNARK 被用来证明 zk-STARK 的正确性。这样做的好处是可以利用与 zk-STARK 相关的快速证明时间,以及生成 zk-SNARK 所需的相对较少的计算资源。关于数据可用性的问题,Polygon 的 zkEVM 实施将不会立即支持链外数据解决方案。然而,Polygon 正在积极努力,通过开发 Polygon Avail,使他们的zkEVM实施成为一种 volition.
Polygon 成立于 2017 年,是一家主要专注于以太坊的不同扩展解决方案的公司。它在 2020 年 6 月推出了一个基于股权证明的以太坊侧链,称为 Polygon PoS. 那时起,Polygon 的产品套件已经大幅增长和多样化。除了该公司的 zkEVM 实现,它还在积极开发其他两个 ZK rollup 实现,即 Polygon Miden 和 Polygon Zero,以及一个混合 rollup 实现,将 optimistic rollup 和 ZK rollup 结合起来,称为 Polygon Nightfall. 今年早些时候,Polygon 团队完成了他们自首次发行 MATIC 代币以来的第一轮主要融资,并从 40 家风险投资公司筹集了 4.5 亿美元。该轮融资由红杉资本印度公司牵头。
Scroll
Scroll 是另一个字节码级别兼容的 zkEVM 实现。Scroll 由 Sandy Peng、Ye Zhang 和 Haichen Shen 于 2021 年创立,他们在 2022 年宣布为白名单用户推出了他们的 pre-alpha 版本测试网。值得注意的是,围绕他们的 zkEVM 实现的所有代码都是公开的,并以开源许可的方式发布。Scroll 将依靠一种基于 SNARK 的证明算法,不支持链外数据可用性解决方案。此外,Scroll 团队正在设计一个去中心化的证明生成市场,以支持其 zkEVM. 为此,他们还专注于建立专门的硬件,可以由世界各地的用户运行,以无许可和抗审查的方式生成ZKP.
Scroll 团队与以太坊基金会的扩展解决方案研发团队密切合作,该团队被称为隐私扩展以太坊(PSE)团队。PSE 在 zkEVM 方面的工作将在本报告的下一节中讨论。与其他团队如 zkSync、StarkWare 和 Polygon 相比,Scroll 的规模较小,而且更注重研究(即不太面向商业)。他们也只专注于他们的 zkEVM 实现,而其他竞争团队则有一套其他与 ZK 相关的产品和服务。Scroll 在今年的 A 轮融资中筹集了 3000 万美元,来自包括 Polychain Capital 和 Bain Capital Crypto 在内的领先加密货币风险投资公司,以及包括 Ethereum Foundation 的 Ying Tong 和 Carlos Aria 在内的几个天使投资者。
隐私与扩展探索(PSE)
PSE 是以太坊基金会的一个研究部门,专注于探索 ZKP 的前沿研究及其在以太坊的应用。他们以前被称为“AppliedZKP”小组。与本报告中强调的其他 zkEVM 实现相比,PSE 的 zkEVM 并不专注于在不久的将来成为生产就绪(PSE 研究的生产就绪组件正在由 Scroll 团队实施)。PSE 正在研究的 zkEVM 专注于根据一个奉行 rollup 模型实现与 EVM 的共识级兼容性。
PSE 研究中使用的证明算法是被称为 Halo2 的 zk-SNARK,它是由 Zcash(ZEC)加密货币的核心开发团队 Electric Coin Company 开发的。由 PSE 团队构建的 zkEVM 的开发是开源的,任何人都可以参与。除了 zkEVM,PSE 团队还在推进其他几个项目,包括防混淆去中心化应用基础设施的研究,增强用户交易的隐私,以及替代的加密签名方案。关于 PSE 正在进行的项目的完整列表,请点击这里。
构建 zkEVM 的挑战
在以太坊上构建生产就绪的 zkEVM 实施方案时,有几个持续的挑战。实施像 zkEVM 这样的新技术是未经证实和测试的,分散 zkEVM 的操作,以及建立专门的硬件来生产 zkEVM 证明,这些都是开发者面临的障碍。本节对这些挑战做了一些深入的分析。
Novelty
zkEVM 是以太坊上的一个新概念,2022 年才开始认真工作。这项技术的一个简单挑战是它在规模上未经证实和测试的性质。大多数 zkEVM 实现之间在证明的产生方式、产生证明的硬件要求以及围绕分散排序器的细节方面仍然存在大量的秘密。对于像 Scroll、Polygon、StarkNet 和 zkSync 这样的团队来说,建立对 zkEVM 作为一个可靠的可扩展性解决方案的信任是一个重要的关注领域。
去中心化挑战
围绕 zkEVM 的运营去中心化的问题广泛适用于所有的 rollup(包括 optimistic rollup),因为有效性和欺诈证明的生成都严重依赖于中心化的排序器。如上所述,定序者是负责对用户交易进行批处理并将这些批处理的证明提交给以太坊 L1 的 L2 利益相关者。
目前在以太坊上运行的每个 rollup 都是由一个中心化的排序器操作的,并依赖于由一个实体管理的可升级的智能合约。今天,rollup 的中心化性质的一个主要原因是由于技术的新生,以及在代码中出现意外错误时需要快速修复。此外,特别是 zkEVM 背后的技术还在不断变化,因此很难自信地激励用户在他们自己的设备上运行这种新生技术。去中心化测序器的 rollup 通常意味着推出一个代币,并充实一个共识协议,以无权限的方式组织多个测序器和证明者。虽然推出代币和创建共识协议的挑战对公共区块链来说并不新鲜,但它们需要时间和相当多的考虑才能负责任地推出。StarkWare 宣布的代币计划由于设计和最初的供应分配而引起了争议,而 Polygon 在推出他们的 zkEVM 后,预计将修改其现有的 MATIC 代币的代币学。zkSync 也预计将在未来几个月为他们的 rollup 推出专用代币,而 Scroll 推出代币的计划仍不清楚。
在 zkEVM 去中心化的背景下,重要的第一步是开放项目软件,在写这篇文章的时候,很少有人做到这一点。当涉及到 zkEVM 操作的去中心化时,能够依靠大量预先存在的用户社区的 zkEVM 实现可能会有优势。
zkEVM 硬件挑战
虽然 zkEVM 证明的验证是微不足道的,但它们的生成是计算密集型的,部分原因是 ZKP 背后的数学依赖于线性计算序列。这使得在机器上生成证明的工作难以并行化。最近,随着递归证明的使用,在这方面取得了进展。递归证明是一种减少证明生成延迟的技术。它指的是重复生成一个证明的证明,以进一步压缩交易,从而使在 ZK-rollup 上并行处理小批量的交易成为可能。这是 StarkNet VM 和 Polygon 的 zkEVM 用来生成有效性证明的技术。
由于生成 ZKP 所需计算的密集性质,zkEVM 可能必须依靠先进的硬件,如图形处理单元(GPU)、现场可编程门阵列(FPGA),甚至特定应用集成电路(ASIC)。需要专门的硬件来运行证明生成的必要计算,这与需要专门的硬件在工作证明(PoW)共识协议下有效挖掘区块并无不同。这两个硬件行业发展的不同之处在于证明者与矿工的选择过程。
证明者是负责生成有效性证明的网络利益相关者。另一方面,排序者负责将用户交易排序和打包成批,并将数据提交给第一层区块链。从技术上讲,排序者和证明者的职责可以合并为一个角色。然而,由于证明生成和交易排序都需要高度专业化的技能才能很好地执行,分割这些职责可以防止在 rollup 功能中出现不必要的集中。
如果证明者和排序者的选择过程与矿工的选择过程一样,即依靠实现中本聪的共识并奖励拥有最有效硬件的参与者,那么ZKP“挖矿”行业就有可能沿着与比特币的 PoW 挖矿行业相同的轨迹发展。然而,有几个原因表明,具体的证明人选择过程更有可能是一个类似于股权证明(PoS)设计的确定性过程,而不是中本聪式的 PoW 共识。
首先,对证明者使用中本聪式的选择过程意味着拥有最高效硬件的证明者将主导证明市场。为了避免证明者市场的垄断,以及证明者的重复用电,像 Scroll 这样的项目正在研究证明者选择的替代设计,要求证明者用资产作抵押,这与以太坊验证者被要求用 32 ETH 的余额作抵押的方式不一样。赌注模式的实施确保了验证者在游戏中的地位,可以对破坏网络安全和有效性的行为进行惩罚,例如未能为指定的交易批次计算出有效性证明。重要的是,奖励和惩罚证明者的激励措施与在 ZK rollup 上选择排序者的模式相平衡,以便网络利益相关者有足够的参与来履行这两项责任。
确定性地选举证明人生成证明而不是让所有证明人在竞争中生成证明的另一个好处是可能增加交易吞吐量和网络可扩展性。选举证明人意味着几个人可以并行地为不同批次的交易生成证明,而不是所有证明人都为同一批交易生成证明。然而,依赖于某种形式的质押和 slashing 的领导者选举系统的一个弱点是复杂性。与中本聪式的 PoW 系统相比,PoS 系统依靠更复杂的检查和平衡设计来保持参与者的诚实。例如,中本聪式的共识通常只要求参与者,也就是矿工,生成他们工作的证明以获得奖励。确定性的 PoS 系统可以要求参与者(通常称为验证者)做更多的事情,例如存入资产、委托资产、对交易和区块进行投票、提出区块,以及监督其他验证者的行为。
大多数 zkEVM 可能会试图通过选择一个无权限的证明者选择过程,即确定性的(基于分配)而不是概率性的(基于竞争),来尽量减少他们的滚动的电力使用。以太坊联合创始人 Vitalik Buterin 估计,在 PoW 共识协议下,计算 zkEVM 的有效性证明将需要不到 1% 的电力用于开采乙醚。zkEVM 设计者的目标是尽可能地减少证明时间,同时也让尽可能多的用户能够经济地使用证明生成。实现共识级兼容的 zkEVM 的要求之一是将证明生成时间减少到与以太坊第一层区块时间相当(平均 13.5秒)。
只有当 zkEVM 背后的规范变得清晰和标准化时,ZKP 硬件制造商才能认真地成长和成熟。最后,预测有效性证明计算行业的用电情况仍然是困难的,直到 rollup 公司采用并实施无许可选择证明者和排序者的模式。
对 zkEVM 竞争的展望
在短期内,zkEVM 正在竞争成为第一个在主网上推出的产品。然而,从长远来看,它们将在 EVM 的兼容性(从语言到共识水平)和虚拟机效率方面进行竞争。一旦启用 zkEVM 的技术得到更广泛的测试、使用和理解,很可能 zkEVM 也将不得不与 optimistic rollup 和其他二级可扩展性解决方案竞争,以获得用户的采用。
先发和后发优势
zkSync、Polygon 和 Scroll 团队的 zkEVM 实现正在争先恐后地在主网上推出。在主网上率先推出的优势在于,在吸引应用开发者方面,比其他 zkEVM 实现者更有优势。鉴于 rollup 之间的互操作性和应用程序的兼容性是困难的,这可能是一个特别重要的领先优势。Dapp 的可组合性是指像积木一样在 Dapp 之上构建 Dapp 的能力,是以太坊的去中心化金融(DeFi)生态系统的一个特别重要的特征,使 Dapp 开发者更有可能倾向于已经拥有最多采用量的 L1 或 L2.
另一方面,由于 zkEVM 作为一种技术的新颖性,第一批推出的 zkEVM 实现不太可能是对以太坊 dapp开发者最优化的。正如本报告所述,在字节码层面和共识层面与 EVM 完全兼容的 zkEVM 实现还没有准备好投入生产。能够更原生地支持以太坊 dapp 部署的 zkEVM 实现可能不会首先推出,而是具有与 EVM 更等效的后发优势。等同程度越深,开发者对 zkEVM 的入职体验越容易。换句话说,自 2015 年以来,EVM 一直是主要 dapp 的执行环境,从 EVM 转移过来的工具越多,对 zkEVM 的 dapp 开发者来说就越好。
通过 EVM 等价吸引 dapp 开发者是 zkEVM 实现之间的第一个明显的竞争领域,虽然 dapp 开发者采用的先发优势很强,但该技术是如此的新生,以至于在建立一个生产就绪的 zkEVM 时,仍有大幅迭代和改进的空间。归根结底,这个游戏类似于创新者的困境——是做第一个并试图建立分销和社区,还是做第二个并以更好的功能推翻第一个推动者?
虚拟机设计
随着时间的推移,zkEVM 的其他竞争和改进领域之一是效率。正如所讨论的,EVM 并没有针对 ZK 系统进行优化,建立一个通用的 ZK rollup,可以证明基于以太坊的智能合约和 DApp,这需要大量的开销。其他为 SNARK 或 STARK 证明优化的虚拟机设计有可能使 EVM 的兼容性随着时间的推移而变得不那么理想,Starkware 的团队强烈持有这一观点。将 Solidity 编译为 Cairo 的 Warp 工具以及其他类似的工具都是由社区驱动的,因为 StarkWare 的内部团队只专注于使 StarkNet 的虚拟机尽可能高效,而不是简单的 EVM 兼容。
在以太坊上,值得注意的是,EVM(以及相关的 Solidity)不能在不破坏向后的应用程序兼容性的情况下进行重大改变或升级。自 EVM 在 2015 年发布以来,开发人员对 EVM 及其高级编程语言 Solidity 进行了修补,以改善可用性和安全性的小方法。例如,在 2019 年以太坊的伊斯坦布尔硬分叉升级期间,核心开发人员为 EVM 添加了一个名为“CHAINID”的新操作码,它将返回典型链的唯一识别号。这是为了防止升级后的节点连接到未升级的节点,允许节点检查CHAINID,这是一个特别有用的升级,有助于防止“重放攻击”,在这种情况下,恶意行为者可以利用不良节点发现。
以太坊核心开发人员一直坚称,在以太坊的发展路线图中,对 EVM 的进一步修改仍将到来。新的操作码和预编译可能会继续被添加到 EVM 中,这表明现有的 zkEVM 实现必须灵活适应 EVM 的变化。然而,即使有了这些改进,Mina、Sui 和 Aptos 等其他第 1 层区块链仍有机会尝试不同的虚拟机设计和智能合约语言设计,从长远来看,这可能会使 EVM 过时。
Optimistic rollup 过渡到 ZK rollup
最后,本报告中讨论的五个 zkEVM 实施方案击败了 Optimism 或 Arbitrum 等 optimistic rollup,这并不是一个必然的结论。在技术层面上,ZK rollup 比 optimistic rollup 更安全、更有效,并且有可能更有成本效益。然而,它们在证明为 EVM 设计的一般计算方面的灵活性还没有经过测试和广泛的规模部署。一旦 zkEVM 被推出,并且其背后的技术更加成熟和强大,那么由欺诈驱动的 optimistic rollup(如 Optimism 和 Arbitrum)就有可能升级并过渡到生成有效性证明。此外,混合 rollup 和多验证器系统,使用欺诈证明优化验证用户交易,并间歇性地发布有效性证明,随着 zkEVM 背后技术成熟,逐渐加快有效性证明的生成时间,这是一个活跃的研究领域,今天,像 Vitalik Buterin 这样的以太坊核心开发者和 Kelvin Fichter 这样的 L2 开发者正在认真地讨论。
已经在以太坊上推出的 rollup 具有预先存在的用户群的优势,理论上可以很容易地移植到新的升级版本的 rollup 上,类似于 Arbitrum Nitro 在 2022 年推出的方式。这种可能性可能是 zkEVM 背后的团队(不包括 Scroll)对完全开放他们项目的代码犹豫不决的原因之一,直到他们的 rollup 已经建立了相当大的用户群,与其他预先存在的 rollup 的网络护城河竞争。随着时间的推移,optimistic rollup 到 ZK rollup 的可升级性表明,zkEVM 的实现不仅在彼此之间竞争,而且在更广泛的以太坊 L2 生态的背景下竞争。
结论
行业最近对 zkEVM的兴趣大增,引发了一些关于以太坊可扩展性路线图的终局问题。在最真实的意义上,zkEVM(与 EVM 的共识水平兼容的 ZK rollup)代表了对 EVM 主导地位的长期押注,并通过关联,将以太坊作为智能合约执行的主要平台。zkEVM 也是对以太坊可扩展性路线图的长期质押,因为它以 rollup 和交易执行的抽象化为中心,而不是与共识和数据可用性相联系。
尽管今年宣布了几个接近生产的 zkEVM,但该技术仍处于极其初级的阶段。实现与 EVM 的共识级兼容的 zkEVM 仍然是一项研究计划,可能需要几年时间才能投入生产。然而,就在一年前,实现与 EVM 的字节码级兼容性的 zkEVM 也是如此。Polygon、zkSync、StarkWare 和 Scroll 对 zkEVM 实现的快速开发,继续推动着计算机科学和数学的发展,并打破了人们的预期。Polygon zkEVM 和 zkSync 2.0 在以太坊主网上的推出,将成为用真实用户和应用程序活动测试 zkEVM 的重要起点。
两个生产就绪的 zkEVM 的可用性和可扩展性可能不仅会扰乱 zkEVM 协议的竞争格局,也会扰乱 optimistic rollup 和替代 L1 区块链的竞争格局。如果 zkEVM 获得成功,optimistic rollup 将不得不转换为 ZK rollup 设计,以保持长期的竞争力。替代的 L1 区块链也将不得不在其虚拟机设计上进行创新,以与可扩展的 EVM 竞争。关于 ZKP 在以太坊上的准备情况和适用性,还有很多东西需要证明,而推出生产就绪的 zkEVM 应该被认为只是这种新技术的竞争格局的开始。
zkEVM 继续关注和发展的几个领域包括其硬件设计和代币经济。生成 ZKP 的硬件环境和哪家公司能成功实现证明生成的去中心化,都还有待观察。这在很大程度上将取决于各个团队的社区建设,以及任何这些推出的产品能够在多大程度上成功地引发大规模的 dapp 迁移,尤其是 DeFi 的 dapp 迁移到其网络上。这些领域的发展将需要时间和迭代来完成。然而,鉴于 zkEVM 试图在以太坊上完成的先进性,以及它们对公共区块链未来广泛的潜在影响,以太坊的利益相关者、研究人员、密码学家和学术界都将密切关注这一进展。