速览zkSync Boojum证明系统升级:如何成为更安全更高效的zkEVM?
撰写:zkSync
编译:深潮 TechFlow
TLDR
-
升级:zkSync Era 正在过渡到新的 Boojum 证明系统,无需重新生成。
-
性能:Boojum 展示了一流的证明性能,补充了 zkSync Era 排序器,该排序器已经可以处理超过 100 TPS。
-
去中心化:Boojum 证明者仅需要 16 GB RAM,可实现未来大规模证明者去中心化。
zkSync 的使命是推进所有人的个人自由——通过构建一个无需信任、安全、无需许可、价格合理、易于使用、弹性和可无限扩展的区块链网络,使数字自我所有权普遍可及。
为了履行这一使命,zkSync Era 的 Alpha 版本于三个多月前向公众开放,反响非常惊人。网络亮点:
-
锁定总价值TVL 5.77 亿美元(来源:L2Beat);
-
过去 30 天的 23,750,000 笔交易——是所有 L2 中最多的(来源:L2Beat);
-
9,735 个源代码验证的智能合约。
2023 年 3 月,基于 SNARK 的 zkSync Era 出世,利用了经过实战检验的电路框架,该框架已经在主网上为 zkSync Lite 提供了近三年的支持。然而,我们知道这不会是 zkSync Era 证明系统的最终版本,因此设计了这个系统,使我们能够在不进行重新生成的情况下对其进行根本性的更改。这意味着我们可以在不干扰开发者和用户的情况下部署重大的密码学升级。
在幕后,我们已经在进行密码学升级的工作很长时间了。今天,我们很高兴地宣布第一个升级:zkSync Era 正在过渡到一种名为“Boojum”的新的 STARK 证明系统。
认识 Boojum
Boojum 是我们基于 Rust 开发的算术和约束库,我们使用它来实现 zkSync Era 和 ZK Stack 的升级版本的 ZK 电路。
Boojum 是什么?
Boojum 的特性:
-
PLONK 算术化:在零知识协议的背景下,算术化是将一般计算转化为数学形式的过程。与当前的证明系统一样,升级系统仍然采用 PLONK 风格的算术化。采用这种方法,相对于一些替代形式,ZK 电路的编写更简单,使系统更易于开发、审计、维护和升级。
-
强大的承诺方案:Boojum 的核心在于 FRI 承诺方案,它是一个关键组件,使我们能够承诺有界多项式,并随后有效地证明所声称的(多项式的)opening 确实属于低次多项式。
-
系统的效率:尽管当人们谈论证明者性能时有时会忽略见证生成,但在当前版本的证明系统中,我们已经达到了优化的 GPU 证明者非常高效的程度,以至于见证生成时间与证明生成时间相当。通过 Boojum,我们提供了自动并行化(如果依赖图允许)的见证生成,同时保持了定义见证生成函数的简易性.
-
易于扩展:基本约束系统抽象非常简洁,但它允许用户以各种方式添加自定义门类型,例如为它们添加一些专门的多项式,或者重用所谓的“通用列”。用户在为其电路定义了简单的几何结构之后,扩展接口提供了自动生成证明者、验证者和递归验证者的能力。这样可以实现非常高效的开发过程;如果用户更改电路结构并选择不同类型的门来使用,他们只需再次调用接口,它将重新生成密钥并确保他们使用正确的证明者和验证者。
-
单一堆栈:通过 Boojum,上述所有内容都可以仅使用标准、惯用的 Rust 表达,利用其类型系统的表达能力。GPU 证明者的计算密集部分是用 CUDA C++编写的,但我们提供了 Rust 绑定以进行组合。
Boojum 默认使用大小为 2^64 – 2^32 + 1 的素数字段(被称为“Goldilocks field”),并提供相应字段绑定原语的实现,例如 Poseidon2 哈希函数,以及基于查找表的更标准加密原语的实现,例如 SHA256、Keccak256 和 Blake2s。
重要的是,在最后一步中,我们将使用非透明的基于配对的 SNARK 来包装 STARK 证明,并在以太坊上验证这个 SNARK。这个证明要小得多,验证成本更低;这一步降低了证明系统的成本,从而降低了交易本身的成本。
为什么选择 Boojum?
在设计 Boojum 时,决策背后有两个关键因素:(1)世界一流的证明性能,以及(2)降低去中心化的硬件要求。
世界一流的性能
当前基于 SNARK 的系统,虽然对于当前来说是有效的,但无法扩展到 ZK Stack 中的高交易量、接近实时的交易。zkSync Era 作为 Hyperchain 运行的未来目标是在未来几年内支持这些系统。我们对这些系统的设想是,证明可以便宜快速地生成和验证,从而实现快速的最终性和 Hyperchain 之间的互操作性。
证明系统的性能直接影响用户为其交易支付的费用,随着时间的推移,这些成本需要趋近于零。当前版本的证明系统足够高效,可以构建 zkEVM,并在短短几个月内处理数百万笔交易,但是通过 Boojum,我们可以做得更好!
为了衡量网络的证明生成时间(以及与性能相关的其他关键指标),我们与 Celer 合作,Celer 团队在基准测试和分析多个证明系统方面拥有丰富的经验。在下面的图像中,您可以看到 Boojum 在大多数进行性能分析的系统中表现出色。结果不言自明:我们的实施展示了世界一流的证明性能,据我们所知,这是目前在生产中使用的最快的证明系统。
为了进行公平比较,Celer 在基于 CPU 的证明者上进行了这些基准测试,但我们的主网系统使用的是基于 GPU 的证明者,速度更快。
转向基于 STARK 的证明系统代表了性能的显著提升,并将有助于确保最终性和对 zkSync Era 和其他基于 ZK Stack 的系统的增加活动水平的支持的低延迟。
降低去中心化硬件的要求
当人们认为这不是我们优化的唯一指标时,这些性能结果尤其令人印象深刻——我们希望提高系统性能,同时降低运行它的硬件要求。
目前普遍使用的证明系统,包括我们现有的系统,在硬件方面要求较高。我们当前的证明系统在一组 A100 GPU 上运行,每个 GPU 具有 80 GB 的 RAM。对昂贵且功能强大的机器的需求对我们的目标构成了重大障碍:用户驱动的去中心化证明生成的未来。要实现这个目标,仅仅使证明生成无需许可是不够的;用户还不应该需要一台带有数百 GB RAM 的昂贵机器来参与其中。
这是我们取得极其引人注目的进展的另一个领域!我们用于 Boojum 的 GPU 证明器仅需要 16 GB 的 RAM,这种低门槛是我们设想的未来的重要一步。基于 CPU 的证明也可以使用低至 64 GB 的 RAM,我们希望将其降低到 32 GB,并充分利用现代多核处理器。
最后,zkSync Era 基于 Rust 的序列器已经可以每秒处理 100 多个交易(TPS)。新的证明系统的引入不仅提高了性能,还降低了硬件要求,使其成为序列器的理想补充。Boojum 带来的性能提升意味着系统可以更快地证明交易,而降低的硬件要求则改善了网络对更便宜的机器的访问,以实现更高的横向扩展性。
Boojum 的主网之旅
团队已经花费数月时间开发这个升级,我们很高兴现在已经到了在主网上测试系统的阶段。我们也想分享一下迄今为止的一些故事。
升级 zkSync Era
首先,zkSync Era 的设计使我们能够随着时间的推移升级每个组件,证明系统也不例外。
与以太坊类似,我们使用 Merkle 树数据结构来存储有关网络状态的信息。鉴于我们正在证明有关系统状态的陈述,这些信息是证明系统所必需的。为了这个 Merkle 树(以及证明系统与之交互的方式),一个关键的设计决策是使用非代数哈希函数,具体来说是 Blake2s。如果我们仅仅优化证明生成的便利性,我们就会使用代数哈希函数(例如 Poseidon2),但这种选择会将可观察状态与证明系统参数耦合起来 ——例如素数字段的选择。然后,对证明系统的任何升级都需要完全重新生成状态。
从设计到审查的 Boojum 之旅
大约一个月前,我们开始逐渐形成了我们新的证明系统实现的完整端到端版本。考虑到这个变化的复杂性以及系统正确性的关键性,我们开始进行一系列的内部和外部审计。
当时,zkEVM 电路和 Boojum 算术化库仍在积极开发中,但我们与外部安全审计员合作,重点关注我们的主要电路和 Boojum 组件的健全性潜在问题的早期识别。我们密切合作,向他们提供完整的源代码和文档访问权限,他们对 zkEVM 电路和 Boojum 小工具进行了审查和测试,使用了自动化和手动测试的方法。
Boojum: 从审查到测试
这将带我们来到今天,我们分阶段推出的下一步:主网影子模式!我们很高兴地宣布,我们现在正在与现有的证明系统并行运行新的证明系统,尽管 Boojum 目前仅处于测试阶段。我们已经开始为主网区块生成和验证“影子证明”。
这些影子证明对于 zkSync Era 的主网版本并非必需 ——这仍将由现有的证明系统驱动。我们只是验证这些影子证明以进一步测试和优化系统,但使用的是 zkSync Era 用户活动的真实生产数据。
Boojum: 从测试到主网
与我们所做的一切一样,安全始终是首要考虑的因素。只有当我们对新系统的测试完全满意时,我们才会考虑迁移,并在未来的几周和几个月内分享更多细节。我们还计划进行进一步的审计和安全评估,以使这个令人兴奋的升级更加接近全面部署,并逐渐淘汰当前的证明系统。
我们相信,Boojum 是 zkEVM 更安全、可扩展和高效的下一阶段。