详解Boojum升级:zkSync Era为何选择STARK证明系统

作者:zkSync;翻译:xiaozou

本文要点:

升级:zkSync Era正在无需regenesis的情况下过渡到一个新的Boojum证明系统。

性能:Boojum展示了世界级的证明性能,助力zkSync Era排序器性能提高,已可处理超100 TPS。

去中心化:Boojum prover(证明者)只需要16 GB RAM,支持未来大规模的prover去中心化。

准备就绪:Shadow proving(影子证明)已经在主网上线!

正如我们在ZK Credo宣言中所阐述的那样,zkSync的使命是通过建立一个无需信任、安全、无需许可、价格合理、易于使用、有弹性和无限扩展的区块链网络,促进所有人的个人自由,让数字自我所有权普遍可用。

为了达成这一使命,zkSync Era的Alpha版本在三个多月前就向公众开放了,并获得了惊人的反响。在此期间,我们在网络上看到了大量活动。

网络重点:

· 9735个源代码验证的智能合约。

2023年3月,我们推出了zkSync Era,使用基于SNARK的系统支持我们的zkEVM,利用久经考验的电路框架,已经在主网上为zkSync Lite提供了近三年的支持。然而,我们知道这并非zkSync Era证明系统的终点,我们将该系统设计为无需执行regenesis就可以进行根本改变。这意味着我们可以在不干扰开发人员和用户的情况下进行重要的加密升级。

我们长期致力于加密升级。如今,我们很高兴地宣布我们的第一次加密升级:zkSync Era正在过渡到一个新的基于STARK的证明系统,称为“Boojum”。

1、Boojum简介

Boojum是我们基于Rust的算法和约束库的名称,我们使用它来实现zkSync Era和ZK Stack的ZK电路的升级版本。Boojum一名的灵感出自Lewis Carroll的The Hunting of The Snark(猎鲨记)一诗,Boojum则代表最可怕的Snark类型。

(1)什么是Boojum?

Boojum的设计具有许多引人瞩目的特性:

· PLONK类型算法:对零知识协议来说,算法(arithmetization)是将一般计算转换为数学形式的过程。就当前的证明系统而言,我们升级的系统继续采用PLONK类型算法。使用这种方法,相对于其他一些可选方案,ZK电路更容易编写,系统也就更容易开发、审计、维护和升级。

· 强大的承诺方案:Boojum的核心是FRI承诺方案,FRI承诺是一个关键的组成部分,它使我们能够对一个有界多项式进行承诺,然后有效地证明(多项式)声称的opening确实属于低阶多项式。

· 系统中“boring”部分的效率:尽管当人们谈论prover性能时,有时会忽略见证者的生成,但在当前版本的证明系统中,经优化的GPU prover非常高效,见证者生成时间与证明生成时间相当。通过Boojum,我们提供了自动化的并行(如果依赖图允许的话)见证生成,同时仍然可以轻松定义像|(a, b)| a + b这样的见证生成函数。

· 易于扩展:基础约束系统抽象非常浅层,但它允许用户以各种方式添加他们自定义的gate约束类型,例如添加一些专门的多项式,或者重用通用column(列)。在用户为他们的电路定义了一个简单的geometry之后,扩展接口则为他们提供自动生成证明者、验证者和递归验证者的能力。这将允许一个非常高效的开发过程;如果用户改变电路结构并选择使用不同类型的gate,他们可以再次调用接口,它将重新生成密钥并确保他们使用正确的证明者和验证者程序。

· 单栈:使用Boojum,上述的所有内容都可以仅用标准的、惯用的Rust来表示,并使用其类型系统的表达性。GPU prover计算繁重的部分是用CUDA C++编写的,但我们为组合提供了Rust绑定。

Boojum默认操作大小为2^64 - 2^32 + 1的素数域(称为“Goldilocks field”,最初由Mike Hamburg提出,使用Hamish Ivey-Law建议的特定参数),并提供相应的域绑定原语的实现,如Poseidon2哈希函数,以及基于查找表的更标准的加密原语实现,如SHA256、Keccak256和Blake2s。

重要的是,在我们部署的最后一步,我们将使用一个不透明的基于配对的SNARK——本质上是当前证明系统的一个微升级的版本——来包装STARK证明,并且这个SNARK将在以太坊上进行验证。这种证明要小得多,验证成本也低得多;这一步降低了证明系统的成本,从而降低了交易本身的成本。

Boojum受益于社区内很多人的贡献,我们收到了各种各样的想法,对此深表感谢。我们从STARK、FRI和DEEP-FRI的基础文档、Poseidon和Poseidon2中提出的哈希函数的进步以及Gabizon、Williamson和Ciobotaru提出的PLONK算法的发展中获得了灵感。此外,Plonky2项目(Farmer、Lubarov、Borgeaud等)的创新方法——包括选择Poseidon MDS及使用round常数,以及Eagen、Fiore、Gabizon和Haböck在cached quotients和多元查找研究中提出的新颖见解。正是这些宝贵的贡献共同塑造了Boojum的设计。

2、为什么选择Boojum?

在设计Boojum时,我们的决策考量了两个关键因素:(1)世界级的证明性能,(2)降低去中心化的硬件要求。

(1)世界级性能

我们当前基于SNARK的系统虽然目前有效运行,但无法扩展到ZK Stack在接下来的几年计划支持的大容量、几近实时的交易。我们对这些系统的未来是这样设想的:证明可以低成本、快速地生成和验证,从而实现超链之间的快速最终性和互操作性。

证明系统的性能直接影响用户为其交易支付的价格,随着时间的推移,这些成本需要趋近于零。当前版本的证明系统的性能足以用于构建zkEVM,并在短短几个月内处理数百万笔交易,但有了Boojum,我们可以做得更好!

