作者:FoxTechCTO林彦熹,FoxTech首席科学家孟铉济
前言
Prover和Verifier之间的计算代理思想是零知识证明的核心内容之一,是调节证明者和验证者工作量于复杂度之间取舍的工具。不同的零知识证明算法本质的不同在于不同程度的计算代理;高度的代理虽然会使验证的计算容易,但是却可能使得证明的复杂度高,从而导致证明耗时长,或是生成的证明大小较大;反之,低程度的代理会使得验证者的开销较大。
图1:零知识证明的计算代理程度影响
计算代理是什么
随着以太坊上应用和用户的扩展,以太主网上的拥堵程度不断提升,使用zkRollup进行Layer2的扩容成为一个很有吸引力的方案,FOX就是专注于使用FOAKS算法进行zkRollup的项目。而zkRollup的可行性,本质上在于使用的零知识证明算法的原理可行性。简单来说,零知识证明算法实现的功能是使得证明者向验证者证明某件事,但又不透露任何关于这件事的信息。zkRollup的构造就是利用了这个性质,使得Layer2的节点可以执行原本在Layer1进行的计算,同时向Layer1节点提供计算正确性的证明。
Web3应用程序Kresus推出加密和NFT钱包:金色财经报道,Web3应用程序Kresus在iOS应用商店上线加密和NFT钱包SuperApp Kresus。每个Kresus用户将获得Kresus Web3 ID,可通过信用卡或Apple pay购买加密货币。
此前3月报道,Web3应用程序Kresus筹集到2500万美元A轮融资,LibertyCity Ventures领投。[2023/5/12 14:59:34]
从更广义的角度来说,上述的过程我们可以理解为,由于验证者计算能力有限,所以将这部分的计算代理给了证明者来执行,证明者完成了这个任务,需要返回结果给验证者。从这个角度来说,我们可以说,零知识证明算法使得保障正确性的“计算代理”得以实现。从宏观上这种计算代理的例子可以表现为zkRollup这种形式的应用,具体到零知识算法当中,这种计算代理的思想也有各种应用。
Gitcoin新一轮捐赠活动将于4月25日开启:4月24日消息,据官方消息,Gitcoin即将于4月25日至5月9日开放Gitcoin Program Beta Round捐赠活动,官方提醒用户可以先检查一下Gitcoin Passport是否为最新版本,官方会每90天重置一次Passport以确保用户所有资格为最新。为了参加Gitcoin新一轮捐赠活动,用户必须在4月25日活动上线之前重新收集印章(Stamp)。[2023/4/24 14:22:25]
本文主要介绍FOAKS使用的在Orion当中提到的Code-Switching所做的令证明者帮助验证者执行的验证计算过程,以及FOAKS如何应用这种技巧进行递归。从而减少了证明的大小以及验证者的开销。
为什么需要计算代理
DeBank工程师:Uniswap已使用Permit 2,用户需认真检查签名内容以防资产损失:金色财经报道,DeBank工程师galenyuan.eth发推表示,Uniswap网页已经在使用新的代币授权标准Permit 2了,这意味着你的资产已经被放在这个潘多拉的魔盒中,不要签名任何看不懂的签名(包括文本签名),魔盒一旦打开很可能一笔签名就可以转走你所有资产。[2023/2/7 11:51:36]
从系统的实用性角度来说,很多情况下计算节点的算力是有限的,或者说计算资源是很宝贵的。例如在Layer1链上的所有计算都需要经过所有节点的共识,并且用户需要为此支付高昂的手续费。所以,在这种情况下,将本来由共识节点来处理的计算“代理出去”交给链下节点来完成,就是一种自然的想法,避免消耗链上资源。而这也正是FOX所专注的链下计算服务。
美国纽约检察官邀请FTX欺诈受害者提供信息并与当局合作:金色财经报道,美国纽约南区检察官办公室周五创建了一个新网站,邀请FTX欺诈案中的受害者提供相关信息,并与监管当局合作。该网站写道,请使用下面列出的电子邮件地址联系美国检察官办公室的受害者/证人协调员,以协助核实您是否是本案的受害者。[2023/1/7 10:59:22]
从密码学理论角度来讲,在GMR模型当中限定了证明者拥有无限计算能力,验证者拥有多项式计算能力。如果验证者也有无限能力,则零知识证明的基本性质无法满足。所以自然地,将计算向证明者一方倾斜,让证明者承担更多的计算就是很多零知识证明算法设计都会考虑的问题。
当然,为了实现这一点,我们需要特别的技巧。
CodeSwitching
欧盟的DLT试点将允许市场运营商在新的加密法规出台之前交易稳定币:金色财经报道,欧盟专员Rok Zvelc表示,欧盟的一个试点项目将允许市场参与者在加密货币法律框架至少两年后实施之前使用稳定币进行交易和结算。该计划被称为DLT试点制度,允许传统金融和数字金融的参与者在受监管的环境中试验使用通证化证券。
所谓的电子货币代币,是单一法定货币计价的稳定币,在欧盟全面的加密资产市场监管中被定义为MiCA。这些规则最早要到2024年才能应用,但试点参与者已经能够在DLT试点内的交易和结算中开始使用电子货币代币。(the block)[2022/10/28 11:50:35]
这一节介绍Orion当中使用的CodeSwitching技巧。Orion和FOAKS都使用了Brakedown作为多项式承诺方案,而CodeSwitching是在Orion当中命名的有证明者代替验证者执行验证计算的过程。
在《一文了解FOAKS当中的多项式承诺协议Brakedown》一文当中我们曾经介绍过,验证者的验证计算为以下的过程:
idxI,C0==<0,C1>andEC(y0)==C0
?idxI,C1==<r0,C1>andEC(y1)==C1
现在如果令证明者承担这部分计算,则证明者除了执行这些计算,还要附上证明值来证明自己的计算是正确的。
做法是将上述等式同样写成R1CS电路:
Statement:
EC(y0)=C0,EC(y1)=C1
idxI,C0=<0,C1>andEC(y0)=C0
idxI,C1=<r0,C1>andEC(y1)=C1
y=<r1,y1>
idxI,EC(C1)isconsistentwithROOTidx,andROOTidx’sMerkletreeproofisvalid.
之后使用Virgo算法进行验证。
FOAKS当中的计算代理
在FOAKS当中同样使用类似的技巧完成计算代理,值得一提的是,FOAKS由于使用了Fiat-Shamirheuristic技巧实现了非交互式证明。想要了解更多,读者可以参考《如何将交互式证明改造为非交互式?Fiat-ShamirHeuristic!》。所以FOAKS的挑战生成和Orion所使用的CodeSwitching方法不同,电路当中也需要加入新的等式:
0=H(C1,R,r0,r1)
I=H(C1,R,r0,r1,c1,y1,c0,y0)
这样之后FOAKS当中的证明者同样生成了代理验证者进行验证的计算证明。而对于验证证明的过程,FOAKS利用算法自身进行迭代,这也是FOAKS实现递归的关键内容。具体内容见《如何设计出一种精妙绝伦的证明递归方案》。
通过一定次数的迭代可以使得证明的大小被压缩,从而极大降低验证者的计算负担以及通信复杂度。这就是FOAKS这个零知识证明方案对FOX这条zkRollup的重大意义。
结语
zkRollup中使用的零知识证明算法的计算代理程度需要被精心设计,必须恰到好处才能使其整体达到最佳效率。而FOAKS算法通过自身迭代的递归实现了可以调节的计算代理,是为专门为zkRollup所设计的零知识证明算法。
参考文献
1.Orion:Xie,Tiancheng,YupengZhang,andDawnSong."Orion:Zeroknowledgeproofwithlinearprovertime."AdvancesinCryptology–CRYPTO2022:42ndAnnualInternationalCryptologyConference,CRYPTO2022,SantaBarbara,CA,USA,August15–18,2022,Proceedings,PartIV.Cham:SpringerNatureSwitzerland,2022.
作者:Web3traveler备受瞩目的2023香港Web3嘉年华将在本周拉开帷幕。本次活动由万向区块链实验室、Hashkey协办,即将聚集上百个Web3领先项目,香港特别行政区政府财政司司长、.
1900/1/1 0:00:00原文来源:墨客,《ArkstreamCapital:Blur与OpenSea的悬崖赛车》NFT市场的现状2022年下半年是NFT的冬天.
1900/1/1 0:00:00作者:JamesXYC,MAPProtocol核心开发者,Forbes福布斯Web3InnovationPioneer?前言随笔好多人都说,你是做跨链的.
1900/1/1 0:00:00原文来源:ArthurHayes编译:GaryMa吴说区块链自从美联储在2022年3月开始加息以来,我一直认为,最终的结果总是会出现重大的金融动荡,接着就是恢复印钞.
1900/1/1 0:00:00流动性质押协议Lido发布推文表示,与其在Polkadot的合作伙伴MixBytes达成一致,将从2023年8月1日起停止对Polkadot和Kusama上Lido协议的开发和运营支持.
1900/1/1 0:00:00原文标题:《5分钟在base测试网上部署合约,从而获得base官方给与的NFT》原文作者:@big_rangoBASE官方出来一个任务,在测试网上成功部署合约后,可以在测试网上获得NFT奖励.
1900/1/1 0:00:00