介绍zk-SNARKs在区块链中的使用

摘要

区块链的出现为世界带来了广阔的机遇。第一个这样的例子是比特币,它强烈倡导全面开放的原则,这反映在所有交易都是公开的,每个账户的历史都可以很容易地重建。尽管一个账户不能立即与真实世界的身份联系起来,但这并不能提供强大的匿名性保证,比特币和类似区块链的这一特性阻止它在金融用例中获得广泛接受,因为在金融用例中,用户往往希望对其余额和财务历史高度保密。因此,最近人们对增强隐私的技术越来越感兴趣,这些技术可以确保公共无许可区块链能够根据特定的使用情况保持交易细节的私密性。该领域最有前途的技术之一是零知识证明,尤其是zk SNARK,因为它们的证明和验证时间非常短。这使得它们非常适合用作交易数据,隐藏所有私人细节,同时保证交易的完整性和准确性,并通过智能合约在链上进行验证。本文介绍了这一主题,zk SNARK为区块链生态系统带来了哪些优势,以及如何针对特定应用进行定制。

引言和论文布局

零知识证明(Zero Knowledge Proof,ZKP)是最流行的技术之一,已经从一种非常专业的加密技术变成了区块链开发人员的日常用语。本文为不懂密码学的读者介绍了ZKP的概念(第2节)。本文探讨了zk SNARK的概念,并将其与最近的替代方案进行了比较,在区块链的背景下对其进行了阐述(第4节)。在第3节,我比较了几个变体,重点是zk SNARK。本文的其余部分将讨论更多的技术细节,解释zk SNARK如何实现其灵活性(第5节),并参考目前可用于实现它们的工具(第6节)。
后面主要会重点列出技术细节

Zero-Knowledge Proofs

1985年,Goldwasser、Micali和Rackoff[21]引入了零知识证明。

零知识证明是一种加密技术,简单理解就是证明者Prover给验证者Verifier证明一个言论S(x)是真的并且不会泄露任何的有关S(x)的任何知识。就比如验证者让你去给地图上每一个国家涂上颜色(三种颜色)并且保证相邻国家的颜色不会相同,证明者完成了这件事情,同时又不让验证者知道这个地图上面的任何内容。

零知识证明的一个更强大的概念是知识的零知识证明(ZK-POK)。

有了这样的证据,Prover不仅可以让Verifier相信S(x)的真理,而且还可以让Verifier相信Prover认识一个能证明它的证人。通常,Prover可以通过一个Prover知道但是Verifier不知道的私人证人来证明S(x)的真理。在这种情况下,一个关系R,使得S(x)为真当且仅当R(x,w)也为真。继续上面的例子,在ZK-POK中,Prover不仅让Verifier相信S(x)是真的,而且她知道w,因此R(x,w)=1。

Zero-Knowledge and NP

引入NP的概念:能在多项式时间内验证得出一个正确解的问题。(NP:Nondeterministic polynominal,非确定性多项式)
零知识证明与NP是一致的,都是可以在多项式的时间内验证的语言组成的。
公式说明
语言L是NP的
(1)如果任意输入x是属于语言L的,那么会存在一个与x相关的w,使得一个关系RL(x,w)为真。
(2)如果输入x不是语言L的,那么对如任意与x相关的w都将使得RL(x,w)失败。

交互和交互零知识证明

交互:Prover和Verifier之间相互发送消息,直到Verifier觉得Prover的言论确实为真。
非交互:引入Fiat-Shamir heuristic,之前Verifier给Prover发送的消息是公开且随机的,其中随机是保证Prover确实进行了数据的处理,以防止Prover寻找到规律进行欺骗。而这种非交互的方法就是让Prover利用hash函数来随机产生数,然后再将计算后的结果一并打包发送给Verifier,Verifier查验后觉得你确实进行过计算,那么验证过程就满足了。

为什么介绍zk-SNARKS

在这里插入图片描述
从性能和安全性两个方面进行对比:

性能

Proof Size:

ZK-SNARKS最大优点是验证大小,因为始终是一个常数,并且是不随着电路的复杂度增加的。
bulletproofs验证大小是与电路尺寸成对数增长。
ZK-STARKS是在性能方面是最差的。
zk-STARK白皮书声称zk-STARKs在一个恒定的时间内进行验证,而zk-SNARKs的时间将线性增长。但是,它们包含了初始可信执行环境设置时间(zk-STARKs不存在)。当不包括初始可信执行环境设置时,它们还显示了一个比较,这表明zk-SNARKs比zk-STARKs快10倍左右。也就是说,如果在不考虑初始可信执行环境的话,明显是ZK-SNARKS效果更好,这才是两者之间应该进行的正常比较。

Key Size:

zk-STARKS和bulletproofs在这里占上风,因为它们都不需要任何钥匙,而zk-SNARKS则需要。特别是,对于复杂电路来说,验证密钥可能非常大

安全性

可信执行环境:
zk SNARK是在公共参考字符串模型中构造的。这意味着它们需要一个设置阶段,该阶段创建一个公共引用字符串(CRS),该字符串由一个验证密钥和一个验证密钥组成,然后可以分发给适当的用户。这个设置非常敏感。作为密钥生成的一部分,会创建一些随机性,这些随机性必须在设置结束时销毁。否则,知道这一点的攻击者将能够创建虚假证据。当必须生成CRS以用于不受信任的参与者的大型网络时,这是一个难题。相比之下,bulletproofs和zk-Stark不需要这样的设置,这给了它们一个重要的优势。

在区块链中的使用

两点应用在区块链上的原因:
首先,它们是非交互式的,这意味着验证可以独立于验证程序进行。这允许多个验证者在方便的情况下无需协作即可检查证据。
其次,证明是简洁的,这意味着它可以方便地提供给一个智能合同,而不会产生沉重的gas成本,并使验证速度更快。但它们之所以有趣,主要是因为它们带来的功能,这对区块链用例至关重要:隐私和可伸缩性。

QAP-Based Snarks

接下来就是这篇文章的重头戏:
内容是介绍zk-SNARKS的原理,这里我就直接引用别人写好的内容
摘自论文:An Introduction to the Use of zk-SNARKs in Blockchains

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值