撰写:Filippo Armani
编译:深潮 TechFlow
ZK Rollups,也称为有效性 Rollups,是一种革命性的以太坊扩展方式,它允许交易在链下进行处理,并在主链上以单个压缩交易的形式合并。这个过程增加了交易吞吐量,降低了费用,同时保持了主链的安全性和去中心化。
ZK Rollups 的突出特点之一是它们利用零知识证明(ZKP),这是一种密码学证明类型,使得一方(证明者)能够向另一方(验证者)证明一个陈述是正确的,而不泄露任何额外的信息。在 ZK Rollups 的背景下,ZKP 确保链下交易的完整性,使证明者能够演示交易批次的有效性,而无需透露交易的具体细节,也无需要求验证者在接受新状态之前检查所有交易。
与 Optimistic Rollups 相比,ZK Rollups 提供了更高级别的安全性,因为它们没有在以太坊之上引入其他信任假设,并依靠以太坊和数学来保证安全性。Optimistic Rollups 依赖于博弈论和 1/n 诚实节点假设,这意味着对于每个交易批次,总会有至少一个诚实节点可以挑战恶意交易。
另一方面,ZK Rollups 的操作者,也称为序列器和证明者,没有任何机会危害用户的资金,因为他们的角色“仅仅”是收集交易批次并生成 ZK 证明,而用户的资金仍留存在以太坊 L1 上,以太坊最终负责验证 L2 提交的 ZK 证明并完成底层交易。有效性证明是通过对状态数据进行复杂的多项式计算来生成的。如果状态数据无效,则无法生成有效性证明。L1 上的验证者将输入状态数据来验证有效性证明,因此如果证明者更改了状态数据,则验证者将不接受该证明。
与 Optimistic Rollups 相比,ZK Rollups 还有两个优点。首先,它们使得最终性更快,因为只要提供有效性证明,交易就在以太坊上被确认;而 Optimistic Rollups 需要等待一个星期确保没有挑战,因此才认为交易是合法和最终的。其次,与数据可用性相关,ZK Rollups 更加高效,因为只需要发布状态差异即可,因为无需重建所有交易以进行验证,相反,Optimistic Rollups 需要发布完整数据,以便任何人都可以重建交易并最终挑战它们。
因此,ZK Rollups 在以太坊上使用的数据带宽要少得多(这是所有 Rollups 都需要共享的稀缺资源,无论它们使用哪种系统来执行交易,包括 ZK 电路),从而使用户甚至可以获得更便宜的费用(甚至是零费用)。
Zk-rollups 被认为是以太坊可扩展性的终极解决方案,但由于以太坊虚拟机(EVM)不设计支持 ZK 电路,实现它们是困难的。为了解决这个问题,许多组织和研究人员尝试创建一个名为 zkEVM 的 Rollup 支持虚拟机,它可以以与零知识证明计算兼容的方式运行智能合约。
在 Vitalik 的博客文章中可以找到关于这些不同尝试的最全面分析,他概述了四种基于与以太坊兼容性的 zkEVM 类型。需要注意的是,zkEVM 越接近以太坊的功能,生成 Zk 证明的速度就越慢,成本就越高。另一方面,如果一个区块链或 Rollup 更符合以太坊的规范和标准,那么开发人员就更容易在其上构建应用程序并集成到以太坊生态系统中。总之,与以太坊高度兼容的区块链可能具有竞争优势。
第一类:完全等同于以太坊的 zk rollups,在所有部分(包括哈希、状态树、交易树、预编译或任何其他共识逻辑)中精确地复制以太坊。到目前为止,还没有任何 zkEVM 能够实现与以太坊的等效性。
第二类:完全等同于 EVM 的 Zk rollups 力求与 EVM 等效,但并非完全等效于以太坊。它们与现有应用程序完全兼容,但对以太坊进行了一些微小修改,以使开发更容易,并且可以更快地生成证明。Scroll 和 zkEVM Polygon 在理论上属于此类;在实践中,它们目前属于第三组。
第三类:几乎等同于 EVM,为了使证明生成更快,牺牲了更多元素和等效性。Polygon zkEVM 和 Scroll 目前属于此类。这个类别通常是进入第二类的跳板。
第四类:高级语言等效,意味着它们都接受用 Solidity 编写的智能合约,然后将其转换为另一种自定义的、适用于 zk 的语言。zkSync 和 StarkNet 属于这个类别,尽管 zkSync 可能会随着时间推移添加对 EVM 字节码的兼容性,并最终向更高的类型转移。
虽然 Vitalik 提出的分类目前是最流行和最公正的,但也有其他分类方法。Immutable,这个基于 StarkWare 并专门针对 NFT 的 L2,在其一篇博客文章中提供了以下有用的分类:
这些类别与 Vitalik 的分类相比,更清晰地基于现有 zkEVM 在堆栈的特定级别(高级语言、字节码或运行时环境)上达到其与以太坊的兼容性或等同性。
Solidity 兼容。与以太坊的兼容性是在高级语言级别 Solidity 上实现的,这意味着开发人员可以继续使用他们在以太坊上习惯使用的语言编写智能合约。然而,这些 Rollup 立即将 Solidity 转换为它们的中间表示形式,然后在它们的字节码中编译,并在它们的自定义环境中执行。具体来说,这些 L2 使用转译器将 Solidity 代码转换为自定义 VM 的可读代码(StarkWare 的 Cairo,zkSync 的 LLVM-IR)。这些转译器不支持某些 Solidity 功能,因此开发人员可能需要调整他们的智能合约。例如:zkSync 和 StarkNet。
EVM 兼容。从语言层面上看,这些 Rollup 与 EVM 兼容,但它们拥有自己的字节码,这意味着 Solidity 可以直接编译成 EVM 操作码 / 字节码,然后在自定义 VM 运行时之前转换为自定义字节码。实际上,这些 Rollup 与大多数以太坊程序兼容,但某些应用程序可能需要进行重写。此外,一些字节码功能(例如预编译)不受支持。例如:Polygon zkEVM。
等效于 EVM。这些 Rollup 创建了一个 zk 验证电路,可以直接读取 EVM 操作码和字节码,尽管 VM 本身与 EVM 不同。这些 Rollup 完全兼容现有应用程序,但可以对以太坊进行一些微小修改,以使开发更容易,并使证明生成更快。例如:Scroll。
等效于以太坊。这意味着在所有组成部分上复制以太坊,类似于 Polygon 所做的方式。到目前为止,没有任何 zk Rollup 属于此类别。
将此框架与 Immutable 提出的框架相结合,并添加一些其他信息,可以概述以下图表,在没有任何性能数据可用之前,突出考虑在比较不同的 zkEVM 实现时要考虑的一些设计差异和相似之处:
zkSync 2.0(在主网发布前刚刚更名为 zkSync Era)是以太坊网络的扩展解决方案,与 Solidity 编程语言完全兼容。使用 zkSync,用户可以选择两种数据可用性类型:zkSync Rollup 和 zkSync Porter。前者将数据直接发布在以太坊上,使其与以太坊 L1 一样安全,而后者将数据存储在链下,导致交易速度更快、成本更低,但安全级别较低。
zkSync 是 EVM 兼容的,因为它可以将用 Solidity 编写的智能合约代码转换为 Yul,并将 Yul 转换为 LLVM-IR,然后将其重新编译为专门设计用于 zkSync 的 EVM 的自定义电路兼容字节码集。虽然这需要中间步骤,但也允许添加其他非 EVM 功能,例如 Account Abstraction。此外,zkSync 的公司 Matter Labs 计划逐步使其更具有 Ethereum 工具包的兼容性,并准备在可扩展性和互操作性领域推出其第一个三层原型 zkSync Opportunity,并作为其雄心壮志的一部分在测试网上发布。
在撰写本文时,zkSync Era 刚刚推出,因此对其表现作出评论还为时过早。只支持简单交易的 zkSync 1.0(现在称为 zkSync Lite)是最大的 zk rollup 之一,据 TVL 统计,已锁定超过 8300 万美元,累计交易量超过 1900 万笔,而 StarkNet 的 TVL 仅超过 1900 万美元,累计交易量为 400 万笔。
StarkNet 是一种类型 4 / Solidity 兼容的 zk-rollup,它采用了一种不同类型的零知识证明,称为 STARKs (Scalable Transparent ARgument of Knowledge),以确保链下交易的完整性。STARKs 被认为比 SNARK 更有效和可扩展,但可能需要更复杂的技术设置。
虽然 StarkNet 也支持智能合约,但由于使用 STARKs,以及 StarkNet 合约和 StarkNet OS 是用 Cairo 语言编写的,所以它的能力相对较小。为了使开发更容易,StarkWare 最近升级到了 Cairo 1.0,该版本模拟 Rust。与 zkSync Era 一样,可以将 StarkNet 归类为“Solidity 兼容”,因为它不会在 EVM 内执行程序,而是创建一个全新的、专门设计的 VM,并使用自定义字节码。StarkWare 使用 Warp 转译器将 Solidity 代码转换为 Cairo VM 字节码。
然而,与 zkSync Era 和其他 zkEVM 实现不同,StarkNet 团队的目标不是与 EVM 或其他以太坊组件兼容,而是旨在通过滚动其自定义客户端 API、JavaScript 库和钱包系统使 StarkNet 的 VM 尽可能高效,这将迫使与以太坊兼容的工具手动添加 StarkNet 支持。尽管 Cairo 1.0 还引入了 Sierra——安全中间表示——作为 Cairo 1.0 和 Cairo bytecode 之间的新中间表示层,但 Warp 转译器不支持某些 Solidity 功能,并且离匹配 zkSync Era 的 EVM 兼容性还有很长的路要走。
Polygon zkEVM 是一种 zk-rollup,它使用自定义语言 zkASM 来解释 zkEVM 代码,并在非 EVM 运行时环境中验证智能合约的执行。该项目始于 2021 年,通过以 2.5 亿美元收购 Hermez Network 开始开发一个结合了 STARK 和 SNARK 的安全性和效率的 EVM 等效系统。虽然 STARK 用于为交易状态生成有效性证明,但 SNARK 用于评估 STARK 证明的正确性。这些解决方案的组合可以实现安全性、速度和低交易费用。
2022 年 7 月,Polygon 宣布将 Polygon Hermez 改名为 Polygon zkEVM,在撰写本文时刚刚推出。Polygon zkEVM 的最新测试网版本引入了递归功能,允许使用一个 ZK 有效性证明来验证其他 ZK 证明的批次,其中每个证明都可以验证多个交易。这一功能得益于 Plonky2,一种递归 SNARK,比现有替代品快 100 倍,并与以太坊本身原生兼容。
除了 Polygon zkEVM,Polygon 还开发了 Polygon Avail,这是一个仅优化数据可用性的区块链。该网络将是无需许可的,允许任何人加入作为验证器,与现有的 DAC(Data Availability Committees)不同,它将有数百个节点协作提供网络安全。Avail 将与 Polygon Hermez(Rollup)配对工作,从 Hermez 上传状态数据而不是在以太坊上发布,提供 Validium 和 Rollup 之间的解决方案。
尽管一些专家指出,Polygon 提供的规格说明更适合描述为 EVM 兼容性,但该团队正在努力创建第一个完全等效于 EVM 的解决方案。
Scroll 是由 Scroll 团队与以太坊基金会的 PSE(Privacy and Scaling Explorations)小组合作开发的 EVM 等效 zk-rollup,目前处于 Pre-Alpha 测试网阶段,旨在在字节码级别上与以太坊虚拟机(EVM)完全兼容。这意味着开发人员可以使用任何兼容 EVM 的语言创建智能合约并部署到 Scroll 上。尽管 Scroll 目前不支持 EVM opcode,但计划通过构建 1:1 opcode 映射来实现,并直接接受 EVM opcode 而无需编译器。
Scroll 的架构包括一个集中式序列化节点和一个分散的证明网络。集中式序列化节点负责对交易进行排序、创建区块,并将交易数据作为 calldata 提交到以太坊上的 Rollup 合约以供数据可用性。Scroll 计划逐步去中心化序列化节点。另一方面,一个名为 Roller 的分散式证明生成器会产生证明并将其发布到 L1 网络上,利用分布式计算能力。Rollers 是随机选择的,可以在不同的 Rollers 上并行生成不同块的多个证明以增加速度。
*虽然目前仅支持链上数据可用性,但 Scroll 的原始设计也包括 Validium 模式。
确实,Scroll 和 Polygon 都采用了字节码级别的方法来构建它们的 zkEVM。这种方法完全消除了转译步骤,这意味着在编译和解释之前,这些 zkEVM 不会将 Solidity 代码转换为其他语言。然而,虽然 Scroll 与以太坊唯一的区别在于运行时环境,但 Polygon 创建了一个自定义 VM 并进行了优化,然后将 EVM 字节码转换为该 VM 的字节码。与 Scroll 不同的是,Polygon 的运行时(“zkExecutor”)运行定制的“zkASM”操作码(图中的微操作码),而不是 EVM 操作码,以优化 EVM 解释(即减少约束的数量而不是直接证明 EVM)。Polygon zkEVM 可能不会与 100% 的 Solidity 代码、工具和应用程序兼容,尽管大部分都可以。
虽然这些是专注于推出通用 zkEVM 实现的最显著项目,但其他特定应用项目也在实践中使用 zk 技术。
Looping 是一种特定应用的 zk-rollup,用于支持去中心化交易所(DEX)协议。Loopring 也是一个使用 zk 证明让任何人构建 dex 的平台。Immutable X 是另一个基于 StarkWare 构建的特定应用的 zk-rollup,用于 NFT 交易和游戏。Aztec 是一种以隐私为本的基于以太坊的 zk-rollup,它通过加密数据来保持数据对协议的透明度和可用性,同时保护用户的隐私。此外,Aztec 还发明了 PLONK 证明系统,也被 zkSync 和其他项目使用。
Immutable X、Sorare、rhino.fi、ApeX、dYdX 等多个协议都是基于 StarkEx 构建的。在使用 StarkEx ZK-Rollup 的项目中,数据作为 calldata 发送到以太坊并发布在链上。在 Validium 模式下,数据存储在链下,只有哈希值存储在链上。虽然 Rollup 模式确保更高的安全性(用户只需与以太坊区块链进行交互即可重新创建分类账状态),但 Validium 模式可以确保更低的成本和更高的隐私。
总体而言,尽管 zkSync Lite 是最大的 zk rollup,StarkWare 拥有最大的生态系统,包括在 StarkEx 上构建的项目,它的 TVL 和市场份额也最大。
总结
总之,zk-rollup 是扩展区块链网络的一种有前途的解决方案,提供各种实现以满足不同的需求和要求。虽然存在一些分类,但值得注意的是,它们是近似的解释,缺乏对定义和技术差异的共识。正如 Scroll 联合创始人 Sandy Peng 所承认的:“没有任何定义能够得到清晰的共识。「Scroll 的整个研究团队」倾向于某种叙述方式或某种看法,但这并不是一个明确的事情。我们的研究团队甚至在所有事情的含义上都没有达成共识。”
尽管如此,在 zk rollup 实现中出现了一些共同的趋势。首先,它们似乎都采用了混合方法来处理数据可用性,提供一个传统的链上数据存储的 rollup 版本和一个链下数据存储的 validium 版本。Avail 首席执行官 Anurag Arjun 告诉 Blockworks:“在我看来,你会发现每个 rollup 都会有一个 rollup 版本和一个 validium 版本。”
其次,它们大多避免使用纯开源代码,直到它们实际运行,这也与来自像 Arbitrum 和 Optimism 这样的 optimistic rollups 的激烈竞争有关。Zk-rollups 承诺更高效,但技术上更难以实现。此外,正如上表所清楚的那样,optimistic rollups 尤其是 Arbitrum,正在受益于先发优势,并且在应用程序、交易量和市场份额方面领先市场。如果被证明成功,optimistic rollups 可以将有效性证明模型与他们已经建立的用户基础相结合(例如,Optimism 的升级 Bedrock 可能引入有效性证明)。
此外,尽管所有实现开始时都采用了中心化序列器来提高效率,但它们都致力于逐步去中心化,以解决对集权的担忧。有趣的是,去中心化排序器可能需要一种原生代币的经济激励,因此所有提到的项目都应该采取这个步骤。
最后,过去一年中这些 zkEVM 实现所取得的惊人成果已经引起了总体上 zk 技术的新一轮关注,公司专注于各个方面的发展,包括开发新的 zk 硬件来提高证明生成速度。
尽管仍然存在一些挑战需要解决,但在仅仅一年多的时间里,zkEVM 设计所取得的进展是值得注意的,2023 年可能是这项技术决定性的一年。
原文链接