http://www.7klian.com

详解Bulletproofs零常识证明协议的事情道理

在范畴证明部门,我提到我们的方针是以内积的形式建设一个语句,以提高效率。让我们更具体地接头什么是内积,以及如何可以或许有效地证明内积!
在第8行和第10行中,我们做了两个乘法约束:(A-x)*(B-x)=input_mul和(C-x)*(D-x)=output_mul。
内积证明是证明c是向量a和向量b的内积,即c=<a,b>。

接下来,我们利用挑战标量将这两个语句组合起来,并向它们添加盲因子。这背后的数学并不坚苦-只是乏味-最终以c=<a,b>的形式给出了一个内部乘积语句。也就是说,我们获得一个语句,假如该语句是真的,那么我们知道v在0到2^n的范畴内。您可以凭据一步一步的数学来说明如安在我们的范畴证明注释中建设该语句。
约束系统是两种约束的荟萃:

假如我们获得一个随机标量x,那么我们可以用一个方程的形式来暗示这个需求:(a-x)*(B-x)=(C-x)*(D-x)。由于根置换时多项式的相等性,我们知道假如方程合用于随机x,那么{a,B}必需在任意顺序上便是{C,D}。

奥列格·安德列夫(Oleg Andreev)的Bulletproofs范畴证明协议的程式化插图

ZkVM
总结

约束系统证明(Constraint System Proof)
我们想证明以下告诉:0≤v <2 ^ n
内积证明(Inner Product Proof)

在做数学运算以扩展c’时,请留意c’的前两个项与c沟通!因此,我们可以简化要相对付c编写的c’的表达式,以及可以称为术语L和R的表达式:

配景常识
因此,假如我们从原始的a和b向量及其乘积c开始,则可以将每个向量分别为hi和lo的一半:

我们但愿以内积的形式来暗示这一声明,因为Bulletproof引入了很是高效的内积证明,我们将在下一节中接头这一点。

在第12行中,我们做了一个线性约束:input_mul-output_mul=0,它约束input_mul=output_mul。
当我们在约束系统中实现此2-shuffle gadget时,它看起来像这样:

颠末log(n)步调后,我们得出一个根基环境,个中a’和b’均为长度1。然后不再需要举办压缩,证明者可以简朴地发送a’,b’,c 验证者。

天真地说,验证者可以通过发送a、b和c来向验证者证明这一点,然后验证内积证明的伟大之处在于,它使我们可以在O(log(n))时间和空间长举办证明!

聚合范畴证明(Aggregated Range Proof)

Cloak利用“shuffle”、“merge”、“split”和“range proof”等小东西的荟萃构建一个约束系统,这些小东西组合在一个称为“cloaked transaction”的小东西下。所有小东西的机关仅由输入和输出的数量抉择,而不受资产的实际值影响。这样所有沟通巨细的事务都无法区分。譬喻对付的验证者或查察者来说,这就是3输入3输出掩蔽事务的样子:

这大概有助于相识内积是什么:

事实证明Cloak具有惊人的效率:与仅需要范畴证明的单资产生意业务(譬喻针比拟特币的隐私生意业务发起)对比,支持已刊行资产所需的其他约束和小东西所占比重不敷20%乘数。而且由于内积证明,对质明巨细的影响险些为零。这说明白Cloak协议中每个小东西所需的乘数:

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