Concept:zk-stark vs zk-snark

谈到ZKP算法,大伙可能听过一些,比如zk-snark,zk-stark, bulletproof, aztec, plonk等等。今天,咱就给大伙聊聊这一对“表面兄弟”,zk-stark和zk-snark算法的异同之处。
不如,先让我们从名称说起? 毕竟,两个看起来都很厉害的亚子_
如下图所示,我们将名称zk-stark 和 zk-snark根据功能特点分别分成四个部分,然后逐个比较分析。

Zk-stark => zk - s t ark

zk:零知识,表明隐私的输入将会被隐藏,除了证明者,其他任何人不会看见;
s:可扩展的,和Replay Computation的验证耗时相比,zk-stark的证明和验证耗时分别与之呈拟线性关系和对数关系;
t:透明的,zk-stark算法没有CRS setup by Trusted party;
arg:知识论证,只有知道private input的prover,才能生成有效的proof;

Zk-snark => zk - s n ark

zk:零知识,表明隐私的输入将会被隐藏,除了证明者,其他任何人不会看见;
s:简洁的,指的是生成的proof足够小和验证时间足够短;
n:非交互式的,Prover生成证明的过程中和verifier没有交互;
arg:知识论证,只有知道private input的prover,才能生成有效的proof;

Compare

  • 相同点

    1. 都实现了将隐私的输入可靠隐藏;
    2. 都是基于知识论证,不知道private input的prover生成不了有效的proof;
    3. 都可以实现交互式与非交互式式的算法,只是取决于randomness是由谁来生成的;
  • 不同点

    1. zk-stark具有可扩展性,即证明和验证的耗时与原始计算的耗时分别呈拟线性关系(且线性因子为常量)和对数关系,这意味这,如果原始输入的数据集增大1000000倍,zk-stark的证明耗时增加线性倍数的时间,但验证时间仅仅增加21*log1000000 =~ 420倍。证明耗时呈线性关系基本满足所有的ZKP算法,但是验证时间呈对数关系,仅此一家,因此在扩展性上,zk-stark要胜一筹。
    2. zk-stark同样具有简洁性,但是是验证简洁性。所谓简洁性,通常是指即使验证程序很大,生成的proof size也不会很大,同时又能很快的完成验证(比native computation快很多)。相比对zk-snark,zk-stark的proof size要大的多,因此在简洁性上,zk-snark要胜一筹。

ALG compare

前面从概念上对zk-stark 和 zk-snark算法做了比较,其异同点可以笼统的概括为:
1. 都是基于知识论证的ZKP算法;
2. zk-stark不需要zk-snark的Trusted party 设置CRS,因此是Transparent;
3. zk-stark的验证耗时与native computation 耗时呈对数关系,因此是Scalable;
下面,我们将从算法层面,去做相对更深入一些的比较分析:

zk-snark ALG

  1. 算法思想:将证明CI statement成立问题转换成证明多项式等式成立问题,转换过程用到了算术环路和QAP方法;
  2. 多项式等式成立意味着什么?(图中黄色部分)
    等式两边可以看作两个度相等的多项式,假设为n,其交点最多有n个,假如在一个很大的域范围内随机选一个点,如果的两个多项式在此点的值相等,则证明两个多项式是相等的。
    我们可以看到,等式右边的多项式因子Z是目标多项式,它的零点就是右边整体多项式的零点,也就是等式左边整体多项式的零点,而等式左边的多项式在这些零点的取值,就转换成了一个个的算术电路里每个乘法门对应的一阶线性约束等式(R1CS)成立,即原始计算等式成立(注:R1CS由原始计算等式分解得到);
  3. 算法分为三个步骤,CRS生成;证明者证明;验证者验证;
    可以看到prover生成证明过程中,没有与验证者交互,因此是non-interative;
    如何保证prover用于生成证明的A/B/C/H是多项式且是小于某个度数呢?
    通过trusted party 来保证,因为它是可信任的,因此它生成pk,vk用到的A/B/C等肯定是多项式并且是小于某个度的;
  4. 如果证明者作恶,那么验证者将会很大概率验证失败;
  5. 主要用到了同态加密HH和系数知识假设KCA和椭圆曲线双线性配对等数学知识;

