一文详解zk-SNARK:运作原理、优缺点和用例

 2023-09-30 20:49:36发布 2023-09-30 20:49:45更新

zk-SNARK是一种零知识证明协议,在这种协议中,人们可以证明自己拥有某些信息,而无需披露这些信息,也不需要各方之间进行任何交互来证明和验证这些信息。

zk-SNARK是什么

“zk-SNARK”是“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge(零知识简洁非交互式知识论证)”的缩写。

这个名字的每一部分都指代了zk-SNARK的一个特征,因此单独查看每一个组成部分会有所帮助:

  • Zero-Knowledge:证明方可以向验证方表明他们拥有某项信息,而不需要提供信息本身。
  • Succinct:由于证明的长度最多只有几百个字节,所以证明可以在几毫秒内得到验证。
  • Non-Interactive:证明包括从证明者到验证者的单一信息。
  • Argument:Argument是这些证明的术语,因为它们不完全符合证明的传统定义,但有效地服务于相同的目的。
  • Knowledge:指证明者所拥有的信息。

在加密货币中,zk-SNARK是一种在区块链上对交易进行私有和完全加密的同时,仍然使用网络的共识规则进行验证的方式。zk-SNARK可以表明发送者拥有他们想要转移的资金数额,而不需要公开该信息。

zk-SNARKS的关键要点

  1. zkSNARKS 是一种零知识证明系统,它允许一方向另一方证明他们知道一个值x,而无需传达有关x 的任何其他信息。
  2. 关键思想是验证者不可能仅仅从证明者能够证明他们知道x 的事实中推导出关于x 的任何信息。这保护了证明者的数据隐私。
  3. 零知识证明系统用于各种应用,包括安全通信、密码学和隐私保护数据分析。

zk-SNARK解释

zk-SNARK来自零知识证明的概念,该概念是Shafi Goldwasser、Silvio Micali和Charles Rackoff在1985年的一篇论文中首次提出的。

零知识证明是一种方法,它允许一方只表明他们拥有一条信息,而不透露信息本身或任何其他信息。

早期的零知识协议要求证明方和验证方来回发送消息。Nir Bitansky、Ran Canetti、Alessandro Chiesa和Eran Tromer在2012年的一篇论文中创造了术语“zk-SNARK”来描述一种新的零知识协议。与之前的方法不同,它不需要证明方和验证方在单一信息之外进行交互。

合著者Chiesa后来帮助创立了Zcash,这是一种2016年推出的隐私币。它使用zk-SNARK技术来支持私人交易。

zk-SNARK的运作原理

大多数类型的加密货币通过网络检查交易是否满足某些条件来进行验证。具体来说,其条件是发送方拥有可用的资金,并且他们提供了正确的私钥来表明资金属于他们。

zk-SNARK允许交易的发送方在不透露任何涉及的地址或金额的情况下证明这一切。为了做到这一点,区块链网络在zk-SNARK中编码了一些共识规则。

在交易过程中,zk-SNARK将需要证明的信息转化为方程。这些方程可以在不透露信息本身的情况下计算和求解。

最著名的例子是Zcash,它是一种隐私加密资产。当在比特币和以太坊等公链交易Zcash 时,会使用发送方和接收方地址等详细信息以及输入和输出值(即花费了多少,未花费多少)进行验证。

但通过zk-SNARKs,Zcash 可以在不公开地址和价值等信息的情况下证明交易有效。

Zcash如何使用zkS-NARKS为加密用户提供隐私层

Zcash如何使用zkSNARKS为加密用户提供隐私层

zk-SNARKs 如何运作?数位签名构成了zk-SNARKs 的工作原理。数位签名使用加密算法对敏感信息进行保护,使其对另一方隐藏,同时向该方提供所要求的必要证据。

具体步骤

证明者首先生成一对密钥,一个公钥,一个私钥。他使用私钥签署交易。

然后证明者将此交易编码为zk-SNARKs,这是交易有效的数学证明。

证明与公钥一起发送给验证者。然后,验证者使用公钥检查公式是否正确,而无需了解有关交易的任何其他信息。由于只验证少量信息,因此可以非常快速地完成此检查,以确认交易有效。

