1. 引言

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

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

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

  • Halo: Recursive Proof Composition without a Trusted Setup 学习笔记
  • Halo——zcash新的零知识证明机制,无需Trusted Setup
  • Halo代码解析

在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

Zcash halo2 背后技术衍化介绍相关推荐

  1. 首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底

    摘要: 想要快速实现直播能力,并对原有业务不产生任何影响,依托如阿里云一样的直播平台,来搭建移动直播系统,将技术难题交给阿里云,把更多的精力放在核心业务的本身,是最为稳妥和高效的选择.本文介绍阿里云直 ...

  2. 知识图谱技术原理介绍

    作者:王昊奋 近两年来,随着Linking Open Data[1] 等项目的全面展开,语义Web数据源的数量激增,大量RDF数据被发布.互联网正从仅包含网页和网页之间超链接的文档万维网(Docume ...

  3. GPU加速技术原理介绍

    GPU加速技术&原理介绍 1.GPU&CPU GPU英文全称Graphic Processing Unit,中文翻译为"图形处理器".与CPU不同,GPU是专门为处 ...

  4. 【云周刊】第156期:首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底...

    本期头条 首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底 关注直播行业的人都知道, 2016年是移动直播的元年,那一年,网红被我们挂在嘴边,直播平台数量呈大规模增长.模式从最开始的秀场直播 ...

  5. 猿学-OCR的应用锦集及背后技术

    今天分享的主要是OCR的部分.分享腾讯云在OCR上做的一些工作,以及腾讯云目前在云上面开放的OCR的一些服务.OCR简单来说就是让机器能看懂写的文字.我们手写的文字比较复杂,什么样子的都有.印刷的文字 ...

  6. 冀永楠:OCR的应用锦集及背后技术

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云加社区技术沙龙 发表于云+社区专栏 演讲嘉宾:冀永楠,现为腾讯云大数据AI产品中心高级研究员.负责了腾讯云与华星光电等多个图像AI项 ...

  7. 网路摄像头技术参数介绍

    网路摄像头技术参数介绍 星光级图像传感器 4MP (2592 × 1520) @30fps SmartH.265 / H.265+ / H.265 / SmartH.264 / H.264+ / H. ...

  8. 北工大计算机学院教授,北工大计算机学院计算机科学与技术导师介绍:杨宇光...

    北工大计算机学院计算机科学与技术导师介绍:杨宇光本站小编 免费考研网/2016-07-26 一.基本情况 杨宇光,女,1976年3月出生,博士,博士生导师,中国密码学会会员,2006年获得北京邮电大学 ...

  9. 北工大计算机学院教授,北工大计算机学院计算机科学与技术导师介绍:周艺华...

    北工大计算机学院计算机科学与技术导师介绍:周艺华本站小编 免费考研网/2016-06-21 一.基本情况 周艺华,男,1969年3月生,博士,副教授,学术学位.专业学位硕士生导师,信息安全学科部教师, ...

最新文章

  1. 吊打 ThreadLocal!
  2. ELK学习总结(1-1)ELK是什么
  3. 【Vegas原创】GridView跨页选择多行数据,并循环添加一行DataSet数据
  4. String 是值类型还是引用类型
  5. Docker部署SpringCloud ELK+RabbitMQ日志
  6. BAT命令手动_自动启动和禁用服务
  7. 硬件工程师相关书籍整理
  8. maven-maven使用-P参数打包不同环境
  9. 2021苏州大学计算机考研分数,2021苏州大学考研分数线已公布
  10. 播布客里小布老师的所有视频收集
  11. 怎么裁剪PDF页面,PDF如何调整页面大小
  12. Android原生OS风格ROM包,小米5S 的LineageOS14.1刷机包 安卓7.1.1原生风格 20180203更新...
  13. html5对电脑配置要求,bim软件对电脑配置要求高吗
  14. 海量向量搜索引擎 Milvus 开源啦
  15. 文本深度表示模型——word2vecdoc2vec词向量模型(转)
  16. 【Bug(未解决)】正在连接servername...无法打开到主机的连接。 在端口 25: 连接失败
  17. WMS多仓库调拨模块设计
  18. 均值滤波计算_均值滤波器
  19. HTML/CSS: 浅谈a标签及伪类选择器
  20. html实现文本框透明度,CSS透明实现方法

热门文章

  1. 当这个类被修饰public的话,为什么源文件名必须要与类名相同
  2. Python入门自学进阶——9-网络编程-远程执行命令
  3. 用tkinter写一个简陋版的扣一佛主陪你笑,敲木鱼功德+1(附带源码)
  4. 动力节点老杜javaweb笔记丰富总结
  5. 广播(Broadcast)的简单用法
  6. 不会吧,你开发直播卖货软件源码时,不用PHP写后台?
  7. layui的html页面支持转jsp吗,layui jsp
  8. Linux:cutycapt html转jpg、png、pdf
  9. medium,我常看的技术网站
  10. 远程服务器架构,.NET远程处理框架详解