区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > OKB > 正文

PERL:Vitalik :理解新型通用零知识证明方案PLONK_UPLOAD价格

作者:

时间:

特别感谢JustinDrake、KarlFloersch、XiaoWeiWang、BarryWhitehat、DankradFeist以及ZacWilliamson的审查工作。

注:原文作者是以太坊联合创始人VitalikButerin

以下是译文:

最近,ArielGabizon、ZacWilliamson和OanaCiobotaru公布了一种新的通用零知识证明方案PLONK,其全称是笨拙的“PermutationsoverLagrange-basesforOecumenicalNoninteractiveargumentsofKnowledge”。虽然对通用零知识证明协议的改进研究已进行了多年,但PLONK带来的是一系列的改进,这些改进可能会总体上大大提高这类证明的可用性及进展。

第一个改进:虽然PLONK仍需要一个类似ZcashSNARKs的可信设置过程,但它是一个“通用且可更新”的可信设置。这意味着两件事:首先,不需要为每一个你想证明的程序都设置一个单独的可信设置,而是为整个方案设置一个单独的可信设置,之后你可以将该方案与任何程序一起使用。第二,有一种方法可以让多方参与可信设置,这样只要其中任何一方是诚实的,那这个可信设置就是安全的,而且这种多方过程是完全连续的:首先是第一个人参与,然后是第二个人,然后是第三个……参与者们甚至不需要提前知道,新的参与者可以把自己添加到最后。这使得可信设置很容易拥有大量参与者,从而在实践中确保设置是非常安全的。

第二个改进是它所依赖的“奇特密码学”是一个单一的标准化组件,称为“polynomialcommitment”。PLONK使用基于可信设置和椭圆曲线对的“Katecommitments”,但你也可以用其它方案替换它,例如FRI或者DARK。这意味着该方案在理论上与证明大小和安全性假设之间的任何权衡兼容。

这意味着需要在证明大小与安全性假设之间进行不同权衡的用例,仍然可以为“算术化”共享大部分相同的工具。如果这种方案被广泛采用,那我们可期待在改进共享算术化技术方面的快速进展。

Lykke发起利用区块链技术将供应链数字化倡议:瑞士金融科技公司Lykke发起了一项“开放倡议(The Open Initiative)”,该计划着眼于区块链的潜在用例,以帮助各国政府在后疫情时代对其供应链进行数字化。美国商品期货交易委员会(CFTC)前主席Chris Giancarlo已以战略顾问的身份加入了该计划。(Fintech Futures)[2020/5/19]

PLONK是如何工作的

让我们从解释PLONK的工作原理开始,我们只关注多项式方程而不立即解释如何验证这些方程。PLONK的一个关键组成部分,就像SNARKs中使用的QAP一样,这是一个转换问题的过程,形式是“给我一个值X,我给你一个特定的程序P,这样当X作为输入进行计算时,给出一些具体的结果Y,”放到问题“给我一组满足一组数学方程的值”当中。程序p可以表示很多东西,例如,问题可能是“给我一个数独的解决方案”,你可以通过将P设置为数独验证器加上一些编码的初始值并将Y设置为1来对其进行编码,一个令人满意的输入X将是数独的有效解决方案。这是通过将P表示为一个带有逻辑门的加法和乘法电路,并将其转换为一个方程组来完成的,其中变量是所有线上的值,每个门有一个方程。

下面是一个求x问题的例子,这样P(x)=x**3+x+5=35(提示:x=3):

我们按如下方式给门和线贴上标签:

在门和线上,我们有两种类型的约束:门约束和复制约束。我们需要创建一个结构化的方程组,它最终将减少到一个非常少数量的多项式方程组,来表示这两个方程组。

在PLONK中,这些方程的设置和形式如下:

每个Q值都是一个常数,每个方程中的常数对于每个程序都是不同的。每个小写字母值都是一个变量,由用户提供:ai是第i个门的左输入线,bi是右输入线,ci是第i个门的输出线。对于加法门,我们设置:

