Zcash halo2 背后技术衍化介绍

1. 引言

自2019年起,ECC团队就在为2021年Zcash的扩展性进行了相关预研,最主要的研究成果就是Halo,作为一种新型的zk-SNARK方案,其解决了Zcash中的2个主要问题:

  • 在保证了性能的前提下,移除了trusted setup;
  • 支持隐私数字支付的可扩展框架。

Halo论文见:《Recursive Proof Composition without a Trusted Setup》,也可参见本人博客:

在Halo的基础上,构建了 Halo2 —— 由Rust语言编写的高性能zk-SNARK实现,在该实现中,在消除了trusted setup的同时保证了Zcash的可扩展性。

2. Halo 2 背后的技术

2.1 Sonic

在2019年,Sean Bowe 联名发表了《Sonic: Zero-Knowledge SNARKs from Linear-Size Universal and Updateable Structured Reference Strings》论文,在Sonic协议中,两个主要的元素为:【借助这2个元素,Sonic可 use a polynomial commtiment scheme为任意计算创建零知识证明。】

  • 1)polynomial commitment scheme 【Halo论文中改进了,实现了支持aggregation的基于inner product argument的polynomial commitment scheme。】
  • 2)Polynomial IOP 【Marlin 和 Plonk 论文中改进了,Plonk改进的Polynomial IOP具有更高的灵活性和更优的效率。】

目前polynomial commitment scheme方案中,效率最高的基于pairing group的需要trusted setup,Sonic主要关注的是需要trusted setup的polynomial commitment scheme 方案。

然而,还有一个分支是Bulletproofs 中 基于inner product argument 的polynomial commitment scheme方案。在该方案中,无需trusted setup,具有相对较小的proof size,但是代价是verification性能很差。

2.2 Halo——支持aggregation的基于inner product argument的polynomial commitment scheme

Halo 论文中,详细介绍了基于inner product argument 构建的polynomial commitment scheme,同时实现了一种前所未有的aggregation技术。借助该aggregation技术,大量独立创建的proofs的验证时间 与 验证一个单独proof的时间 相当。使其成为比Zcash现有zk-SNARK更优的方案。

Halo 论文中描述了递归证明组合(recursive proof composition)的一种具体表现形式,它将Sonic论文中描述的Polynomial IOP剥离出来,用基于inner product argument的polynomial commitment scheme 代替了 基于pairing的polynomial commitment。

所谓recursive proof composition是指:

  • 允许借助一个proof 来证明 几乎无数量上限的其它proofs 的正确性;
  • 可有效地压缩大量的计算(和信息)。
    【Recursive proof composition holds the potential for compressing unlimited amounts of computation, creating auditable distributed systems, building highly scalable blockchains and protecting privacy for all of humanity. The concept is a proof that verifies the correctness of another instance of itself, allowing any amount of computational effort and data to produce a short proof that can be checked quickly.】

recursive proof composition是可扩展Zcash的一个基本组件,其不仅支持水平网络扩展,同时允许少量参与者信任网络其余部分的完整性。

在Halo方案之前,为实现recursive proof composition,需要大量的计算开销和trusted setup。
而在Halo中,在上面提及的aggregation技术基础之上构建了“nested amortization”技术,使得:

  • 可使用基于inner product argument的polynomial commitment scheme来实现相应的recursive proof composition。
  • 大幅提高了性能。
  • 避免了trusted setup。

随后,一组科学家在2020年论文《Proof-Carrying Data from Accumulation Schemes》将Halo中的这种recursive proof composition技术 归纳为 “accumulation scheme”,并对其进行了安全证明。“accumulation scheme” 这个新称呼,表明了Halo中的“nested amortization”技术的实际工作原理——即通过给“accumulator(累加器)”添加proofs(这些proofs是关于累加器的先前状态的),使得我们可以通过检查累加器的当前状态来检查所有先前证明是否正确(通过归纳)。

2.3 Marlin and Plonk——改进的Polynomial IOP具有更高的灵活性和更优的效率

尽管Halo中实现了无需trusted setup的recursive proof composition,但是其运行速度仍然无法满足要求。

Halo同期,有很多其它团队发现了效率优于Sonic的新的Polynomial IOPs,比如 Marlin。这些 Polynomial IOP 方案中效率最优的是 PLONK

PLONK为设计基于应用程序特定需求的高效实现提供了极大的灵活性。PLONK的这个特性对于制作更高效的Halo版本至关重要。

3. Halo VS Halo2

在这里插入图片描述
Halo2相比于Halo的最大区别是,用Plonk中的效率更优的Polynomial IOP方案替换了Sonic中的Polynomial IOP。

即Halo中使用Sonic方案来验证交易,Halo2中使用Plonk来验证交易。Plonk的效率优于Sonic,Plonk可以更少的gates来表示更复杂的circuit。

Halo背后的新思想已被recursive SNARK项目采用,如Coda(Pickles)和 Mir(Plonky)。

  • Halo方案代码实现:https://github.com/ebfull/halo
  • Halo2方案代码实现:https://github.com/zcash/halo2

4. Halo2 的目标

Halo2的目标是:
为接入Zcash协议,建立一些符合社区标准的东西。

在Halo2的实际实现过程中,不仅会采纳往年出现的新想法,还将采纳团队在此过程中发现的积极优化和新技巧,其中一些正在努力形成完善相应的文档以发布到社区。

Halo2 得到了以太坊基金会12万美金的支持,由ECC团队全力开发,计划将于2021年早期移除trusted setup,同时将来recursive proof的支持将为Layer 1 的可扩展性奠定基础。

实现新的前沿技术的过程是一个漫长的过程。它包括科学的同行评审、工程、第三方安全审计和测试,以确保安全。ECC有安全部署创新技术的记录,我们知道这项工作需要协作。从开源Halo,到与以太坊基金会合作,再到研究未来的实现,协作是我们工作的核心。

5. Halo2 的意义

在Sapling升级中,大幅提升了Zcash的性能,并使得第三方钱包和交易所首次使用了Zcash的shielded技术。

由于Zcash从Bitcoin代码库分叉而来,底层本身不具备可扩展性。
借助Halo2技术,可允许在无需trusted setup的情况下进行电路升级,使得Zcash的shielded协议在未来的改进中更加灵活,如:
支持诸如用户自定义资产(UDAs)之类的附加资产。

同时,也有利于其它项目或tokens也可受益于Zcash的通过加密实现隐私的特征。

借助Halo2,可解锁Zcash在Layer 1层面的可扩展性。

参考资料

[1] Zcash协议说明书
[2] Zcash Orchard feature 设计说明书 【Orchard 为a feature proposal,而不是network upgrade。Orchard 是伴随着Zcash Canopy升级的feature proposal。】
[3] Zcash Halo2 设计说明书
[4] ECC 2020年9月1日 博客 ECC releases code for Halo 2
[5] ECC 2020年9月1日 博客 Explaining Halo 2
[6] ECC 2021年1月8日 博客 Bringing Halo 2 to Zcash

猜你喜欢

转载自blog.csdn.net/mutourend/article/details/114059130