五大常见的 zkEVM 类型及其项目进展
ZK Rollup作为一种以太坊的扩容方式,它允许交易在链下进行处理,并在主链上以单个压缩交易的形式合并。这个过程提高了交易吞吐量,降低了交易成本,通过零知识证明而保证状态的有效性,提高主链的隐私性和安全性。因此,ZK Rollup被认为是以太坊扩容的终极解决方案。
但目前零知识证明生成需要较大的算力,技术难度也更高,同时由于以太坊虚拟机(EVM)不设计支持 ZK 电路,无法直接执行智能合约。为了解决这个问题,许多开发者尝试开发zkEVM,它可以以与零知识证明计算兼容的方式运行智能合约。对于许多ZK Rollup来说,实现EVM等价意味着实现了完整的字节码级兼容性,目前来看,zkEVM是以太坊扩容的关键。
本文将研究五种常见的zkEVM类型及各类型项目进展,并指出各类型zkEVM 在设计上的挑战。
什么是zkEVM
zkEVM 是一个支持零知识证明计算的 EVM 兼容的虚拟机,它是一种基于以太坊区块链技术的应用程序开发平台。可以将EVM合约在无需修改的情况下直接部署运行,同时程序的运行可以通过零知识证明其计算的有效性。
zkEVM的优势
1.zkEVM提高兼容性。zkEVM与为在 EVM 中运行而编写的智能合约高度兼容,可以与 EVM 基础设施无缝集成,开发者无需重新开发应用就可以将现有的以太坊应用程序迁移到 L2上,同时zk proof继承了以太坊网络安全性。
2.zkEVM增强可扩展性。zkEVM 使用的是非交互式证明,提高了吞吐量,减少了延迟,因为验证 L2 区块的证明比重新执行新提议的区块中的每个交易更快。
3.zkEVM降低存储成本。zkEVM Rollup可以选择只在以太坊 L1 上发布对其最终状态的承诺,从而减少链上存储成本。有效性证明保证了 zkEVM 新状态的正确性,因此排序器不必发布重新执行状态转换更改所需的所有数据。
正是随着对zkEVM的不断改进,ZK Rollup的限制得到解决,利用ZK Rollup的安全性和效率,加之EVM的兼容性,应用程序可以与智能合约进行交互,改进应用程序体验。
五种不同类型的zkEVM及相关项目
EVM 在设计之初,并未考虑到要支持零知识证明,这使得构建 EVM 兼容的zk虚拟机变得困难,不过伴随着研究进展,EVM 的计算可以包裹到零知识证明中,不同的 zkEVM 项目采用不同的方法将 EVM 执行与零知识证明计算相结合。
以太坊创始人Vitalik Buterin也曾发文解释了不同类型的zkEVM 之间的权衡,V神认为这些项目的核心目标都是相同的:使用ZK-SNARK技术为类似以太坊交易的执行提供加密证明,以便更容易验证以太坊链本身或构建相当于以太坊提供的ZK Rollups,但比以太坊更具可扩展性。
Type 1(共识级等价——完全等同于以太坊)
Type 1 zkEVM 力求完全和以太坊等效。它不会更改以太坊系统的任何部分以使其更容易生成证明,不会取代哈希、状态树、交易树、预编译或任何其他共识逻辑。
Type 1 zkEVM 的优点是完美兼容以太坊。从长远来看,在 Type 2 或 Type 3 ZK-EVM 中测试的对以太坊的修改可能会引入以太坊本身,但这种重新架构有其自身的复杂性,因此,Type 1 是最终需要使以太坊L1本身更具可扩展性的东西。同时,Type 1 zkEVM 也是 rollup 的理想选择,因为它们允许 rollup 重用大量基础设施。
Type 1 zkEVM 的缺点是验证时间问题。以太坊最初并不是围绕 ZK 友好性设计,因此以太坊协议的许多部分需要大量计算才能执行ZK 证明。Type 1 zkEVM 旨在精确复制以太坊,因此它无法缓解这些低效率问题。Type 1 zkEVM 是最理想的zkEVM,有许多项目正在构建或探索这种类型。
目前Type 1 zkEVM相关项目有Taiko和Kakarot。
Taiko构建的 Type 1 zkEVM可以使开发者和用户能够安全地体验以太坊,交易费用更低,而且不需要考虑任何变化。在两轮种子轮融资中筹集了2200万美元,第一轮是由红杉中国领投的1000万美元,第二轮是由Generative Ventures领投的1200万美元。6月7日,Taiko上线了Alpha-3激励测试网。据Taiko官方介绍,该测试网侧重于去中心化、以太坊等效的ZK-EVM部分。
Kakarot zkEVM是使用Cario语言部署的EVM,通过增强EVM兼容性来扩展Starknet生态系统的可靠性。Kakarot zkEVM 可以以不同的形式存在,在第一阶段将 EVM 带到 Starknet,第二阶段Kakarot 和 Madara 将合并到一个统一的堆栈中,以支持 L3 zkEVM,在第三阶段Kakarot 和 Madara 也可以组合在一起,启用 Type 1 zkEVM。6 月 2 日,Kakarot zkEVM完成 pre-seed 轮融资,StarkWare、LambdaClass 等机构以及 Vitalik Buterin、Nicolas Bacca、Rand Hindi 等天使投资人参投。
Type 2(字节码级等价——完全等同于EVM)
Type2 zkEVM 力求完全等效于 EVM,但不完全等效于以太坊。也就是说,它们从内部看与以太坊一模一样,但它们在外部有一些差异,特别是在数据结构方面,如块结构和状态树。目标是与现有应用程序完全兼容,但对以太坊进行一些小的修改以使开发更容易并使证明生成更快。
Type 2 zkEVM 的优点是VM 级别的完美等价。Type 2 zkEVM 对保存以太坊状态等内容的数据结构进行更改。这些是 EVM 本身无法直接访问的结构,因此在以太坊上运行的应用程序几乎总是可以在 Type 2 zkEVM rollup 上运行。该类型无法按原样使用以太坊执行客户端,但可以通过一些修改来使用它们,并且仍然可以使用 EVM 调试工具和其他基础设施。
Type 2 zkEVM 的缺点是验证时间仍然很慢。Type 2 zkEVM 提供比Type 1 zkEVM 更快的验证时间,主要是通过删除以太坊堆栈中依赖不必要的复杂和对 ZK 不友好的密码学部分。比如它们可能会改变以太坊的 Keccak 和基于 RLP 的 Merkle-Patricia 树,可能还会改变区块和收据结构。这些修改显著改善了证明者(prover)时间,但并不能解决所有问题。由于 EVM 固有的所有低效率和 ZK 不友好性,证明 EVM 的速度仍然很缓慢。
目前Type 2 zkEVM相关项目有Linea 和 Polygon。
Linea 是由 Consensys 提供支持的 Type-2 zkEVM。通过集成具有完全 EVM 兼容性的 ZKP,开发者能够创建可扩展的 DApp 或将现有的 DApp 转移到新平台,且无需更改代码或重写智能合约。公共测试网已在今年3月28日发布,并已添加到 Metamask 扩展程序的默认网络选项中。Linea 于 6 月 13 日 12:00 发布 Alpha v0.2,此版本侧重于测试实质性架构升级,为主网启动做准备。
Polygon zkEVM是开源并采用 Type 2 zkEVM。它采用 ZK 证明来降低交易费用并提高吞吐量,同时保持以太坊 L1 的安全性。Polygon在今年2月14日表示,Polygon zkEVM 已经通过了100% 适用于zkEVM的以太坊测试向量,开发人员无需修改或重写任何程式码,且所有以太坊工具都可以与Polygon zkEVM无缝协作,意味着在ZK Rollup的EVM兼容再迈出一大步,已达到 Type 2 的水平,完全等效于 EVM。Polygon zkEVM 主网测试版于 2023 年 3 月 27 日正式启动。
Type 2.5(EVM 等效,gas 成本除外)
改善验证时间的一种方法是是大大增加 EVM 中很难进行 ZK 证明的特定操作的 gas 成本。这可能涉及到预编译、keccak 操作码,以及调用合约或访问内存或存储或恢复的可能特定模式。
更改 gas 成本可能会降低开发人员工具的兼容性,并破坏一些应用程序,但通常认为它比“更深层次的”EVM 更改风险更小。开发人员应该注意不要在一笔交易中要求超过一个区块的 gas,而且不要使用硬编码的 gas 量进行调用。
目前还没具体项目是做Type 2.5 EVM,它只是进入到Type 2的一个阶段。
Type 3(字节码级等价——几乎等效于EVM)
Type 3 zkEVM几乎是EVM 等效的,但为了进一步缩短证明时间并使 EVM 更易于开发,为精确等效做出了一些牺牲。
Type 3 zkEVM 的优点是更容易构建,且验证时间更快。Type 3 zkEVM 可能会删除一些在 zkEVM 实现中特别难以实现的特性。此外,Type 3 zkEVM 有时在处理合约代码、内存或堆栈的方式上也存在细微差别。
Type 3 zkEVM 的缺点是兼容性更差。Type 3 zkEVM 的目标是与大多数应用兼容,而其余部分只需要最少的重写工作。也就是说,会有一些应用需要重写,因为它们使用了Type 3 zkEVM 删除的预编译,或者因为对 VM 不同处理的边缘情况的微妙依赖。
目前Type 3 zkEVM相关项目有Scroll。
Scroll 是由 Scroll 团队与以太坊基金会的 PSE(Privacy and Scaling Explorations)小组合作开发的 EVM 等效 zk-rollup,目前处于 Pre-Alpha 测试网阶段,旨在在字节码级别上与EVM完全兼容。这意味着开发人员可以使用任何兼容 EVM 的语言创建智能合约并部署到 Scroll 上。Scroll虽然目前正构建Type 2 EVM,许多更复杂的预编译尚未实现,因此被认为是Type 3 EVM。据Scroll表示,预计在今年7,8月上主网,并表示可能会推出激励生态发展的合作伙伴计划。
当前,Type 3 EVM只是一个过渡阶段,直到添加预编译的复杂工作完成,然后项目就可以转移到类型 2.5 的 zkEVM。但在未来,Type 1和Type 3 EVM也许会添加新的 ZK-SNARK 友好的预编译,为开发人员提供低验证时间和低 gas 成本的功能。
Type 4(开发语言级等价——高级语言等效于EVM)
Type 4 EVM的工作原理,是将用高级语言编写的智能合约源代码(例如 Solidity、Vyper 或中间语言)编译为某种明确设计为 ZK-SNARK 友好的语言。
Type 4 zkEVM 的优点是更快的证明速度。因为该类型不对每个EVM执行步骤的所有不同部分进行zk 证明,而是直接从高级代码开始,就可以避免很多成本。
Type 4 zkEVM 的缺点是它的兼容性更差。一是合约在 Type 4 系统中的地址可能与它们在 EVM 中的地址不同;二是许多应用程序为了提高效率在某些部分使用手写的 EVM 字节码,Type 4 系统可能不支持,许多调试基础设施也无法继承。
目前Type 4 zkEVM相关项目有zkSync Era和StarkNet。
zkSync Era由 Matters Lab 创建。zkSync Era 是第一个在主网上启动的 EVM,并且公众可以完全访问以将他们的资金桥接到系统或在网络上部署他们的代码。zkSync Era 使用不同的字节码格式,通过提供编译器来支持 Solidity。它支持 Solidity,但不支持 EVM 字节码本身。例如 Hardhat 这样的工具不能直接使用,尽管可以使用 zkSync 的插件。
StarkNet由StarkWare创建,是一个zk-rollup L2,使用零知识证明为以太坊创建链下执行层。其实, EVM 并不是 Starknet 的原生功能。Starknet 使用 Warp 转换器(由 Nethermind 提供)将 Solidity 代码转换为 Cairo 以支持智能合约部署。
zkEVM的挑战与未来
由于 EVM 在构建时并未考虑 zk-proof 计算,因此它具有对证明电路不友好的特性,特别是在特殊的操作码、基于堆栈的架构 存储开销以及证明成本等方面。但零知识技术的几项突破使得缓解这些问题成为可能。
五种类型的zkEVM没有明确的谁好谁坏,编号较低的类型与现有基础设施的兼容性更高但速度较慢,而编号较高的类型与现有基础设施的兼容性较低但速度更快。总的来说,不同的项目探索不同的类型对zkEVM和以太坊的发展都是有益的。
未来,将有多个 zkEVM 实现,它们既可用于 ZK Rollup,也可用于验证以太坊链本身。从理论上讲,以太坊无需为 L1 使用单个标准 zkEVM ,不同的客户可以使用不同的证明。然而,要实现这样的未来还需要相当长的时间。与此同时,我们会在扩展以太坊和基于以太坊的 ZK-rollup 的不同路径上看到更多的创新。