1. 引言

2019年是ZKP方案创新井喷的一年。

2019年10月,Chiesa在#zk0x04上的分享 State of the SNARG-scape - Alessandro Chiesa (UC Berkeley, StarkWare, Zcash),有:

根据reference string的类型,可将zk-SNARKs分类为:

所有zk-SNARKs底层都使用以下3种compilers之一:【下图颜色与上图颜色对应】

  • Preprocessing SNARK compiler
  • DARK compiler
  • traditional compile(即基于static circuit specific reference strings的zk-SNARK方案)

截止到2019年底,主要的ZKP方案有:

  • 1)Groth16:见Jens Groth 2016年发表论文 On the Size of Pairing-based Non-interactive Arguments。
    Groth16为当前已知的最快最小的zk-SNARK。已用于Zcash。
    Groth16为non-universal的,其setup与某个指定circuit紧密关联。由于其速度快和proof size小,很多新的zk-SNARK都会对Groth进行对比。
  • 2)Sonic:为早期的通用zk-SNARK协议。见Mary Maller等人2019年论文Sonic: Zero-Knowledge SNARKs from Linear-Size Universal and Updateable Structured Reference Strings。
    Sonic支持universal且updatable common reference string。
    Sonic proof size为constant的,但验证开销昂贵。
    理论上,可打包验证多个证明以实现更好的性能。
  • 3)Fractal:见Chiesa等人2019年论文Fractal: Post-Quantum and Transparent Recursive Proofs from Holography。
    Fractal无需pairing-friendly椭圆曲线,且支持递归。
    通过对电路进行预处理,可在transparent setup的情况下实现succinct verification。
    Fractal的proof size当前为250kB,比其它方案要大,后续该size将进一步降低。
  • 4)Halo:见Sean Bowe等人2019年论文Recursive Proof Composition without a Trusted Setup。
    Halo为无需trusted setup,支持递归证明组合的zk-SNARK方案。递归采用“nested amortization”:基于cycles of elliptic curves 重复压缩多个证明。
    Halo的verification time为linear的,使得其verification不是succinct的。但是后续可进一步改进。
  • 5)SuperSonic:见Bunz等人2019年论文Transparent SNARKs from DARK Compilers。
    SuperSonic为对Sonic的改进。
    SuperSonic是具有实用prover time、近似logarithmic proof size以及实用verification time的首个transparent zk-SNARK。
  • 6)Marlin:见Chiesa等人2019年论文Marlin: Preprocessing zkSNARKs with Universal and Updatable SRS。
    Marlin为对Sonic的改进。
    Marlin的prover time要比Sonic快10倍,Verification time也比Sonic快4倍。
  • 7)Plonk:见Gabizon 2019年论文PLONK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge。
    Plonk为对Sonic的改进。
    Plonk的prover time比Sonic快5倍。
  • 8)STAKR: 见Ben-Sasson等人 2018年论文《Scalable, transparent, and post-quantum secure computational integrity》。

相应的性能对比为:

通常来说:

  • 1)transparent setup方案具有更大的proof size;
  • 2)Halo的Verification time为非constant的;
  • 3)Groth16在proof size和runtime方面,仍具有无可匹敌的优势。

根据https://github.com/matter-labs/awesome-zero-knowledge-proofs有:

SNARKs STARKs Bulletproofs
Algorithmic complexity: prover O(N * log(N)) O(N * poly-log(N)) O(N * log(N))
Algorithmic complexity: verifier ~O(1) O(poly-log(N)) O(N)
Communication complexity (proof size) ~O(1) O(poly-log(N)) O(log(N))
- size estimate for 1 TX Tx: 200 bytes, Key: 50 MB 45 kB 1.5 kb
- size estimate for 10.000 TX Tx: 200 bytes, Key: 500 GB 135 kb 2.5 kb
Ethereum/EVM verification gas cost ~600k (Groth16) ~2.5M (estimate, no impl.) N/A
Trusted setup required? YES