为了测量网络的证明生成时间(以及与性能相关的其他关键指标),我们与Celer达成合作,Celer是一个在基准测试和分析多证明系统领域具有丰富经验的团队。你可以从下图看出Boojum的性能明显优于大多数系统。结果不言自明:我们的部署展示了世界级的证明性能,据我们所知,这是投入应用的最快的证明系统。

为了进行同类比较,Celer对基于CPU的prover执行了这些基准测试,但我们的主网系统使用的是更快的基于GPU的prover。

详解Boojum升级:zkSync Era为何选择STARK证明系统

 

向基于STARK的证明系统转变将带来性能的显着提升,并将有助于确保低延迟的最终结果,并支持zkSync Era和其他基于ZK Stack的系统上增加的活动量。

(2)降低去中心化的硬件要求

鉴于这不是我们优化的唯一指标时,这些性能结果尤其令人印象深刻——我们希望在提高系统性能的同时降低系统运行的硬件需求。

当今流行的证明系统,包括我们现有的证明系统,明显对硬件要求都很高。我们目前的验证系统运行在一个A100 GPU集群上,每个GPU都有80 GB RAM。这种对昂贵、强大的机器的需求对我们的目标构成了重大障碍,我们的目标是实现一个用户驱动的、去中心化的证明生成的未来。要实现这一目标,仅仅使证明生成无需许可是不够的;用户还应该无需昂贵的机器和数百GB的RAM。

这是我们取得巨大进步的又一个领域!我们在Boojum中使用的GPU prover只需要16GB RAM,这样的低门槛是我们迈向未来愿景的重要一步。基于CPU的验证在低至64 GB RAM(我们希望可以低至32 GB)的情况下也是可能的,并且可以最大限度地利用现代多核处理器。在我们完全迁移到新的证明系统后,我们将发布更多关于其去中心化计划的信息。

最后,基于Rust的zkSync Era排序器已每秒可处理100多笔交易(TPS)。新证明系统的推出不仅提高了性能,还降低了硬件要求,使其成为排序器的理想助力。Boojum的性能提高也意味着系统可以更快地证明交易,并且硬件要求的降低让网络可以访问更低成本的机器,从而提高了水平可扩展性。

3、Boojum的主网之路

团队已经为该升级连续工作了几个月,我们很高兴现在终于可以把系统带到主网上。我们也想分享一下到目前为止的一些故事。

(1)升级zkSync Era

首先,来简单介绍一下我们是如何执行这样的升级的。首先,zkSync Era的设计使我们能够随着时间的推移升级每个组件,证明系统也不例外。

与以太坊类似,我们使用Merkle(默克尔)树数据结构来存储有关网络状态的信息。这些信息是证明系统需要的,因为我们正在证明关于系统状态的陈述。这个Merkle树(以及证明系统与之交互的方式)的一个关键设计决策是使用非代数哈希函数,特别是Blake2s。如果我们纯粹是为了简化证明生成而进行优化,我们会使用代数哈希函数(例如Poseidon2),但这种选择会将可观察状态与证明系统参数耦合起来——比如素数域的选择。任何对证明系统的升级都需要对状态进行完全regenesis,这对zkSync Era的用户来说将是一个巨大的颠覆性体验。我们升级我们的证明系统所需要做的只是在电路内重新部署Blake2s。

(2)Boojum:从设计到审查

大约一个月前,我们开始集中力量在一个完整的端到端版本的新证明系统的实现上,考虑到这个更新的复杂性和系统正确性的重要程度,我们开始进行一系列的内部和外部审计。

zkEVM电路和Boojum算法库当时仍在积极开发中,但我们与外部安全审计员合作,他们专注于与主电路和Boojum组件的可靠性相关的潜在问题的早期识别。我们展开紧密合作,在他们(使用自动和手动方法)审查和测试zkEVM电路和Boojum相关工具时,为他们提供源代码和文档的完整访问权限。通过这种伙伴关系,我们能够解决许多早期问题。

(3)Boojum:从审查到测试

如今,我们进入了计划的下一步:主网影子模式!我们很高兴现在能够与现有的证明系统一起运行新的证明系统,尽管Boojum还只处于测试阶段。我们已经在为主网区块生成和验证“影子证明”。

zkSync Era的主网版本不需要影子证明——它将继续由现有的证明系统提供支持。我们只是验证这些影子证明,以进一步测试和优化系统,但使用的是来自zkSync Era用户活动的真实生产数据。

我们也很高兴能够公开进行这项测试,在接下来的几周内,你将在区块浏览器中现有的证明信息旁看到关于这些影子证明的一些信息的链接,我们正在开源一个CLI工具,任何人都可以使用这个工具来验证新的证明。

我们现在尤其专注于测试新的证明系统,并且还不打算在以太坊上验证影子证明。在测试阶段,影子证明的验证将在链下完成,我们会寻找边缘情况和bug,并继续进一步审查实施情况。

我们如今还开放了Boojum代码库的源代码。请注意:代码库仍在进行中!随着测试的深入,你可能还会看到大量的调整、优化、修复和文档改进。我们还将在未来几周开放几个更有趣的代码库,包括更新的电路和GPU prover。

(4)Boojum:从测试到迁移

我们所做的一切都将安全性放在首位。只有当我们对新系统的测试完全满意时,我们才会考虑迁移,我们将在未来几周和几个月内分享更多细节。我们还计划进行进一步的审计和安全审查,这个令人兴奋的升级即将全面实现,而当前的证明系统已弃用。

我们相信,Boojum,再加上我们对创新和用户至上设计的承诺,是迈向更安全、更可扩展、更高效的zkEVM的下一步。