Technical explainer: Halo on Zcash中文翻译

  1. 前言

原文链接:Technical explainer: Halo on Zcash - Electric Coin Company Technical explainer: Halo on Zcash

技术解析: Halo on Zcash
在翻译之前必须要说明一下,当前 zcash 有三个版本代号,一个是 Sprout, Sapling , 以及即将部署的 Halo2。 每个版本都有对应的代码和响应的匿名矿池地址,因此后续 翻译时将直接使用这些代号。

我们很自豪的介绍 ZIP224 这个版本的功能,他提供了将halo2 引入到 zcash 网络的一 个途径。 Halo2 零知识证明系统,
由 ECC 公司发明并开发,移除了初始信任设置,减少了zcash协议攻击面,提高 ZEC供 应总量完整性的保证。

作为Halo2 零知识平台的第一个发布, 这将使得未来的环形升级不需要信任设定的仪 式成为可能, 使得zcash 匿名协议能更加敏捷的适应未来的升级,比如发行其他的资 产。 除此之外,当前版本打开了聚合证明和区块链简洁之路, 这两项扩展性的提升, 使得 Zcash协议能够与时俱进。

  1. 一个Zcash协议功能提案

Zcash 中的 Halo2 部署的第一阶段引入了一个新的 匿名交易协议, 这使得创建第一个 匿名的转账能力不需要依赖与信任设定。 这个协议提供的功能,将会非常类似于来自Sapling版本提供的那样,然而,凭证系统 将使用Halo2 技术栈。

这个发布包含了新的椭圆曲线周期,Pallas 和 Vesta 周期, 他们一起被称之为 Pasta 曲 线。 Pasta 曲线, 一个新的加密结构,这是ECC持续努力的结果,以确保Zcash能够从 突破性的密码学发明中尽可能地多收益,这些创新同时提高了安全性和性能。

Mir 协议 和 Mina项目采用(之前的 Coda)已经采用了 Pasta曲线, 并且Mina已经为 Pasta 曲线在 Ledger中集成,该集成已经被提交给 Zondax,以用于将来的 Zcash Ledger 集成。开始在 账本整合中派上用场,这已经被提交到 Zondax 中,供未来 Zcash

账本整合用。 他们也被包含在Arkworks Rust库中。

这个 ZIP 发布包引入一个一个新的匿名地址格式,使用 Pasta曲线,和一个新的匿名 池。 这个协议设计的特性和匿名特性是故意和Sapling版本保持同一,目的是为了限制 技术上的风险,并且简化用户体验和易用性。 在新协议和实施准备就绪之前,将委托 第三方进行审核,以增强对新协议和实施安全性的信心。

  1. 新的匿名池

如果这个协议被激活, 这个 ZIP发布将会为Zcash创建第三个匿名池,为了表示我们Zk- SNARK技术栈的连贯性,第一个匿名池被称为 Sprout, 第二个匿名池被称为 Sapling。 新的匿名池将会被一个匿名池十字旋转门保护着,正如这个旋转门的之前是 为了在Sprout 和 Sapling 池之间过渡的那样。 我们将逐步淘汰旧的匿名池,这样的设 计就使得我们可以部署新的匿名技术时,将秘密学和工程上的风险降到最低。 这鼓励 我们迁移到一个无信任的证明系统当中,增强了人们对于zcash 供应量合理性完整性的 信任,同时降低了实现的复杂性以及zcash的攻击面。

在 Canopy 网络升级过程中, 我们部署了 zip 211,禁用往旧的 Sprout匿名池中增加新 币的功能。类似的,在 Zip224 被激活之后,未来有新的网络要升级,我们的意图是部 署ZIP219,也会类似的禁用往旧的Sapling匿名池中添加新币功能。
当前这个 Sprout匿名池往-To-Sapling匿名池迁移的工具将会被升级,从激活之后起将 支持从Sprout匿名池到 Halo匿名池的迁移,也支持从 Sapling 匿名池到 Halo 匿名池的 迁移。

  1. 减少元数据泄露

考虑到Sprout和Sapling升级的过程中的一些经验, 当前这个zip包含了一些改变,目的 是为了减少一部分未加密交易过程中元信息的泄露。 这一功能通过将输出和花费合并 到一个互相无法区分的动作中,是通过对一个交易中的所有动作使用一个单一的锚来 实现的。

  1. Zcash 未来凭证

在 Sapling 版本中,当前激活的协议是 Grouth16, 最小但却是最高效的可验证的零知 识证明构造。当前 zcashd中,这些证明容量小于 200 byte,单独验证一笔交易大约需 要7-10毫秒。 对于我们当前使用的网络规模来说已经足够了,这个验证时间在网络延 迟噪声容限内。 然而,即使在某种程度上,这还是不够的,尤其考虑到 zcash扩展性 的一些使用场景当中,比如UDA用户自定义资产这个情景中。

当我们讨论,zcash中可接受的验证时间和交易容量大小时,数量级并不是成败的关 键,然而 我们需要的凭证是即能支持技术上的扩展性和可编程性,比如在凭证中承载 数据。 这些技术允许凭证汇总在一起处理,并摊销凭证验证时间。 从而使得每个交易的验证成本和交易容量大小以指数级减少。 除了非常有限的情况之外,我们现有的凭证无法支持上述所有这些技术。而我们在 Halo2 上实现的东西,不仅仅支持上面的这些技术操作,而这些操作是实现扩展性必 不可少的工具,但是甚至是没有这些工具的情况下,我们现行凭证的大小和单一凭证 的验证时间依然足以应对 zcash 在短期内的使用。

