Filecoin技术文档学习5-zk-SNARKs系列知识4 QAP

本节重点要讲解的是如何将一个计算问题的证明转换为一个多项式的验证。先来看一下我们要解决的问题案例:Alice想要向Bob证明他知道c1,c2,c3属于Fp,且(c1*c2)*(c1+c3)

= 7。为了达到这个目的,我们首先把这个表达式拆分成一级约束系统,具体操作如下:

一级约束系统

第一步:把这个表达式分解成三种简单的通用的表达方式1,2,3;其中我们增加了变量c4,c5,c6。如果表达式1,2,3同时成立,那么论点也成立。

第二步:引入向量S=

c1, c2, c3, c4, c5, c6>并根据表达式1,2,3,定义一个通用的表达式4:S.a*S.b-S.c = 0;

其中"."符号表示向量的点积运算。把公式6的向量a1,b1,c1的值代入表达式4之后,表达式4就退化为表达式1。根据相同的方式,可以计算出(a2,b2,c2)和(a3,b3,c3).

第三步:我们将a1,a2,a3组成矩阵,则横向是向量a1,a2,a3,我们为纵向数据定义一个函数A(x),第一列定义为A1(x),如图所示,其它列同理。那么x可以算作关于行号的变量。则对于第一列,A1(1)=

0, A1(2)= 1,A1(3)= 0。通过拉格朗日差值算法【1】,我们可以求得一个具体的A1(x)的多项式,此处忽略相关计算。

以此类推,通过矩阵a我们可以求得一个A(x)的表达式9。当x=1时,A(1)就是表达式6中的a1.同理可以得出B(x)和C(x)的具体表达式。

多项式转换:

根据表达式4的特点,我们定义表达式13。当x=1时,表达式13就可以退化为表达式4.

我们定义了表达式11和12,将根据P(x)在x=1,2,3时为0的特性,根据多项式除法【2】,我们可以判定多项式P(x)可以整除多项式T(x)。因此Alice只要证明公式11成立,即可证明其论点的正确性,这个推到过程已经附在上图,不再赘述。

[1]:https://en.wikipedia.org/wiki/Lagrange_polynomial

[2]: https://en.wikipedia.org/wiki/Polynomial_long_division

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近以太坊启动了“大都会”硬分叉,很重要的一个功能就是整合了ZCash的零知识证明技术zkSNARK。我们一起来看...
    元家昕阅读 36,680评论 11 34
  • 你犹如无上神灵,创造我的生命 升华我的灵魂 滋润我干涸心田 你给予我新生
    37475f3ea011阅读 1,436评论 0 0
  • 一、安装MySQL 我装的是5.7.20,下载链接:https://dev.mysql.com/downloads...
    秋玄语道阅读 2,976评论 0 0
  • 作者:大红羊 寒风飞渡山海关,白雪皑皑间春日悄然无声的到来,阳光透过指间照在脸上,说不出的温暖与柔和。家里书房的桌...
    大红羊阅读 2,701评论 20 28
  • 【今日之最】生活的目的 【3件最重要的事】Reading✅ 【晨间计划-大姐不知道】 【晨间计划-接纳不完美的自己...
    小尾巴巨人阅读 3,073评论 1 1

友情链接更多精彩内容