将这些常数插入方程并进行简化,得到ai+bi-oi=0,这正是我们想要的约束条件。对于乘法门,我们设置:

声音 | 物产中大2018年报:利用区块链技术在供应链上下游成功探索“信用币”机制:物产中大集团股份有限公司发布《2018 年年度报告 》。报告称该公司利用区块链技术在供应链上下游成功探索“信用币”机制。物产金属通过与浙商银行合作开发以区块链技术为核心的应收账款平台逐步推广,大大加强了与上下游客户的合作紧密程度和粘性,提升了资金使用效率。[2019/4/16]

对于将ai设置为某个常数x的常数门,我们设置:

你可能已注意到线的每一端,以及一组线中的每根线,显然必须具有相同的值对应于一个不同的变量;到目前为止,没有什么能强迫一个门的输出与另一个门的输入相同。PLONK当然有一种强制复制约束的方法,我们稍后会讨论这个问题。所以现在我们有一个问题,证明者想要证明他们有一堆Xai,Xbi以及Xci值满足了一堆相同形式的方程。这仍然是一个大问题,但不像“找到这个计算机程序的一个令人满意的输入”,这是一个非常结构化的大问题,我们有数学工具可用于“压缩”它。

从线性系统到多项式

如果你了解过STARKs或QAPs,下一节中描述的机制会让人觉得有些熟悉,但如果你没有,那也没有关系。这里的主要内容是将多项式理解为一种数学工具,用于将大量值封装到单个对象中。通常,我们是以“系数形式”来看待多项式,即如下表达式:

但我们也可用“定值形式”来看待多项式。例如,我们可以认为上面是在坐标处分别定值的“度数<4”的多项式。

下面是下一步。许多形式相同的方程组可重新解释为多项式上的一个方程组。例如,假设我们有一个系统:

我们用定值形式定义四个多项式:L(x)是在坐标(0,1,2)处定值为的度数<3的多项式,在同样的坐标系下,M(x)定值为(-1,4,-1),R(w)定值为(3,-5,-1)以及O(x)定值为(8,5,-2)。现在,考虑下面这个等式:

声音 | 交通银行武雯:供应链金融将与区块链技术发展紧密结合:据中证报消息,交通银行金融研究中心高级研究员武雯认为,随着互联网、区块链技术的加速发展,银行供应链金融业务能够加速发展。大型银行和股份行供应链金融业务更有优势,且未来供应链金融的发展将进一步与互联网、区块链技术的发展紧密结合。[2018/10/24]

在这里,Z(x)是(x-0)*(x-1)*(x-2)的简写,它是在定值域(0,1,2)上返回零的最小多项式。这个方程的解(x1=1,x2=6,x3=4,H(x)=0)也是原方程组的解,只是原方程组不需要H(x)。还要注意,在这种情况下,H(x)很方便为零,但在更复杂的情况下,H可能需要为非零。

所以现在我们知道,我们可以在少数数学对象中表示一个大的约束集。但在我们上面建立的表示门线约束的方程中,x1,x2,x3变量在每个方程中是不同的。我们可以用同样的方法使变量本身成为多项式而不是常数来处理这个问题。所以我们得到:

如前所述,每个Q多项式是由正在验证的程序生成的参数,a,b,c多项式是用户提供的输入。

复制约束(Copyconstraints)

现在,让我们回到“连接”线上。到目前为止,我们所拥有的是一组关于不相交值的不相交方程,这些方程独立且易于满足:常数门可通过将值设置为常数来满足,加法和乘法门可通过将所有线设置为零来满足!为了使问题具有实际的挑战性,我们需要添加一个验证“复制约束”的等式,这需要一些巧妙的技巧。

