VT公链的属性之一便是匿名性,基于巨大的隐私交易市场规模,VT公链采用零知识证明?(ZKP)?等方式来实现匿名链上交易从而实现隐私性的保证。
在这篇文章中,我们会和大家介绍零知识证明(ZKP)?的定义,并将零知识证明与SNARK和STARK这两个概念进行辨析。
ZKP、SNARK和STARK等这些密码学概念随着最近区块链的兴起变得热?起来。但是,它们经常会被误解和混用。其实,所有这些概念都属于一个更广义的范畴,叫做证明系统(ProofSystem),或者叫做密码学证明。零知识证明和SNARK、STARK之间都有交叉的部分,但并不相互包含。它们之间的关系可以用一张图来表示。
本文将首先介绍证明系统的定义,并讨论证明系统的各类性质,重点讨论「零知识性」、「知识证明」、「简洁性」和「非交互性」。特别的,如果一个证明系统具有「零知识性」,那么它就被称为一个「零知识证明」。最后,文章会讨论?SNARK?和?STARK的定义并将其进行比较。
证明系统
一个证明系统(ProofSystem)?是一个交互式协议,包含两个参与方Prover和Verifier,以及一个算法Setup。证明系统的作用是让Prover说服Verifier相信一件事,我们把这件事叫做一个陈述(Statement)。
协议开始前,需要由某人调用Setup算法。Setup算法接受一些公共参数作为输入,并输出Prover和Verifier所需的Setup信息,其中Verifier获知的信息记为?,Prover获知的信息记为?。?和??的公共部分称为公共参考字符串(CommonReferenceString,CRS)。具体由谁、在什么时候调用Setup算法,取决于证明系统的设计。协议一开始,Prover和Verifier同时得到输入陈述?。Prover相对于Verifier必然要有一些额外的优势,例如更强大的计算能力,或者得到了一些额外的输入?。除此之外,Prover和Verifier还分别获知了??和?。Setup信息获取的时间取决于证明系统的设计。例如,有可能是Prover和Verifier早就下载好存在各自硬盘里可以反复使用的,也可能是协议开始前当场输入的。然后Prover和Verifier开始执行证明系统规定的协议。如果Prover和Verifier都是诚实的,那么它们都严格遵守协议执行。不过,也有可能某一方是恶意的,没有按照协议规定来执行,此时会发生什么事情,取决于证明系统的安全性。如果两方都是恶意的,它们都不遵守协议,那就和这个证明系统没关系了。最后,Verifier输出accept或reject,表示是否相信陈述?。一个证明系统需要满足两个性质:
完整性(Completeness):如果陈述??是正确的,而Prover和Verifier都遵守这个协议,那么Verifier以至少??的概率输出accept,这里??被称为证明系统的完整性误差(Completenesserror)
互换市场完全定价美联储到七月会议前加息25个基点:金色财经报道,互换市场完全定价美联储到七月会议前加息25个基点。[2023/5/25 10:40:03]
可靠性(Soundness):如果陈述??是不正确的,此时Prover必然是不诚实的,而Verifier遵守协议,那么任何Prover都不能让Verifier输出accept的概率超过?,这个??被称为证明系统的可靠性误差(Soundnesserror)
这两个要求是使得一个证明系统成立的最基本的要求。少了哪个要求,我们都可以得到符合条件但完全没用的证明系统。例如,如果我们只要求完整性,那就无论Prover做什么,Verifier永远只输出accept就好了;如果只要求可靠性,那就让Verifier永远只输出reject。此外,一般希望??和??都不超过?,并且加起来小于?,否则这个证明系统误差太大,也近乎无用。如果将一个证明系统的可靠性只对任何计算能力受限的?Prover成立,也就是说,计算能力无限的敌手是有可能Verifier的,此时这个证明系统只有计算可靠性(ComputationalSoundness),这样的系统又称为?论证系统(ArgumentSystem)。相比之下,对任何Prover都安全的可靠性被称为统计可靠性(StatisticalSoundness)。
证明系统的其他性质
一个证明系统还可以满足一些其他(并非必需的)性质
CRS模型(CRSmodel):如果Setup信息是对所有人公开可见的,即Setup=Setup=Setup,称这个证明系统是在CRS模型下的
交互(Interactive)/非交互(Non-interactive):如果整个交互过程只有Prover向Verifier发送一条信息,就称这个系统是非交互证明系统;否则这个系统就是交互式证明系统
可迁移(Transferable)/可抵赖(Deniable):如果陈述??是正确的,并且把交互过程发送给其他Verifier,也能够让其他Verifier相信陈述??的正确性,这个证明系统就是可迁移的;否则这个证明系统就是可抵赖的
公开可验证(PublicVerifiable)/特定验证者(DesignatedVerifier):如果Setup?是对所有人公开可见的,即任何人都可以成为Verifier,这个零知识证明系统就是公开可验证的。否则这个系统就是针对特定验证者的
公开随机(Publiccoin):如果Verifier的所有消息的选取都均匀随机且独立于Prover的消息,就称这个系统是公开随机的
零知识(Zero-Knowledge):在陈述??是正确的情况下,如果除了??的正确性,Verifier无法从交互中获取任何其他“知识”,就称这个系统是零知识的
超45万个独立钱包总计已向zkSync Era存入超2.5亿美元资金:金色财经报道,据Nansen统计显示,自一个多月前推出主网以来,已有超450000个独立钱包向zkSync Era净存入了超2.5亿美元资金。[2023/4/29 14:33:50]
简洁性(Succinctness):如果这个证明系统是用来证明NP语言的,并且证明系统的通信量比证据??还要小,那么这个证明系统就具有简洁性
例:证明两个球的颜色不同
Setup信息:有两个球
陈述?:这两个球颜色不同Verifier计算能力受限(蒙上双眼),Prover具有正常的视力
Verifier左右手各持一个球,展示给Prover看。
Verifier把双手放到背后,接着(在心里)随机抛硬币,如果是正面朝上,就交换左右手里的球,否则不交换。
Verifier把球拿出来给Prover看。
Prover告诉Verifier两个球有没有交换。
结果:如果Prover猜对了,Verifier输出accept,否则Verifier输出reject。性质讨论完整性如果两球颜色不同,显然Prover一定能以百分之百的概率猜中Verifier有没有交换球可靠性如果两球颜色相同,那么Prover只能盲目猜测,只有1/2的概率猜中。这个系统的可靠性误差为1/2CRS这个证明系统是在CRS模型下的,因为Setup信息是公开的交互性这是个交互系统,因为Prover和Verifier互相发送的信息超过一条可迁移性这个系统是不可迁移的,即可抵赖的。即使Verifier把交互过程记录下来展示给其他蒙住眼的人,他们也不能确信两个球颜色不同公开可验证性这个系统是公开可验证的,任何Verifier都可以和Prover进行这个协议公开随机性这个系统不是公开随机的,因为Verifier发送给Prover的信息不是均匀随机的零知识性这个系统是零知识的,因为在两个球颜色确实不同的情况下,Prover的猜测是Verifier意料之中的,除了表示陈述x的正确性外,没有任何额外知识
重要性
上文中我们给出了证明系统的定义,样例和性质。接下来我们讨论证明系统的几个重要的性质。
零知识性
零知识性用来保护诚实的Prover不被恶意的Verifier而泄露证明所需的秘密证据。
上文中已经提到了证明系统的零知识性,将其简单描述为Verifier无法从交互中获取任何“知识”。这个描述是不确切的,因为它并没有给出一个严格的判断标准。零知识性的定义本身是违直觉的:Prover明明发送了一些比特数据给Verifier,为什么这个系统会是“零知识”的呢?实际上,“信息”并不等同于“知识”。如果Verifier获取了信息,但获得这些信息并不能让Verifier计算出更多结果,或者说这些信息是Verifier自己就能够计算出来的,那么Verifier就没有获取任何“知识”。在一个证明系统的执行过程中,Verifier获得的所有信息包括:;Verifier自己的随机数;Prover发送给Verifier的所有信息(记为?)。我们把这些信息称为Verifier的“视野”,记为?。这些信息是Verifier计算过程中的所有不确定性的来源。确定了这些信息后,其他的一切都可以确定性地计算出来。注意到,?是一个随机变量。当Verifier与Prover执行了证明系统之后,Verifier会获得这个随机变量的一个样本。如果Verifier能在没有Prover参与的情况下独自采样?,那么这个系统就是零知识的。我们把采样??这个随机变量的算法叫做模拟器(Simulator)。根据模拟器工作方式的不同,有如下不同的定义方式:
美联储的布拉德:上调今年峰值利率预期至5.625%:金色财经报道,美联储官员布拉德周五表示,由于经济持续表现强劲,基于银行业压力将会缓解的假设,已将他对今年峰值利率的预期上调。“我之前预计是5-3/8,现在是5-5/8,所以略高了一点——高了25个基点——以反映经济表现的走强,”他表示。他补充道,上调预期也“基于假设,即金融压力会在未来几周和几个月缓和”。“存在金融压力恶化的负面情景,但这不是我的基本预测情景”。[2023/3/25 13:25:38]
非黑盒模拟器,相对应的零知识性叫做非黑盒零知识。这个零知识的定义允许每个Verifier都存在一个“独家定制”的模拟器,这种定义允许模拟器针对不同的Verifier的实现细节来定制不同的采样过程。
黑盒模拟器,对应的就是黑盒零知识。这个零知识的定义要求存在唯一的模拟器,使得对所有的Verifier,它都能够采样出?。这个唯一的模拟器不可能知道所有Verifier的具体实现细节,所以它只能通过黑盒调用的方式来访问Verifier。不过,模拟器对Verifier具有完全的控制权。模拟器可以决定Verifier的随机数?,并给Verifier输入任何的Prover消息或?。所以,在模拟器的眼里,Verifier是一个黑盒的确定性算法。
如果模拟器只针对诚实Verifier,对应的是诚实Verifier零知识(HonestVerifierZK)。因为诚实Verifier的行为是完全在预期中的,模拟器自然可以利用这些信息,因此这个模拟器对Verifier的访问是非黑盒的。
非黑盒模拟器访问到的信息更多,所以非黑盒零知识性比黑盒零知识性更容易成立。而诚实Verifier零知识是最容易实现的。关于诚实Verifier零知识,这里的诚实Verifier更准确地说是半诚实(Semi-Honest)的,或者说“诚实但好奇的”。这样的Verifier表面上会遵守协议,但有可能私下里试图从消息中提取知识。相比之下,恶意Verifier的行为是完全不受限制的。Verifier可能宕机、发送不符合格式的消息、不按协议规定的分布采样,等等。要证明一个系统对恶意的Verifier满足零知识性,就要把所有这些情况都覆盖到。模拟器是一个随机算法,它的输出值也是一个随机变量,记为?。零知识性要求??和??这两个随机变量难以区分。不过,“难以区分”这个词也有很多种版本,由此可以推出零知识证明的多种定义:
如果两个随机变量的分布是统计不可区分的,也就是它们的统计距离(StatisticalDistance)可忽略,就称这个证明系统是统计零知识(StatisticallyZero-Knowledge)?的;如果统计距离就是0,又叫做完美零知识(PerfectZero-Knowledge)?的;
Cosmos第四次公共激励测试网活动Game of NFTS现已启动:金色财经报道,Cosmos 推出第四次公共激励测试网活动 Game of NFTS(GoN),第一阶段已开放注册。GoN 是一个两个阶段的跨链活动,通过激励测试网(第一阶段)彻底测试跨链 NFT(ICS-721)的底层技术,并通过黑客马拉松(第二阶段)在其基础上建立创新和开放的 DApp。第一阶段获胜者将获得 2 万枚 ATOM。第二阶段将举办 Interchain Hackathon 黑客马拉松,届时将有更多的跨链开发团队以及 AWS、HashKey Capital 和 IDG Capital 等机构参与。[2023/2/16 12:11:13]
如果两个随机变量的分布是计算不可区分的,也就是任何多项式时间的随机敌手都无法区分这两个分布,就称这个证明系统是计算零知识(ComputationallyZero-Knowledge)的。
注意到,零知识的定义中,只要求对于正确的陈述?,?和??的分布难以区分。对于错误的陈述,我们并不关心Verifier能够获取什么知识,因为这种情况下Prover本身就是不诚实的,没有必要去保护它,或者说,Prover既然不遵守协议,那我们的协议设计得再好也保护不到它。不过,虽然??是错误的情况下,零知识性对??的分布不做任何假定,但如果输入错误的?采样得到的??被Verifier验证通过的概率和??正确的情况下有显著差别的话,我们就可以借此判断??的正确性。这就意味着??只能来自一个平凡的NP语言。所以,对于困难的NP问题,把错误的??输入给模拟器,得到的??也能够以一样的概率被验证通过。这么一来,零知识性和可靠性岂不是矛盾的?换句话说,对于错误的?,Prover为什么不能调用模拟器来Verifier?实际上,Prover不能控制Verifier,它也就不能为模拟器提供采样??所需要的资源。的确,一个恶意的Prover可以去调用模拟器,但是这对它来说没用,因为模拟器输出的??中的??并不是正在与Prover交互的Verifier的随机数。此外,模拟器输出的??也可能和Verifier收到的??不同而导致验证不通过。不过,Prover调起的模拟器无法获取Verifier的随机数,这已经足够保证安全性了,所以交互式证明中??即使是固定常量也没问题。
知识证明
如果要求Prover必须“知道”一些信息才能让Verifier验证通过,这个系统就被称为知识证明(ProofofKnowledge)。知识证明可以看做可靠性的加强版。知识证明也有计算意义下的版本,叫做知识论证(ArgumentofKnowledge)。
知识证明系统通常是用来证明NP语言的。一个NP语言是指一个集合?,使得元素??属于?可以由一个证据??来证明,即存在一个多项式时间的算法能够判定??是否是??属于??的合法证据。普通的证明系统使得Prover可以向Verifier证明?。而知识证明系统使得Prover可以向Verifier证明的不仅是?,还可以证明Prover“知道”?。也就是说,即使?,如果Prover不知道对应的?,也难以验证通过。和上一节讨论的零知识性类似,“知识性”也需要严格的定义。一个程序P“知道”数据?,到底该怎样定义呢?想象一下把这个程序运行在一个虚拟机里,它的随机数是可以由我们随意指定的。它的整个运行过程中,CPU状态的完整历史记录,以及所有的内存读写操作,都可以由虚拟机记录下来。如果这个程序“知道”?,我们总该从这些记录中提取出??的信息吧。实际上,这就是提取器(Extractor)?的一种直观的理解方式。提取器就是一个算法,它能够和被提取的程序同时运行,并能够访问到被提取的程序的内部状态。最后,它可以输出提取的结果。上面描述的提取器是非黑盒提取器,因为它可以访问被提取程序的内部状态。非黑盒提取器的算法必然要随着被提取程序的不同而变化。所以,一个证明系统是一个知识证明,是这样定义的:“对于任意Prover?,存在一个提取器?,它和??同时执行,并能够访问到??的内部状态。如果??和??交互后??输出accept,那么??就会输出满足条件的?。”类似于零知识定义中的模拟器,提取器也可以用黑盒的方式定义。提取器无法访问程序的内部状态,但可以调用这个程序,控制这个程序的随机数,并读取这个程序的输出。我们引入这样一个记号?,表示提取器通过黑盒的方式访问一对Prover和Verifier的交互过程。黑盒提取器对所有的Prover只需要有一个就够了,所以知识性证明就可以如下定义:“存在一个提取器?,对于任意Prover?,如果??和??交互后??输出accept,那么??就会输出满足条件的?。”
Coinbase NFT市场新增从Profile页面上架NFT和显示美元价格:6月5日消息,Coinbase NFT市场宣布新增多项功能,包括允许直接从Profile页面上架NFT,NFT的ETH价格后面显示美元价格、在Profile中批量隐藏或显示多个NFT,以及在上架时编辑上架价格(而无需退出或重新打开上架流程)等。[2022/6/5 4:02:54]
简洁性
用??表示一个NP语言的实例,?表示??存在语言中的证据。简洁性(Succinctness)?是指一个证明系统所需的通信量低于??的线性函数。换句话说,Prover和Verifier执行这个证明系统,比Prover直接把??发送给Verifier,还要节省通信带宽。有时候,简洁性还可能要求Verifier在证明系统中的计算量要低于验证?。总之,简洁性要求证明系统在效率方面有优势。
我们可能会希望一个简洁证明系统的通信量达到对数级别或更低,即?。然而这样的简洁性要求会带来安全性的损失。因为如果通信量低达对数级别,那么Prover的消息组合??所在的整个空间是可以在??时间内穷举的。然而,系统的可靠性要求,对于错误的陈述?,Prover不能找到让Verifier验证通过的?。假如能够验证通过的??压根不存在,这样确实能够保证可靠性。但这样就可以通过穷举??来判断?的合法性,那么??就不是一个困难问题,这就排除了一般的NP语言。如果我们想要一般的NP语言的证明系统,我们必须允许即使对于错误的?,也存在少量的能够验证通过的?。这种情况下,我们只能额外引入一个安全参数?,将通信量的大小放宽为?,使得穷举??的复杂度达到?,这样至少实现了计算意义下的可靠性。同时,通信量相对于??仍然是对数级别的,所以满足了简洁性。综上,对于一般的NP语言,(对数级别的)简洁证明系统只能是论证系统。
非交互性
非交互性(Non-Interactivity)?是指证明系统的全部交互只有Prover向Verifier发送的一条消息,这个消息叫做一个证明,记为?。非交互性可以带来许多的便利,为证明系统带来更多的应用场景。例如,在区块链系统中,非交互性的零知识证明可以附在交易中,供任何人随时查验,而不需要交易的作者随时在线与验证者交互。
任何NP语言都天然具有一个非交互证明协议,也就是Prover直接将证据发送给Verifier,而且这个证明是知识证明。所以,构造一个单纯具有非交互性的证明系统意义不大。非交互性只有和前面讨论的两个性质,即零知识性或简洁性组合起来才有意思。非交互性+零知识将零知识性和非交互性结合起来,就有了非交互零知识(Non-InteractiveZero-Knowledge,NIZK)。我们之前在讨论零知识性时讲到,零知识性之所以和可靠性不矛盾,是因为调用模拟器采样的??中的??大概率和与Prover交互的Verifier的随机数不同。但是,对于非交互零知识,我们要重新审视一下这个推理过程。在交互证明中,一个随机数为??的Verifier能够验证通过的Prover消息?,直接搬到随机数为??的Verifier那里就很可能验证不通过了。所以,在交互式证明中,?的正确性不是全局的,而是依赖??的。而在非交互证明中,Prover没有收到Verifier的任何消息,所以Prover的计算过程没有用到Verifier的随机数?。所以,为了达到证明系统的完整性,诚实的Prover输出的?,对于大部分Verifier随机数??都是能验证通过的。所以,非交互证明中的??的正确性是全局的,不依赖任何。零知识性要求,Verifier的视野??和模拟器的输出??不可区分。这意味着,如果单独观察这它们部分分量,它们也是不可区分的。即??和??中的??也是不可区分的。所以,一个恶意的Prover可以调用模拟器来输出?。这在交互式证明中不成问题,恶意的Prover仅仅是得到了关于某个??正确的??罢了。但在非交互证明中,?的正确性是不依赖??的,就会带来安全问题。这时候,就要轮到??发挥作用了。虽然??的正确性不再依赖于?,但还是依赖于?的。为了可靠性,我们希望,给定??和陈述??难以计算出能够通过验证的?。虽然模拟器在给定??时可以同时输出一对?,但是难以先计算前者再计算后者。具体是怎样做到这一点的,后续文章中介绍具体方案时会详细讲解。非交互性+简洁性上文提到,简洁性的证明系统必然是论证系统。结合非交互性,就有了简洁非交互式论证(SuccinctNon-interactiveARGument,SNARG)。实际上,满足SNARG定义的系统早在2000年就由Micali构造出来了,而这个名字是后来才出现的。如果一个SNARG同时是一个知识论证,它就被称为简洁非交互式知识性论证(SuccinctNon-interactiveARgumentofKnowledge,SNARK)。SNARK这个名称由论文BCCT12首创,现在已经成为零知识证明领域最热门的概念之一。其实SNARK只具有简洁性和非交互性,并不一定具有零知识性。如果有零知识性,应该叫zkSNARK。STARK和SNARK辨析另一个经常和SNARK一起提到的概念是STARK。它和SNARK只有一字之差,但有很多不同。下面我们比较一下这两个概念。共同点:
都是知识论证(ARK),即只有计算意义下的可靠性,且证明是知识性的
区别:
SNARK的“S”是简洁性(Succintness),而STARK的“S”是可扩展性(Scalability),它在简洁性的基础上还要求Prover复杂度至多是拟线性(Quasi-linear)的,即?,而Setup的计算复杂度最多是对数的
透明性(Transparent):STARK不需要可信第三方Setup;而SNARK没有这个限制
非交互性(Non-Interactivity):SNARK一定是非交互的,而STARK没有这个限制
可以看出,SNARK比STARK唯一多出的限制就是非交互性。尽管如此,通过后续文章将要介绍的Fiat-Shamir变换,STARK一般都可以转化为非交互证明,转化的结果必然是一个SNARK。在这种意义上,可以把STARK看做SNARK的子集。上述SNARK和STARK的定义是这两个名词的广义涵义。狭义上,它们分别指代两个具体的构造方案。其中SNARK指的是以Groth16方案为代表的一系列基于QAP和双线性对的zkSNARK构造方案。而STARK在狭义上就专门指代Ben-Sasson等人在2018年提出的基于AIR和FRI的那一个方案。
小结
本文介绍了证明系统的定义,并讨论了证明系统的各类性质,重点讨论了“零知识性”、“知识证明”、“简洁性”和“非交互性”,解释了如何用模拟器来定义零知识性,以及用提取器来定义知识性证明。最后,文章讨论并比较了SNARK和STARK,以上便是VT采用ZKP技的技术资料介绍。
来源:金色财经
咖啡苦与甜,不在于怎样搅拌,而在于你是否放糖,不断过往,不在于如何忘记,而是是否有勇气重新开始,不要在交易中总是倔强的不愿屈服,换来的或许只有伤痕累累,泡一杯咖啡,点一支烟,半眯着眼.
1900/1/1 0:00:00泉阳泉矿泉水形成及赋存条件。该矿泉水的形成严格受地质构造条件、岩性、水文地球化学条件以及地下水循环条件控制。由于断裂构造和地形切割等作用,泉阳泉在军舰山组玄武岩裂隙中涌出.
1900/1/1 0:00:0011月7日,以太坊价格上涨至464美元,而比特币价格在涨至15900美元左右后回落至15500美元。基于以太坊的强劲势头,交易员预计短期内会出现更大的涨势.
1900/1/1 0:00:00今日比特币行情解析,目前的比特币正如阿平前日所说一旦跌破支撑点下跌幅度将一步扩大,跌幅达上千点.
1900/1/1 0:00:00数字资产管理公司灰度发推称,当我们回顾货币的历史时,无限量印刷纸币就是与价值挥手再见。但是现在价值可以像信息一样以同样的速度被传送到世界的任何地方.
1900/1/1 0:00:00这几天中,社群的氛围与比特币牛市形成了鲜明对比。比特币价格不断突破新高,据火币BTC现货数据,比特币价格直逼16000美金,创近年来新高.
1900/1/1 0:00:00