通过移除对于初始信任设置的需要,当前zip包即缓解了人们对于初始设定流程安全的 担忧,也确保了在将来任何新的变动都不再需要这个MPC 的信任设定仪式,比如引入 UDA(用户自定义资产,即发行新的 token)特性。 这一特性使得这些更新将很容易 在zcash网络中实现, 同时还会降低未来升级的成本和风险以及时间。

与当前的 Groth16ping凭证相比,Halo依赖于更弱复杂性更低的密码学假设,后者依赖 于基于配对的密码学。 即使没有紧急的原因使得我们对于zcash网络当前使用的BLS12- 318配对协议产生担忧,但是能够使用更低安全性的假设是欢迎的。

Zcash 的扩展性的实现,需要对Zcash当前彼此相关的协议进行大规模的重新设计,而 不仅仅是在 Zcash 上实现 Halo2那么简单。
Halo2 将成为设计这些协议的核心组件。 在不久的将来,我们将会利用Halo2的特性 通过交易聚合的方式去,减少链上带宽和验证时间。 最终,这些特性还可以使我们实 现一个完全简洁的区块链,实现近乎实时的同步,对于轻量级客户端提供全节点级别 的安全保证。

  1. 性能

从开发Halo2的那一刻起,我们就一直在努力的做着,以确保我们可以解决扩展性上的 挑战以及移除信任设置,同时不会以任何有意义的方式降低性能。从计算方面讲,我 们相信Halo2和Sapling比也有竞争力,甚至可能优于Sapling,即使交易量会更大。 此 外,Halo2 的积聚以及聚合功能,将使得我们在未来的可扩展版本中大大降低交易体 积。

Halo2在匿名交易的构建相比于使用Groth16凭证系统构而言会看起来有一点不同。 Halo2 无需像Groth16 那样对每一个花费和输出描述创建几个单一的凭证,而是并行的 创建所有的凭证,因此他们可以分摊交易体积和花费的时间。 只有单一凭证的交易粗 略的计算有几kb大小,但是额外的凭证材料的边际大小要小的多,边际验证时间微不 足道。 上述的这种匿名交易中可以包含数 kb 的备注数据,这并不意味对交易大小有 显著的增加。

单个线程验证一个单独的交易需要30毫秒的时间,对于单个凭证验证而言,比Groth16

差一些。 但是与需要大量串行操作的Groth16凭证不同,我们的凭证完全可以并行的验 证,并且可以根据可用线程数进行扩展。Halo2 中 只要 3-4 个线程并行处理,这个时 候的性能接近Groth16的水平了,如果有更多线程,那 Halo2在zcash网络中的表现会更 加的优异。

  1. 具体实现

在本节中,我们将细分针对不同类别用户的关键实现说明。
通常来说, 对于所有类型的使用者来说, 这个特性的升级增加了新的错误或者未预料 到的设计上的瑕疵的风险, 这对于任何网络升级功能都是如此。 此外,由于Sapling仍 将是活动池,因此在激活包含ZIP 224的网络升级时,不需要任何特定的操作项目即可 继续使用Sapling地址或与Sapling匿名地址集成,而不是升级到Zcashd的支持版本或我 们的移动钱包SDK,那些直接依赖Zcashd或我们的钱包SDK的用户,以及对最终用户体验 没有复杂需求的用户,应该有一个相对简单的实现。

6.1 对于矿池运营人员

为了使用 新的 zip224 的地址作为新的匿名地址, 运营人员仅仅需要在生成地址的时 候响应的添加 -mineraddress 这个参数就行。 对于那些使用新的 zip224 匿名地址作为 收款人时,矿池运营人员不需要做任何改变即可发送。

6.2 钱包供应商

那些使用我们 sdk 的钱包供应商,比如NightHawk 和Unstoppable 版本的人来说,只需 要升级一下对应支持的版本就好,将会自动获得 zip224 新发布的特性。用户界面代码 中需要进行其他工作以容纳ZIP 224地址。

6.3 交易所和硬件钱包用户

交易所比如Gemini这样支持Sapling版本匿名提现地址的,将需要添加对zip224格式地 址的支持。 Zondax方面也需要对于Ledger整合的支持,然而Mina方面已经为使用Pasta曲线的项目 做了支持,这将有助于Zondax的工作。

6.4 开发者方面

ZIP 224的实施得益于ECC的密码学工程专业知识,这是通过多个部署级别的ZKP技术产 生的。 结合ECC在匿名地址钱包的 SDK 所作的努力, 我们相信这个更新的技术将会比 当前 Zcash Sapling版本的部署和整合上更加容易

6.5 当前zec持币用户

对当前 zec 持有人可以使用上文中提到的迁移工具或者现在在用的那个标准的转账机 制将它们的资金迁移到新的匿名池中

6.6 区块链浏览器
区块浏览器必须更改他们处理zcash 总供应量计算的方式,并相对应的解析和显示有关

ZIP224转账的详细信息。

1 Like