我们的策略是设计一个“坐标对累加器”,一个多项式p(x)的工作原理如下:首先,让X(x)和Y(x)两个多项式表示一组点的x和y坐标给定的位置,所以p(0)从1开始,p(1)只代表第一个点,p(2)是第一个点和第二个点,诸如此类。我们将通过“随机”选择两个常数v1和v2,并使用约束p(0)=1以及p(x+1)=p(x)*(v1+X(x)+v2*Y(x))构造p(x),至少在域内。例如,让v1=3和v2=2,我们得到:

财政部、商务部决定开展2018年流通领域现代供应链体系建设,将推动区块链等技术与供应链融合:财政部发布通知称,有关城市结合自身实际情况,重点围绕农产品、快消品、药品、日用电子产品、汽车零部件、家电家具、纺织服装,以及餐饮、冷链、物流快递、电子商务等行业领域,加快推进现代供应链体系建设。要强化物流基础设施建设,发展智慧供应链,推动大数据、云计算、区块链、人工智能等技术与供应链融合,推广使用新能源物流车、仓储设施设备节能技术及绿色智能包装新材料。[2018/5/31]

注意每个p(x)值,等于它左边的值乘以它左上面的值。

我们关心的结果是

p(4)=-240。现在,考虑这样的情况,我们设置X(x)=2?3x^3-4x^2+19?3x(即,在坐标

处定值为

的多项式),而不是X(x)=x。

如果你运行同样的过程,你会发现你也会得到p(4)=-240。

这不是巧合。相反,这是因为Y(1)=Y(3),所以如果你“交换”点(1,1)和的X坐标,你就不会改变点的集合,并且因为累加器对集合进行编码,所以最后的值将是相同的。

现在,我们可以开始了解我们将用来证明复制约束的基本技术。首先,考虑一个简单的例子,我们只想证明在一组线中的复制约束=a)。我们将生成两个坐标累加器:一个是X(x)=x和Y(x)=a(x),另一个是Y(x)=a(x),而X’(x)是对每个复制约束中的值的翻转排列定值的多项式。在a(1)=a(3)的情况下,这意味着排列将开始于03214....第一个累加器将压缩((0,a(0)),(1,a(1)),(2,a(2)),(3,a(3)),(4,a(4))...,第二个压缩),),),),)……只有当a(1)=a(3)时,两者才能给出相同的结果。

为了证明a,b和c之间的约束,我们使用了相同的过程,但是我们将所有三个多项式的点“累加”在一起。我们给a,b,c赋值一些X坐标=b,那么X’a(x)将有定值01934,X’b(x)将有定值56782。然后,我们将不再像以前那样检查一次过程中的相等性,而是检查每侧三次不同运行的乘积:

德国软件公司SAP计划通过区块链技术将其工作扩展至供应链领域:据Coindesk消息称,德国软件公司SAP计划通过区块链技术将其工作扩展至供应链领域,SAP将把区块链整合到其现有的全球供应链跟踪技术中,充当对核心流程进行补充的附加层,从而为参与供应链的所有利益相关方的数据创建一个共同的平台。[2018/5/14]

两边的三个p(n)定值的乘积将a、b和c中的所有坐标对累加在一起,因此这允许我们像以前一样进行检查,除此之外,我们现在不仅可检查三组线A、B或C中一组内的位置之间的复制约束,还可以检查一组线与另一组线之间的复制约束。

就这些了!

把所有东西放到一起

实际上,所有这些数学运算都不是在整数上进行的,而是在素数域上进行的;请检查此处的“模块化数学插曲”部分,以了解素数域是什么。此外,出于数学上的原因,最好是用快速傅里叶变换实现来阅读和理解这篇文章,而不是用x=0....n-1表示线指数,我们将使用ω:1,ω,ω^2….ω^n-1的幂,其中ω是域中的一个高次单位根。这与数学无关,只是坐标对累加器约束检查方程从p(x+1)=p(x)*(v1+X(x)+v2*Y(x))更改为p(ω*x)=p(x)*(v1+X(x)+v2*Y(x)),而不是使用0..n-1,n..2n-1,2n..3n-1作为坐标,我们使用ω^i,g*ω^i,其中g可以是域中的某些随机高阶元素。

