美文网首页
20210113 Halo On Zcash中文翻译

20210113 Halo On Zcash中文翻译

作者: 李荣强Justin | 来源:发表于2021-01-13 09:01 被阅读0次

0. 前言

原文链接:https://electriccoin.co/blog/technical-explainer-halo-on-zcash/
Technical explainer: Halo on Zcash
技术解析:Halo on Zcash
在翻译之前必须要说明一下,当前 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版本保持同一,目的是为了限制技术上的风险,并且简化用户体验和易用性。 在新协议和实施准备就绪之前,将委托第三方进行审核,以增强对新协议和实施安全性的信心。

2. 新的匿名池

如果这个协议被激活, 这个 ZIP发布将会为Zcash创建第三个匿名池,为了表示我们Zk-SNARK技术栈的连贯性,第一个匿名池被称为 Sprout, 第二个匿名池被称为 Sapling。 新的匿名池将会被一个匿名池十字旋转门保护着,正如这个旋转门的之前是为了在Sprout 和 Sapling 池之间过渡的那样。 

我们将逐步淘汰旧的匿名池,这样的设计就使得我们可以部署新的匿名技术时,将秘密学和工程上的风险降到最低。 这鼓励我们迁移到一个无信任的证明系统当中,增强了人们对于zcash 供应量合理性完整性的信任,同时降低了实现的复杂性以及zcash的攻击面。

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

3. 减少元数据泄露

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

4. 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的特性 通过交易聚合的方式去,减少链上带宽和验证时间。 最终,这些特性还可以使我们实现一个完全简洁的区块链,实现近乎实时的同步,对于轻量级客户端提供全节点级别的安全保证。

5. 性能

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

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

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

6. 具体实现

在本节中,我们将细分针对不同类别用户的关键实现说明。
通常来说, 对于所有类型的使用者来说, 这个特性的升级增加了新的错误或者未预料到的设计上的瑕疵的风险, 这对于任何网络升级功能都是如此。 此外,由于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转账的详细信息。

7. 译者注

如果翻译上有啥不妥的地方,还请大家多多指正

email: lrqstudy@gmail.com
twitter: https://twitter.com/lrqstudy

相关文章

  • 20210113 Halo On Zcash中文翻译

    0. 前言 原文链接:https://electriccoin.co/blog/technical-explain...

  • 20210118Bring Halo2 To Zcash中文翻译

    Bring Halo2 to Zcash(Zcash on Halo2简介) 翻译,原文来自origin from...

  • 20211217zcash主网升级再次跳票

    20211217zcash主网升级再一次跳票 早上醒来就又看到一个bad news,期待已久的zcash halo...

  • Zcash NU5 升级

    Zcash 计划于 2021 年 10 月 1 日发布 迭代产品套件 Halo Arc,包括对 Zcashd (Z...

  • Halo2

    Halo2是Zcash协议在Orchard升级中将要采用的零知识证明系统,无需可信设置,可以实现递归证明。 基本概...

  • Java企业级开源项目

    Java企业级开源项目 halo:https://github.com/halo-dev/halo Hutool:...

  • zcash难度调整算法

    zcash的难度调整算法在zcash的协议文档(Protocol Specification)p37,6.4.3 ...

  • GitHub上最热门的Java开源项目

    1halo https://github.com/halo-dev/halo Star 6139 这是一个轻快,简...

  • zcash

    ZCASH是基于bitcoin,加入了零知识证明加密交易信息,具体理论原理不在本文范围,读者可以参考zcash白皮...

  • 20210113

    一觉 看着这两天遇到的一些事,拍头就在倒放它们,这才明白自己天天急着处理事情、急着说话、急着挣钱、急着证明自己。 ...

网友评论

      本文标题:20210113 Halo On Zcash中文翻译

      本文链接:https://www.haomeiwen.com/subject/kvzyaktx.html