前言
Bulletproofs,又一个有意思的零知识证明算法,相信读者已经很熟悉它了。和zk-snark相比,它不需要可信设置;和zk-stark算法相比,它具有较小的proofsize。根据论文,它有两个方面的应用:
用于rangeproof;用于一般算术电路的零知识证明。下面,让我们先看一下Bulletproofs是如何高效的实现第一点。Rangeproof
1.预备知识
aL:表示向量{a1、a2……an}
2n:表示向量{20、21…2n-1}
<a、b>:表示向量内积∑ai*bi,结果是一个值
aob:向量对应位相乘,{a1*b1……anbn},结果是一个向量
以太坊核心开发者:计划今年晚些时候推出新测试网解决测试网ETH供应问题:2月24日消息,以太坊核心开发者 Tim Beiko 针对以太坊测试网 ETH 供应问题表示,计划今年晚些时候推出新测试网 Holli(网络名称也可能为 Hole?ky)。关于“在兼顾客户端和质押者的情况下,如何让应用开发人员轻松访问测试网 ETH,以及如果转移到新的测试网,如何让主要项目转移迁移,允许可组合性”问题,Tim Beiko 给出的两个建议分别是,将每个在主网、Goerli 和 Sepolia 上部署了合约的 ETH 地址添加到 genesis file 件中,与主要合约和基础设施开发商协调在创世后不久在网络上启动。Tim Beiko 目前还在征求应用层开发人员关于解决这个问题的意见。[2023/2/24 12:26:54]
2.证明
Stargate社区就以市场价格向一家族办公室出售价值200万美元的STG进行投票:1月22日消息,Stargate社区新提案提议以市场价格向一家族办公室出售价值200万美元的STG。提案提到,一位家族办公室的代表与Stargate基金会接洽,希望以市场价格从StargateDAO收购价值200万美元的STG。
若StargateDAO完成此交易,出售价格将被定为STG市场价格的3日加权平均数。目前该投票已经开始,结束日期为1月24日。[2023/1/23 11:26:25]
Alice想要证明?v??=>则,需要证明一个relation得成立,如下所示:
{:V=?grhv?^v??}
public-xwitness-wrelation-R
ZigZag已完成第一轮空投发放,后续空投将采用其他标准:1月21日消息,以太坊二层ZK Rollup订单簿DEX ZigZag发推称,第一轮空投已经发放。做市商机器人获得了奖励。他们由专门的社区成员运作,这些社区成员提供流动性并确保用户始终有交易对手。用户可以查看地址进行查询。
ZigZag补充称,这只是第一轮空投。接下来的几轮空投还将采用其他标准。如果用户没有资格参加这一轮,可能会有资格参加未来的几轮(包括交易员)。请继续关注后续公告。
此前消息,ZigZag宣布将进行首轮代币空投,以奖励早期做市商。zkSync已于北京时间1月17日14:00对符合条件的做市商进行快照。ZigZag总代币供应量的约2%将分配给符合条件的做市商,每个做市商将获得至少100枚ZZ代币,具体奖励将根据其完成的订单数量而增加。[2023/1/21 11:24:42]
即,对于公开信息x,Alice有隐私信息w,使得关系R成立。
NFT项目HangryBarboons在过去两周的交易量超过了1000万美元:金色财经报道,截至10月29日,Hedera链上表现最好的 NFT 项目HangryBarboons在过去两周的交易量超过了 1000 万美元。增长的原因之一可能是Hedera越来越多的社交提及和参与。根据社交媒体分析公司LunarCrush的数据,上周 Hedera 的社交提及次数增长了 16%。此外,在上述期间,社交活动的数量增长了 19.7%。
此外,Hedera 的销量在过去一周显着增长,Hedera 的交易量在几天内从 2000 万美元增加到 3500 万美元。除了交易量,HBAR 的市值也在持续增长。[2022/10/30 11:57:47]
令aL为金额v的在范围内的二进制形式,则aL={a1、a2……an}?{0,1}n,且满足<aL,2n?>=v。因此,证明者需要证明以下几个等式相等:
等式(1)确保了承诺V和金额v的绑定关系,等式(2)确保了v的范围,等式(3)、(4)确保了aL?元素只属于{0,1}。等式(2)/(3)/(4)总共包含了2n+1个约束,其中公式(2)1个,公式(3)(4)各n个。接下来,为了效率,我们需要把2n+1个约束转换成1个约束。
3.2n+1个约束转换成1个约束
=>预备:从Zp?中任意选择一个数y,则b=0n是等式<b,yn>=0成立的充分条件;因为当b!=0n,等式成立的概率仅有n/p,p是有限域,远大于n。因此,如果有<b,yn>=0,那么验证者愿意相信b!=0n?。
利用这个理论,我们把等式(2)/(3)/(4)做以下转换:
验证者随机选取一个数y发送给证明者证明者要证明:
同理,等式(5)确保了v的范围,等式(6)(7)确保了aL?元素只属于{0,1}。此时2n+1个约束转换成3个约束,接下来,还需要做进一步的处理:
验证者随机选取一个数z发送给证明者证明者利用z对公式(5)(6)(7)进行线性组合,得到如下公式:z2**<aL、2n?>+z*<aL?-1n-aR、yn>+<aL、aR?oyn?>=z2?*v(8)
至此,我们已经把2n+1个约束转换成1个约束。下面我们对公式(8)做进一步的优化,把三个点积优化成1个点积。
4.三个点积优化成1个点积
=>令
L=aL?-z*1n
R=(aR?+z*1n)oyn?+z2?*2n
δ=(z–z2)*<1n,yn?>-z3*<1n,2n?>
5.验证:
证明者把L/R/V发送给验证者;验证者事先算好δ验证者根据L算出来aL,根据<aL,2n?>=v算出v验证者根据L、R、v、δ验证等式<L,R>=z2?*v+δ因为y,z都是验证者提供,因此如果验证者如果能验证公式(9)成立,则相信等式(5)(6)(7)成立,则相信等式(2)(3)(4)成立,则相信v满足关系v?。
但是,可以看到上述过程,泄露了v的信息,因此需要一个零知识证明协议。
6.一个零知识证明协议
由于L、R包含了v的相关信息,因此,我们需要添加两个盲因子sL、sR来隐藏aL,aR。如公式(10)(11)所示:
此时,定义公式(12)
可以看出系数t0是l(x)和r(x)常数项的乘积,即满足:
t0?=<L,R>=z2*v+δ
因此,问题由证明:
<L,R>=z2*v+δ
转化成了,在任意一点x,验证者验证多项式值l(x),r(x),t(x)满足关系:
<l(x),r(x)>=t(x)
多项式值l(x),r(x),t(x)由证明者提供,为了保证l(x),r(x)well-formed,即:
需要校验:
=>当且仅当l/rwell-formed,等式成立
为了保证t(x)well-fromed,即:
t=t0?+t1x+t2x2
需要校验:
=>?当且仅当t和τx?welle-formed,等式成立
具体的协议流程图如下图所示:
总结
从上述流程可以看出,一次rangeproof,证明者需要发送总共**{l/r/t/τx?/μ/T1?/T2/A/S}**个元素给验证者,总共2n+3个Zp元素,4个G元素。下一篇文章将细讲,Bulletproofs如何将交互复杂度降低到对数级O(log(n))。
附录
Bulletproofs论文:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8418611
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。