现在让我们写出所有需要检查的方程式。首先,主门约束满足性检查:

然后是多项式累加器转换约束:

然后多项式累加器开始和结束约束:

用户提供的多项式是:

线分配a(x),b(x),c(x);

坐标累加器Pa(x),Pb(x),Pc(x),Pa’(x),Pb’(x),Pc’(x);

商H(x)和H1(x)…H6(x);

证明者和验证者需要提前计算的程序特定多项式为:

QL(x),QR(x),QO(x),QM(x),QC(x),它们共同代表电路中的门;

“排列多项式”σa(x),σb(x)和σc(x),它们编码a,b和c线之间的复制约束;

注意,验证者只需要存储这些多项式的承诺。上述方程中仅存的多项式是Z(x)=(x-1)*(x-ω)*…*(x-ω^(n-1)),其设计目的是在所有这些点上计算为零。幸运的是,可以选择ω使这个多项式很容易计算:通常的方法是选择ω来满足ω^n=1,在这种情况下Z(x)=x^n-1。

对v1和v2的唯一限制是,在v1和v2已知之后,用户不能选择a(x),b(x)或c(x),所以我们可通过计算a、b和c的承诺哈希的v1和v2来满足这个要求。。

所以现在我们已经把程序满足问题,变成了用多项式满足几个方程的简单问题,PLONK中有一些优化,其可以允许我们去掉上面方程中的很多多项式,为了简单考虑,我将不再讨论这些。但是多项式本身,都是很大的。

所以下一个问题是,我们如何绕过这个问题,才能让证明变简短?

多项式承诺

多项式承诺是一个短对象,其“代表”一个多项式,并允许你验证该多项式的计算,而不需要实际包含多项式中的所有数据。也就是说,如果有人给你一个代表P(x)的承诺c,他们可以给你一个证明,然后说服你对于某个特定的z,P(z)值是多少。还有一个进一步的数学结果表明,在一个足够大的域上,如果关于在随机z上定值的多项式的某些类型的方程是真的,那么这些相同的方程对整个多项式也是真的。例如,如果P(z)*Q(z)+R(z)=S(z)+5,那么我们知道P(x)*Q(x)+R(x)=S(x)+5通常是极有可能的。使用这样的多项式承诺,我们可以很容易地检查上面所有的多项式方程。作出承诺,使用它们作为输入生成z,证明在z上每个多项式的定值是什么,然后用这些定值来运行方程,而不是原来的多项式。那这些承诺是如何运作的呢?

有两部分:对多项式P(x)->c的承诺,以及在某个z处对值P(z)的opening。而要作出承诺,有很多技术,一个例子是FRI,另一个是Kate承诺,我将在下面描述。为了证明一个opening,有一个简单的通用“减除”技巧:为了证明P(z)=a,你要证明

也是一个多项式。这是因为如果商是一个多项式,那么x-z是P(x)-a的一个因子,所以(P(x)-a)(z)=0,所以P(z)=a。用一些多项式试试,比如P(x)=x^3+2*x^2+5(z=6,a=293),然后试试(z=6,a=292),看看它是如何失败的,)

另请注意一个一般优化:为了同时证明多个多项式的多个opening,在提交输出后,对多项式和输出的随机线性组合执行减除技巧。

那么,承诺本身是如何运作的呢?幸运的是,Kate承诺要比FRI简单得多。可信设置过程生成一组椭圆曲线点G,G*s,G*s^2….G*s^n,以及G2*s,其中G和G2是两个椭圆曲线组的生成器,而s则是一个一旦程序完成就会被遗忘的秘密。这些点会被公布,并被认为是方案的“证明关键”,任何需要作出多项式承诺的人都需要使用这些点。通过将证明密钥中的前d+1个点中的每一点乘以多项式中的相应系数,并将结果相加,对d次多项式作出承诺。

