码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ZKP方案衍变及对比


    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有:

    SNARKsSTARKsBulletproofs
    Algorithmic complexity: proverO(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 TXTx: 200 bytes, Key: 50 MB45 kB1.5 kb
    - size estimate for 10.000 TXTx: 200 bytes, Key: 500 GB135 kb2.5 kb
    Ethereum/EVM verification gas cost~600k (Groth16)~2.5M (estimate, no impl.)N/A
    Trusted setup required?YES 😒NO 😄NO 😄
    Post-quantum secureNO 😒YES 😄NO 😒
    Crypto assumptionsDLP + secure bilinear pairing 😒Collision resistant hashes 😄Discrete log 😏

    Bobbin Threadbare在2022年3月的分享视频ZK HACK mini - Writing STARK proofs with Winterfell 中指出:
    在这里插入图片描述
    根据Comparison of Different zk-SNARKs,有:
    在这里插入图片描述

    参考资料

    [1] Comparing General Purpose zk-SNARKs
    [2] Evolution of zk-proofs

  • 相关阅读:
    互联网Java工程师面试题·MyBatis 篇·第一弹
    【无标题】
    常见排序方法原理及C语言实现
    MySQL-索引&事务
    IDEA的安装与使用
    【leetcode】传递信息 c++
    常见排序算法之选择排序
    0.安装和配置
    06 【Sass语法介绍-函数】
    23年7/8月前端面试题总结
  • 原文地址:https://blog.csdn.net/mutourend/article/details/128200838
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号