zk-SNARK的优缺点

zk-SNARK的主要好处是其提供的隐私和效率。它们屏蔽了敏感信息,只需几毫秒即可验证,而且不需要相关各方之间的长期交互。所需要的只是从证明者到验证者的一条消息。

尽管zk-SNARK没有任何明显的缺点,但如果有人拥有用于建立协议的私钥,他们就能够创建虚假证明并伪造资金。使用zk-SNARK的隐私币必须采取措施,确保没有任何一方能够获得该私钥。

zk-SNARK和zk-Rollup

zk-SNARK并非加密货币使用的唯一类型的零知识证明。另一种常见的技术是zk-Rollup,后者是一种帮助以太坊更有效地处理交易的扩展解决方案。

Rollup将一大群交易捆绑在一起,并在链下验证它们,这意味着所有的计算都在主以太坊区块链之外处理。然后它们被打包成一个单独的交易,发送到以太坊的执行层。

有不同类型的Rollup可供选择。例如,Optimistic rollup假设交易有效,直到它们被证明为错误。另一方面,zk-rollup可以即时验证交易并生成加密的有效性证明。证明可以使用zk-SNARK或另一种类型的零知识证明技术zk-STARK生成。

zk-SNARK用例

zk-SNARK最著名的用例是屏蔽加密货币交易。Zcash是zk-SNARK的第一个广泛应用。该隐私币允许用户在私有地址和透明地址之间进行选择。当用户选择私有地址时,zk-SNARK会屏蔽交易数据。

其他区块链项目也在使用zk-SNARK。以太坊在2017年开始致力于整合Zcash和zk-SNARK。同年,Zcash与摩根大通合作,用zk-STARK构建了一个基于区块链的支付系统。

虽然zk-SNARK目前被用于私有化金融交易,但这并不是它们的唯一应用。在未来,我们可以看到它们被用来保护人们在网上活动时的数据。

zk-SNARKs的用例

TSNARK加密代币

SNARK加密代币是一种使用zk-SNARKs来改善隐私的加密资产,也称为隐私币。

这类隐私币的例子有:

  • Zcash(ZEC)
  • Verge(XVG)
  • Monero(XMR)
  • Dash(DASH)
  • Beam(BEAM)
  • Horizen(ZEN)
  • Bytecoin(BCN)

zk-SNARKs的主要挑战是如果私钥被泄露,就可以创建伪造的证明。这可能允许伪造证明的创建者进行欺诈,例如,创建和使用伪造的隐私币。

zk-SNARKS的其他应用

Filecoin是一个去中心化储存提供商,运作过程涉及多个方面。

首先,Filecoin网路上的储存提供者(提供储存空间以换取区块奖励),而“证明者”,必须证明他们正在正确地将数据储存在链上。

另一方面,我们有“验证者”,即节点,他们必须验证储存提供商是否正确储存和保护数据。这些验证者必须对储存提供者给出的证明感到满意。

这要求储存提供商和节点在数据易手时进行通信。可以想象,这一过程将是资源密集型的。

Filecoin官方部落格文章解释道:

“为了验证他们的储存,如今单个储存提供商提供的必须证明的数据量是巨大的,而且只会随着时间的推移而增长。Filecoin网路的出块时间为30秒。为了保持时间不变并启用可扩展的方法,Filecoin需要一种允许快速、高效和稳健验证的解决方案。”

借助zk-SNARKs,Filecoin网路可以通过减少各方验证储存所需的时间来提高其可扩展性和效率。

对于储存提供商,zk-SNARKs减少了他们需要传输的数据量以证明其储存,从而降低了运营成本。

此外,zk-SNARKs还可以用于其他事情,例如:

身份验证

无需密码即可验证用户凭据,不再需要护照、出生证明等文件证明,以保护出生地点和出生日期等敏感信息。

投票系统

无需身份识别即可验证选民身份,即使选票泄露也无法识别选民身份,从而保护选民隐私。

数据压缩

zk-SNARKS用于数据压缩,最终实现区块链扩容和高度去中心化的加密网络。

推荐阅读