注意,这提供了在s处的多项式的“定值”,而不知道s。例如,x^3+2x^2+5将由(G*s^3)+2*(G*s^2)+5*G表示。我们可以用符号来表示用这种方式编码的P。在做减除技巧时,可以使用椭圆曲线对来证明这两个多项式实际上满足关系:检查e(-G*a,G2)=e(,-G2*z)是否作为检查P(x)-a=Q(x)*(x-z)的代理。

但最近也出现了其他类型的多项式承诺。一个新的方案被称为DARK使用了“隐序组”如类组来实现另一种多项式承诺。隐藏顺序组是唯一的,因为它们允许你将任意大的数字压缩到组元素当中,甚至可以压缩比组元素大得多的数字,这样就不会被“”。从VDF到累加器,从范围证明到多项式承诺的构造,都可在此基础上构建。另一种选择是使用防弹证明,使用常规的椭圆曲线组,代价是验证所需的时间要长得多。因为多项式承诺比完全零知识证明方案要简单得多,我们可以期望将来会有更多这样的方案被创建出来。

概括

最后,我们再讨论一下这个方案,给定一个程序P,将其转换为一个电路,并生成一组如下所示的方程:

然后将这组方程转换为一个多项式方程:

你还可以从回路中生成复制约束的列表。从这些复制约束生成表示排列线指数的三个多项式:σa(x),σb(x),σc(x)。要生成证明,需要计算所有线的值,并将其转换为三个多项式:a(x),b(x),c(x)。作为置换检查参数的一部分,你还可以计算六个“坐标对累加器”多项式。最后计算辅因子Hi(x)。

多项式之间有一组方程需要检查,你可以通过对多项式作出承诺,在某些随机z处打开它们,并在这些求值结果上运行方程,而不是在原始多项式上运行方程来完成这项工作。证明本身只是一些承诺和opening,可以用几个方程式来检查,就是这些啦。

标签:区块链PLOHYPERPERL区块链最新局曝光UPLOAD价格HYPERRISE币PERL价格

OKB热门资讯
加密货币:加密货币的货币政策_比特币最新价格美元新浪

前言:加密资产的货币政策主要涉及它的发行模式,例如发布方式、初始供给、增发、销毁以及总量上限等.

COIN:富国银行欲推出加密货币助力其全球跨境支付业务_WELL

9月17日晚间,有外部消息显示,美国金融巨头富国银行正在开发一种与美元相挂钩的名为WellsFargoDigitalCash的加密货币,据了解.

HYPE:供应链+区块链:区块链如何掀起全球供应链革命?_COLA价格

区块链落地的又一大领域将是“供应链”,目前已服务于沃尔玛、联合利华等多家跨国企业。 当前全球供应链存在哪些痛点?供应链是一种网络,连接众多参与创建、分发产品及服务的人员和企业,涵盖了从原材料提供.

ALI:用万圣节糖果解释什么是“零知识证明”,可能是关于密码学很通俗的解释了……_LIC

上周,我们图解了零知识证明,解释了区块链中的最常见的密码学到底是什么,引起了许多朋友的讨论。但同时,也有小伙伴表示太深奥没法完全看明白,还有的说想教孩子学习零知识证明,但不知道如何用孩子能听懂的.

TUM:巴比特专栏 | 在POW基础上构建一个POS层_pow币是什么意思

事先声明,本文纯属想象。POW和POS的优劣争议很大,也不知道谁说的对。有一些币声称能够结合POW和POS的优点,并且可以抛弃它们的缺点。比如点点币,DCR币等.

BPS:量子链帅初:只有跳出“框架”,区块链的未来应用才能取得更大发展_BPS币

十年是一个槛,区块链即将迈过,并作为新的起点,创造区块链新经济。2009年,随着比特币的诞生,一种崭新的从未有过的经济模式开启了新经济时代.