USDT第三方支付平台

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

在之前的文章中,我们先容了零知识证实的 基础观点 以及组织 zkSNARK 的 基本头脑和方式。从本文最先,我们将逐一先容现在最热门的 zkSNARK 方案。文章旨在让读者明白这些方案的基本原理。为了利便叙述并容易明白,在叙述方案时,我们会做一些简化处置,重在转达方案的焦点头脑。

本文先容的是 Groth16 方案。Groth16 方案,顾名思义,就是 Groth 在 2016 年揭晓的一篇论文 [Gro16] 中提出的方案。现在为止,Groth16 是在实践中使用最普遍的 zkSNARK (没有之一)。稀奇一提的,Zcash 现在使用的 zkSNARK 方案就是 Groth16。从性能上,Groth16 的 Verifier 性能是所有 zkSNARK 中最快的,其证实字符串也是最短的。

而 Groth16 的最大瑕玷就是它需要对每个电路都执行一次可信初始化。

在先容 Groth16 之前,简朴回首一下 zkSNARK 所要解决的问题。我们称这个问题为「盘算验证问题」。

盘算验证问题

任何盘算都可以形貌为一个算术电路。一个算术电路可以对数字举行算术运算。电路由加秘诀、乘秘诀以及一些常数门组成,如下图所示:

这个例子中的电路包罗了 15 个门。这个电路所形貌的盘算历程需要输入五个数字 x1 到 x5,输出四个数字。

给定一组输入的数字,需要把这个电路中的每个门都盘算一遍,才气盘算出这个电路的输出。在这个例子中,若是输入是 (1,2,3,4,5) ,则电路的输出为 (-27,14,80,171),如下图所示:

盘算验证问题是指,若是一个验证者——不妨叫做 Verifier——只拿到了电路的一组输入和输出,如这个例子中的 (1,2,3,4,5) 和 (-27,14,80,171) ,它该若何验证这是一对正当的输入和输出呢?最简朴粗暴的方式就是把这个输入重新扔进电路算一遍。若是电路很大的话,这个验证方式最大的瑕玷就是效率问题。

有些场景下,效率还不是唯一的问题。例如,输入可能包罗 Verifier 不能知道的隐秘信息。假设上例中的 (3,4,5) 是隐秘输入,Verifier 只能看到 (1,2) ,如下图所示。此时 Verifier 要验证的问题就变成了「是否存在 (?,?,?) 使得电路在输入 (1,2,?,?,?) 的时刻的输出是 (-27,14,80,171) 」。这个场景下,即使是简朴粗暴的重新盘算也不再可行。

一句话归纳综合盘算验证问题:Verifier 能否在不知道隐秘输入的情况下,高效地验证盘算效果?

从电路到 R1CS 问题

一个 zkSNARK 就是对上述问题的一个解决方案。使用 zkSNARK,一个证实者,叫做 Prover,可以为盘算历程天生一个简短的证实字符串。Verifier 读取这个字符串,就可以判断给定的公然输入和输出是否正当。

Groth16 是众多 zkSNARK 组织方案中的一种。接下来,我们先容 Groth16 是怎么解决盘算验证问题的。

首先,我们重新审阅一下 Verifier 的义务:我们只知道电路的前两个输入是 (1,2),我们的目的是要判断是否存在一组正当的隐秘输入,使得电路的输出是 (-27,14,80,171)。若是我们换个角度看这个问题,它实在可以形貌为:给一个电路,上面有些空格可以填数字,有些空格已经填上了数字,叨教是否存在一种填法,能够同时知足每个门的逻辑?

从这个新的角度,盘算验证问题被转换成了一个类似于数独那样的填数字游戏:有一些空格,一部门已经填上,请你填上另外一些空格,知足一些限制条件。

然后,我们为每一个要知足的条件列一个方程。这里,每个要知足的条件实在就是一个门的逻辑:加秘诀的输出即是两个输入之和,乘秘诀的输出即是两个输入之积。于是,原来的填空游戏就变成了一个多元方程组。上述例子转化获得的方程组如下:

最后,我们对这个方程做一些整理,使得它能够写成矩阵和向量的形式,加倍整齐和简练。我们把每个方程都写成 * = * x * 的模式。只管并不是所有方程中都有乘法,但我们可以给没有乘法的式子乘上一个 。于是方程组变成了下面这个样子:

把所有方程合到一起,就获得了原方程组的矩阵示意

我们把最终获得的这个矩阵向量方程叫做一个 Rank-1 Constraint System (R1CS)

总结一下,这一节中我们把盘算验证问题转化成了数学问题 R1CS。

在盘算验证问题中,Verifier 知道一个电路,拿到公然部门的输入,以及电路的输出,判断它们是否正当。