zk-stark ALG

  1. 算法思想:将证明CI statement成立问题转化成证明多项式小于某个度的问题,转换过程用到了多项式插值方法;
  2. 多项式等式成立意味着什么?(图中黄色部分)
    思想与zk-snark一样,T同样为目标多项式,其零点已知且公开,也是等式左侧多项式Q的零点,多项式Q在每一个零点的取值都对应了一个execute trace的成立(没错,在zk-stark中,原始计算语句转化成了多个execute trace,这类似与zk-snark中的R1CS)。因此多项式相等,意味着execute trace 正确,说明原始CI成立。
  3. 多项式小于某个度意味着什么?
    和zk-snark类似的是,两者都把CI statement转换成了证明多项式等式成立的问题(?可以这么抽象的认为,zk-stark不仅要证明多项式相等,还要证明相应多项式是小于某个度的,这是zk-stark算法的核心,所以才有了第一点的描述)。为了防止验证者作恶,必须要保证多项式是低于某个度的(?存在这样一种可能,攻击者可以特意生成满足验证等式的一些点,这些点并不是真正的多项式上的点,但是根据这些点生成的证据也能通过验证者验证)。不同的是,zk-snark使用了trusted party机制 和 同态加密等数学方法,而zk-stark使用了低度测试等数学方法。当且仅当多项式真正的小于某个度时,多项式的相等才是真实意义上的相等,说明生成轨迹多项式的execute trace 是正确的,即原始CI成立。
  4. 算法分为两大步骤,算术化和低度测试;
    算术化:是把问题转化为多项式形式
    低度测试:是证明组合多项式(图中黄色)和轨迹多项式(图中绿色)小于某个固定的度–>FRI算法
  5. 在生成证明的过程中,有交互(图中红线所示),所以图中描述的是交互式的零知识证明算法;

Summary

以上分别从概念和算法上介绍了zk-snark和zk-stark算法的异同之处,作为引子,后续发文将深入详细价绍zk-stark算法的原理。如有不足,请批评指正,谢谢。

Appendix

  1. V神三部曲,含泪拜读 https://vitalik.ca/general/2017/11/09/starks_part_1.html
  2. zk-stark论文 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F%2Feprint.iacr.org%2F2018%2F046.pdf
  3. starkware官方讲解系列 https://medium.com/starkware/stark-math-the-journey-begins-51bd2b063c71
  4. zk-snark论文 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F%2Feprint.iacr.org%2F2013%2F879.pdf