ZKP方案衍变及对比相关推荐

  1. Android移动应用ALL IN ONE架构衍变

    这篇文章更多表达的是一种对架构的思考:我们是否保持一颗开放.积极的心态去拥抱变化.我们不可能在市面上找到适合我们的架构,脱离业务谈架构是没有任何意义的,适合业务的才是好架构.真正好的架构源于不停地衍变 ...

  2. 【Android】移动端二维码扫描解决方案衍变

    移动端二维码扫描解决方案衍变 目录 踩坑&方案 方案选择 Zxing方向 Hms ScanKit方向 总结 目录 踩坑&方案 Zxing yyds? no,no,no -> Sc ...

  3. 存储服务器在监控中的作用,监控项目中存储服务器IPSAN云存储方案的优劣势对比...

    <监控项目中存储服务器IPSAN云存储方案的优劣势对比>由会员分享,可在线阅读,更多相关<监控项目中存储服务器IPSAN云存储方案的优劣势对比(4页珍藏版)>请在人人文库网上搜 ...

  4. 数据库审计方案简介和功能对比

    文章目录 数据库审计方案简介和功能对比 1. MySQL自带日志功能 1.1 普通日志 1.2 通过慢日志 2. 数据库插件形式 2.1 Oracle MySQL 企业版审计插件 2.2 Percon ...

  5. 架构衍变过程----58同城沈剑:好的架构源于不停地衍变,而非设计

    [编者按]对很多创业公司而言,随着业务增长,网站的流量也会经历不同的阶段.从十万流量到一百万流量,再从一百万流量跨越到一千万甚至上亿的流量,网站的架构需要经历哪些变化?在"OneAPM 技术 ...

  6. DataScience:数据处理技术之针对时间序列数据衍变—构造时间滑动窗口数据的简介、代码实现、案例应用之详细攻略

    DataScience:数据处理技术之针对时间序列数据衍变-构造时间滑动窗口数据的简介.代码实现.案例应用之详细攻略 目录 时间滑动窗口数据的简介

  7. Linux 高可用开源方案 Keepalived VS Heartbeat对比

    1)Keepalived使用更简单:从安装.配置.使用.维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat2.1.4后拆分成3个子项目,安装.配置.使用都 ...

  8. Linux-HA 高可用开源方案 Keepalived VS Heartbeat 对比

    两款高可用开源方案:Keepalived和Heartbeat.两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考. 1)Keepalived使用更 ...

  9. MySQL索引的底层数据结构衍变史

    原文链接,本文重新排版优化 目录 1. MySQL为什么要建立索引? 2. 可选数据结构 2.1 Hash结构(自适应哈希索引) 2.2 有序数组 2.3 二叉树结构 2.3.1 二叉树的增删(简单举 ...

最新文章

  1. linux系统版本间的区别是什么?内核又是什么
  2. Rsync+inotify搭建使用
  3. POJ 3614-Sunscreen
  4. 全新玖五社区系统整站源码
  5. 企‮增业‬长‮两的‬种方式:内‮式生‬增长、外‮式延‬增长
  6. 百倍性能的PL/SQL优化案例(r11笔记第13天)
  7. LeetCode每周刷题(2019.6.24-2019.6.30)
  8. node.js 执行JS文件连接数据库报错
  9. 基于fpga的256M SDRAM控制器 【内含256m sdram仿真模型】
  10. 加域电脑激活指纹识别
  11. 突破软件测试的瓶颈(上)
  12. 第三方qq登录(获取头像和昵称)
  13. 【附源码】计算机毕业设计SSM校园流浪猫关爱系统
  14. kafka:工具:kafkaTool 使用方法
  15. 安徽公务员计算机专业科目真题,公务员计算机专业真题+答案安徽省考 安徽省公务员考试...
  16. 程序人生--2010年(60)
  17. tuxedo错误码6_TUXEDO错误解析
  18. 计算机管理中无网络适配器,Windows10设备管理器中没有网络适配器如何解决
  19. C语言集锦(一) C代码生成图片:BMP、PNG和JPEG
  20. 把excel中的数据粘贴到oracle

热门文章

  1. 成事的百条铁律(41-60)
  2. 从业DBA以来的那些事儿
  3. 【智能路由器】基于netfilter的高效广告植入(非代理方式)
  4. Python之openpyxl处理excel数据
  5. Zetta Jet再接收一架Global 6000商务喷气机,继续为全球乘客提供搭乘舒适体验
  6. java使用extends关键字_Java之extends关键字
  7. Web前端开发精品课HTML CSS JavaScript基础教程第十四章课后编程题答案
  8. 线性回归及logistic回归详解
  9. lego_loam——featuerAssociation.cpp
  10. 程序员面试及机考完全指南