http://www.7klian.com

彻底读懂零常识证明及其实现要领:理会zk-SNARK

· 即,p(E(s)) = E(p(s)) = g^p(s),h(E(s)) = E(h(s)) =g^h(s);
图中最左边一行数字[1, 3, 35, 9, 27, 30] 为Vitalik 例子中的解向量s。A1(x)为a 的第1 个多项式在x 处的取值,好比A1(1)=0;A1(x)~A6(x) 组成第x 个约束的向量a,好比x=1时,a=[0、1、0、0、0、0];其他同理。

· prover 收到后,计较g^p(s)、g^h(s)、g^(α*p(s));选择随机数δ 对解加密,变为(g^p(s))^δ、(g^h(s))^δ、(g^(α*p(s)))^δ;然后把这3 个加密值给verifier;
接下来是把R1CS 转换为多项式。依然不需要深入领略如何转换,只需要知道转换是等价的。转换进程如下:
https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649
zk-SNARK 协议需要证明的多项式是A(x) * B(x)–C(x),假如把p(x)还原为A(x) * B(x)–C(x),相较于p(x)时的协议,主要区别在于:
对付包括n 个约束的零常识证明问题,需要举办n 次A(x) * B(x)–C(x)是否为零的验证。可不行以把n 次验证变为一次验证?可以。
可信配置影响zk-SNARK 的通用性,因此也成长出了不需要可信配置的zk-SNARK,其意义重大但领略起来并不难:只不外是换了一种方法提供随机挑战点x。
sym_1 * x – y = 0
要领被称作指数常识假设,若想相识详细内容,可阅读Maksym 的文章。
s = [~one,x,~out,sym_1,y,sym_2]
在实际应用中,verifier 是把E(s)、E(s^2)、……、E(s^n)给到prover,个中E(s)是s 的加密值,E(s) = g^s (mod n),这是一种同态加密
要领。
3.Maksym Petkus;《Why and How zk-SNARK Works: Definitive Explanation》,https://arxiv.org/pdf/1906.07221.pdf;
· 与此同时,verifier 还需要验证e(g^p′ , g) = e(g^p, g^α)是否创立,若创立,则证明prover给出的解是用s计较出来的。
0 + 0 * x + 0 * x^2 + 0 * x^3
利用zk-SNARK 完成零常识证明,就是完成verifier 给出随机点举办挑战的事情和prover 给出随机点上的解完成证明的事情,这实际上是互不信任的verifier 和prover 之间的一场攻防战,他们利用的兵器是暗码学。
1.把零常识证明的需求转换为数学运算电路
所以当verifier 确定随机点s 后,需要把加密后的s、s^2、……、s^n 全部给prover,这样prover 才气完成计较。
8- 11.333 * x + 5 * x^2-0.666 * x^3
2.Vitalik Buterin;《Quadratic Arithmetic Programs: from Zero to Hero》,
在本文的应用中,有一个多项式A(x) * B(x)–C(x),一个多项式t(x) * h(x),假如它们不相等,它们只会在最多d 个点上相交,也就是在d个点上的解沟通。
阐明需要被验证的A(x) * B(x)–C(x) = t(x) * h(x):
调查prover 的证明进程,他需要计较p(x) 和h(x)这两个多项式,但不管哪一个,其形式均为:c0+ c1*x^1+ ……+ cn*x^n;prover 自己知道c0、c1等等全部系数。
向量a 对应6 个多项式,向量b 和向量c 也是如此,因此一共会有18 个多项式。当x=1时,这18 个多项式的18 个解正是第一个约束;当x 便是2、3、4时,别离获得第2、3、4 个约束。多项式与RICS 是等价的。
得益于交互式证明和多项式的特性,我们可以通过验证挑战点x 上多项式A(x) * B(x)–C(x)的解与t(x) * h(x)的解是否相等来验证A(x) * B(x)–C(x) = t(x) * h(x)是否创立,这种方法是可以埋没A(x) * B(x)–C(x)这个多项式的系数的。
· 可信配置:可信第三方选择随机挑战点x,假设x= s,以及随机数α,然后把一整套s 的加密值、以及一整套α * s的加密值给prover;再把t(s) 的加密值g^t(s)和α 的加密值g^α 给verifier;
· 在对prover 的计较举办约束时(好比必需用s 计较),需要有3 个差异的α 别离对应于A(s)、B(s)、C(s);当prover 对计较功效加密时,需要有3 个差异的δ别离加密A(s)、B(s)、C(s)。
假设这个别检的隐私数据是x,x 的值在0~7 之间(包括0和7)为达标,不然为不达标。那要做首先是把这个需求转换为一个可计较的问题,即有一个措施,其输入为x,当x 在0~7 之间时,输出「真」,当x 不在该区间时,输出「假」。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。