从 R1CS 问题到 QAP 问题

在零知识证实领域,R1CS 基本上就是电路的代名词。许多 zkSNARK 把 R1CS 问题作为目的问题。不外,大部门 zkSNARK 不会直接对 R1CS 下手,而是把 R1CS 问题继续转化,获得一个等价的多项式问题,再对这个多项式问题设计证实方案。Groth16 也不破例。差别的 zkSNARK 选择的多项式问题各不相同,Groth16 选择的是一个叫做 Quadratic Arithmetic Programming (QAP)的问题。

这一节中先容一下怎样把 R1CS 问题转化为等价的 QAP 问题。

然后,我们把这些列向量换成多项式,使得多项式方程和原先的向量方程等价。

把向量转化成多项式的一种方式是使用多项式插值。

,

Usdt第三方支付平台

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

多项式插值

QAP 问题

现在,我们直接把 R1CS 矩阵中的列向量换成它们的多项式插值,获得的效果如下图所示。

我们用一个表格总结一下上文中提到的所有问题。

为什么要越搞越庞大,把电路问题转化为 QAP 问题呢?一个简朴的回覆:就是为了引入多项式!多项式是一个壮大的工具。多项式的作用,可以明白为一个「杠杆」,或者叫「误差放大器」。若是我们要检查两个长度为 10000 的向量是否相等,一定需要检查 10000 次,哪怕检查过了 9999 个点都是一样的,也不能保证最后一点是相同的。而两个 10000 次的多项式,哪怕异常靠近,比如说它们的系数有 9999 个都相同,或者它们在 这些点上的取值都相等,但只要有一个点差别,这两个多项式就截然差别。这意味着,若是在一个很大的范围内,例如 到 当中平均随机选一个点,两个差别的多项式在这个点上相等的机遇只有 。检查两个多项式是否相等,比检查同样规模的向量要快得多,这几乎是所有 zkSNARK 提高 Verifier 效率的基本原理。

为 QAP 问题组织 zkSNARK

QAP 问题就是 Groth16 要用来组织 zkSNARK 的最终问题了。不外,在注释 Groth16 的组织细节之前,我们先准备一些工具。

准备工具

我们假设读者对椭圆曲线群的基本特征和应用有所领会,并接纳加法群的记号来形貌椭圆曲线群中的点和运算。椭圆曲线群中的元素可以用来示意多项式,并限制 Prover 必须使用给定的多项式来举行线性组合。这正是 QAP 所需要用到的特征。

我们看一下椭圆曲线是怎么用来示意多项式的。

KoE 假设

然而,上述直觉并不能从离散对数假设严格地证实而来。以是,只能把它作为一个新的平安性假设来用。这个假设就叫做 Knowledge-of-Exponent (KoE) 假设。

KoE 假设怎样应用到 QAP 问题上呢?那就是,KoE 允许我们使用椭圆曲线点来示意多项式,而且迫使 Prover 只能从已知的多项式线性组合发生新的多项式。

不外,到现在为止,我们忽略了两个关键问题:

关于第二个问题,一个解决方式就是双线性配对

双线性配对

现在,我们已经准备好了工具:KoE 假设和双线性配对。接下来,我们就先容 Groth16 是若作甚 QAP 问题组织 zkSNARK 的。

Groth16 方案

Setup

Prove

Verify

剖析

我们简朴注释一下上述组织为什么能够事情。至于它为什么是平安的,请感兴趣的读者参阅 [Gro16] 原文。

固然,Verifier 的验证式中还包罗了许多其他项,但在 Groth 的精心设计下,它们都消掉了。感兴趣的可以自行验证。

小结

本文中,我们注释了 Groth16 这个 zkSNARK 方案的组织原理。我们从算术电路最先,先容了怎样将盘算验证问题转化为 R1CS 问题以及 QAP 问题。然后我们注释了怎样使用 Groth16 方案来证实知道一个 QAP 问题的解。Groth16 方案使用了 KoE 假设以及双线性配对。它的瑕玷是需要可信第三方举行初始化,而且初始化历程需要对每个电路举行一次。与此同时,Groth16 享有最高效的 Verifier 算法以及最短的证实字符串,使得 Groth16 成为至今仍然应用最广的 zkSNARK 方案。

Allbet Gaming声明:该文看法仅代表作者自己,与www.allbetgame.us无关。转载请注明:usdt第三方支付(www.caibao.it):一文领会最热门的 zkSNARK 方案:Groth16 方案
发布评论

分享到:

usdt不用实名买卖(www.caibao.it):辽篮最后一块拼图引关注 新外助将成季后赛X因素
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。