V神讲解zk-SNARKs内部原理(下)

简介:这是V神本系列文章的第三部分的下半部分,解释了zk-SNARKs背后的技术是如何运作的;以前关于二次运算程序椭圆曲线配对的文章是必读的,本文将假设你已经知道这两个概念,并了解zk-SNARKs的基本知识和它们的作用。另请参阅另外一篇对zk-SNARKs的介绍,Christian Reitwiessner的文章
(本文授权BH好文好报群摘编、转载以及相关转授权推文行为)

(下面接着上半部分讲解)


下一步是确保所有三个线性组合具有相同的系数。我们可以通过向可信设置添加另一组值来实现:G *(A_i(t)+ B_i(t)+ C_i(t))* b,其中b是应被视为“有毒废物”的另一个数字,一旦可信设置完成就丢弃。然后我们可以让证明者,使用相同的系数创建具有这些值的线性组合,并使用与上述相同的配对技巧,来验证该值与提供的A + B + C是否匹配。

最后,我们需要证明A * B - C = H * Z.我们再次进行配对检查:

e(π_a,π_b)/ e(π_c,G)?= e(π_h,G * Z(t))

其中π_h= G * H(t)。如果你看不出此等式与A * B - C = H * Z之间的衔接关系,请返回并阅读有关配对的文章。

我们在上面看到了如何将A,B和C转换为椭圆曲线上的点; G只是生成器(即,这个椭圆曲线点G相当于数字中的1)。我们可以将G * Z(t)添加到可信设置中。 H更难计算; H只是一个多项式,对于每个QAP的解来说,我们很难提前预测它的系数。因此,我们需要向可信设置添加更多数据;特别是序列:

G,G * t,G *t²,G *t³,G *t⁴......

在Zcash可信设置中,此处的序列大约为200万;想想看你需要耗费多大的算力才能确保你能计算H(t)。由此,证明者可以为验证者提供所有信息以进行最终检查。


还有一个我们需要讨论的细节。大多数时候,我们不仅仅想抽象地证明某些特定问题存在某种解决方案;相反,我们想要证明某些特定解决方案的正确性(例如,证明:如果把“cow”这个词用SHA3算法哈希一百万次,最终结果从0x73064fe5开始),或者如果限制一些参数就一定存在一个解。例如,在加密货币的实现中,交易金额和帐户余额已加密,您需要证明您知道某些解密密钥k,以便:

decrypt(old_balance,k)≥deconspt(tx_value,k)
decrypt(old_balance,k) - decrypt(tx_value,k)= decrypt(new_balance,k)

加密后的old_balance,tx_value和new_balance需要公开出来,因为这些是我们在特定时间要查看的具体值;只有解密密钥需要被隐藏。需要对协议进行一些细微的修改才能创建一个“自定义验证密钥”,该密钥对应于对输入的某些特定限制。


现在,让我们退一步吧。首先,这里是完整的验证算法,由Ben Sasson,Tromer,Virza和Chiesa提供:

1_gOI0njM1tPSvmvZuIUe0MA.png

第一行进行参数化处理; 实质上,您可以将其功能视为为指定某些参数的特定问题实例创建“自定义验证密钥”。第二行是A,B和C的线性组合检查;第三行是检查线性组合是否具有相同的系数,第四行是检查A * B - C = H * Z.

总而言之,验证过程是一些椭圆曲线乘法(每个“公共”输入变量一个)和五个配对检查,其中一个包括额外的配对乘法。提供的证明包含八个椭圆曲线点:A(t),B(t)和C(t)各一个点,b *(A(t)+ B(t)+ C(t))的点π_k , 和H(t)的点π_h。其中7个点位于F_p曲线上(每个32个字节,因为您可以将y坐标压缩为1bit),在Zcash实现中,另一个点(π_b)位于F_p²(64字节)的扭曲曲线上,因此证明的总大小约为288字节。

创建证明的两个计算难度最大的部分是:

  • 进行(A * B - C)/ Z得到H(基于快速傅立叶变换的算法可以在次二次时间内完成此操作,但它仍然计算量很大)
  • 进行椭圆曲线乘法和加法以创建A(t),B(t),C(t)和H(t)的值及其对应的配对

创建证明很困难,它的原因是,因为我们要进行零知识证明,原始计算中的单个二进制逻辑门就必须变成通过椭圆曲线进行加密处理的操作。这一事实以及快速傅立叶变换的超线性,意味着Zcash交易中创建证明需要花费大约20-40秒。


另一个非常重要的问题是:我们可以尝试使可信设置稍微......对信任要求不高吗?不幸的是,我们无法让它完全无信任; KoE假设本身倒是排除了,在不知道k是什么的情况下形成独立对(P_i,P_i * k)的可能性。但是,我们可以通过使用N-of-N多方计算来大大提高安全性 - 也就是说,构建N方之间的可信设置,只要至少有一个参与者删除了他们的有毒废物然后你就可以了。

为了让你对如何做到这一点有一点感觉,这里有一个简单的算法,用于获取现有的集合(G,G * t,G *t²,G *t³......),并“加入”你自己的秘密,因此你需要你的秘密和以前的秘密(或以前的秘密的集合)才能作弊。

输出集很简单:

G,(G * t)* s,(G t²)s²,(G t³)s³......

请注意,除了现在使用t * s作为“有毒废物”而不是t之外,您可以仅知道原始集合和s, 以及与旧集合功能相同的新集合。只要您和创建前一集合的人(或人们),删除有毒废物没有都失败并且后来还串通了,那么该组就是“安全的”。

为完整的可信设置执行此操作要困难得多,因为涉及多个值,并且算法必须在多方之间经过若干轮才能完成。这是一个积极研究的领域,看看多方计算算法是否可以进一步简化,并且需要更少的轮次或更多的可并行化,因为如果能做到这些,就能让更多的参与方参与到可信的设置程序中。有理由看到为什么六个参与者之间的可信设置可能会让一些人感到不舒服,但是有数千名参与者的可信设置,几乎等同于去信任 —— 如果你真的是偏执狂,您可以自己进入并参与设置程序,并确保您个人删除了您的有毒废物。

另一个积极研究的领域是,不使用配对和这样可信设置,用其他方法来实现相同的目标。请参阅Eli ben Sasson最近的一个演示文稿(还是要提醒一下,它在数学上,至少与SNARKs一样复杂!)

特别感谢Ariel Gabizon和Christian Reitwiessner的审阅。

早赞声明:为方便早赞、避免乱赞,“BH好文好报群”为点赞者、写作者牵线搭桥,实行“先审后赞、定时发表”的规则,也让作品脱颖而出、速登热门!加群微信:we01230123(天平)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269