聚焦:ZK-SNARK 技术

聚焦:ZK-SNARK 技术

未标题-3

img

Vitalik建议他的订阅者关注ZK-SNARK技术,那今天就让我们仔细看看这一切都是如何运作的吧。

一些使用ZK-SNARK来保护隐私的方法

ZK-SNARK是一种强大的加密工具,它在区块链和区块链以外构建的应用程序中变成日益重要的一部分。但它们是复杂的,无论是从它们的工作原理,还是从我们如何使用它的角度来看,都是复杂的。

这篇文章将关注ZK-SNARK如何适应现有的应用程序,有哪些例子说明它们能做什么,不能做什么,以及有哪些通用的指导方针来判断ZK-SNARK是否适合某些特定的应用程序。

这篇文章特别关注ZK-SNARK在保护隐私中的应用。

ZK-SNARK是做什么的?

假设有一个公共输入x,一个私有输入w,和一个(公共)函数f(x,w)→{True,False},其会对输入执行某种验证。使用ZK-SNARK,就可以证明你知道一个w,对于某些给定的 f 和 x,f(x,w)=True,在此过程中不用透露w到底是什么。另外,验证者可以更快地验证证明,这比他们自己计算f(x,w)要快得多,就算他们知道w。

img

这赋予了ZK-SNARK两个属性:隐私性和可扩展性。如上所述,在这篇文章中,我们的例子将聚焦于隐私。

成员资格的证明

假设你有一个以太坊钱包,你想要证明这个钱包是人性证明(proof-of-humanity)注册,同时不透露注册的到底是哪个人。我们可以用数学方法描述这个函数:

  • 私有输入(w):你的地址A,你的地址私钥k
  • 公共输入(x):所有经过验证的人性证明配置文件{H1…Hn}的地址集合
  • 验证函数f(x,w)
  • 将w解释为一对(A,σ), x为有效配置文件列表 {H1…Hn}
  • 验证A是 {H1…Hn} 中的一个地址
  • 验证 privtoaddr (k) = A
  • 如果两个验证都通过,则返回True,如果任何一个验证失败则返回False

证明者生成他们的地址A和相关的密钥k,并提供w=(A,k)作为f的私有输入。他们从链中获取公共输入,就是当前已验证的人性证明配置文件集{H1…Hn}。他们运行ZK-SNARK证明算法,此算法(假设输入是正确的)生成证明。证明者将证明发送给验证者,并且提供他们获得验证配置文件列表的区块高度。

验证者还会读取链,获取证明者指定高度的列表{H1…Hn},并检查证明。如果检查通过,验证者就相信证明者有一些已验证的人性证明文件。

在我们继续讨论更复杂的例子之前,我强烈建议先看看上面的示例,直到完全理解其中的所有内容。

使成员证明更有效

上述证明系统的一个缺点是验证者需要知道整个配置文件集{H1…Hn},他们需要花费O(n)时间将这组配置文件“输入”到ZK-SNARK机制中。

我们可以通过将包含所有配置文件的链上Merkle根作为公共输入(这可能只是状态根)来解决这个问题。我们添加另一个私有输入,一个Merkle证明M,证明证明者的帐户A在树的相关部分。

img

用于 ZK 证明成员资格的 Merkle 证明的一个非常新且更有

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值