Step1. 理解零知识证明算法之Zk-stark相关推荐

  1. 比较零知识证明算法zkSNARK,zkSTARKs,zkBoo,Sonic,BulletProofs

    本文分为两部分,第一部分说明零知识能干什么,为什么它这么强大,在区块链中这么火:第二部分比较零知识证明的算法zkSNARK, zkSTARKs, zkBoo, Sonic和BulletProofs的特 ...

  2. 从小故事带你理解零知识证明 | 区块链一千零一问

    开胃小故事 阿里巴巴证明 阿里巴巴被强盗抓住,为了保命,他需要向强盗证明自己拥有打开石门的密码,同时又不能把密码告诉强盗.他想出一个解决办法,先让强盗离开自己一箭之地,距离足够远让强盗无法听到口令,足 ...

  3. 什么是零知识证明(ZK Proof)?Web2.0通往Web3.0的入口技术

    古老的难题 女:你爱我吗? 男:爱! 女:怎么证明? 男:-- 零知识证明的定义 零知识证明(Zero-Knowledge Proof)也叫做最小泄露证明,能充分证明自己是某种权益的合法拥有者,又不把 ...

  4. 零知识证明学习资源汇总

    本文将继续会持续进行更新,更新后的版本将在 Github 和知乎上发布,欢迎关注. Github 地址:https://github.com/sec-bit/learning-zkp/blob/mas ...

  5. 《零知识证明 – zkSNARK 入门》— PPIO Code Talks 第二期

    PPIO Code Talks 致力于打造一个以上海为中心,辐射全球的高质量区块链学习,分享,交友平台. 7月27日,PPIO 举办了第二期 Code Talks 闭门技术交流分享会.在上一期的活动中 ...

  6. 蚂蚁区块链第7课 零知识证明隐私保护原理和蚂蚁BAAS接口调用实现

    1,摘要 本文试图普及隐私保护和零知识证明的相关技术知识,尝试使用更简单的描述来理解复杂的数学算法和技术原理.同时,也提供了蚂蚁区块链已经实现的隐私保护的接口函数说明. 本文涉及的专业知识有零知识证明 ...

  7. 区块链交易隐私如何保证?华为零知识证明技术实战解析

    摘要:本文通过介绍华为如何在同态加密及零知识证明框架的集成介绍来介绍了一些对金融领域交易隐私保护的思路,通过代码结和应用场景描述了zksnark如何集成到现有联盟链体系保护交易隐私. 本文分享自华为云 ...

  8. 零基础 学 零知识证明

    近期有小伙伴咨询零知识证明入门问题,现就本人(非密码学专业小白) 学习零知识证明 进行小总结: 关于数论和椭圆曲线基础知识:可以看<Elliptic Curves Number Theory a ...

  9. 去中心化数字身份DID简介——四、用户属性的零知识证明

    在上一篇文章中,我们介绍了用户具有多个身份属性时,选择性的把其中的一个属性暴露出来,而不会造成其他信息的暴露.更进一步的情况,某些时候我们只需要验证用户的年龄达到多少岁,或者小于多少岁,但是并不关心用 ...

最新文章

  1. 原生JS添加类名 删除类名
  2. 统计学习方法第九章作业:三硬币EM算法、GMM高维高斯混合模型 代码实现
  3. mysqldump单个库导出_初相识 | 全方位认识 sys 系统库
  4. layui轮播图切换会有跳动_Layui中轮播图切换函数说明
  5. 太赞了!刷题PDF终于在GitHub上开源了!覆盖字节、蚂蚁、腾讯等多家大厂真题...
  6. zookeeper能做什么?
  7. Linux下的MySQL主主复制
  8. 可视化:动态气泡图,拿走不谢!
  9. 那些年,翻过山,趟过河,挖了山丘,黑了河沟,终于还是遇到了——跨服务器查询...
  10. 超级简单:ASP.NET输出缓存
  11. (Word论文插入高清图片)软件设置教程
  12. 早停法的应用(keras)
  13. 地形剖面matlab,基于MATLAB河道横断面绘制.doc
  14. 将uniapp打包成安卓APP
  15. Windows路由表的灵异事件
  16. 计算机安装win10系统还原,解决win10电脑一键还原教程
  17. 金庸走过,留给马云和阿里巴巴一个“江湖”
  18. pyqt5事件与鼠标事件
  19. InnoDB的“无用”知识
  20. 【BLE】跳频算法实例分析

热门文章

  1. 2022年骨传导耳机哪个好、骨传导耳机品牌推荐
  2. BFC是什么?开启BFC的标志?解决什么问题?
  3. mysql报错1099_MySQL错误ERROR 1099(HY000):表已被READ锁锁定,无法更新
  4. 20145307陈俊达《网络对抗》Exp3 免杀原理与实践
  5. windows11安装docker desktop实现docker环境
  6. 1499飞天茅台脚本使用过程中遇到的Python问题汇总索引目录【淘宝-天猫超市、京东】
  7. imx6ull内置温度传感器实践1:输出一个采样
  8. 暴走英雄坛服务器维护时间,暴走英雄坛1.4.1版本维护公告 两段前期支线剧情更新...
  9. 外啮合齿轮泵的工作原理
  10. 安全档案 | 具体包括那些内容01