零知识证明(Zero-Knowledge Proof,ZKP)是一种密码学技术,最早由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初的一篇名为《The Knowledge Complexity Of Interactive Proof Systems》的论文中提出。在该文中,它是作为一个理论模型被构想出来,解决的是在不透露证据的情况下如何验证数学陈述的问题。这一概念在学术界引起了广泛关注,因为它挑战了传统加密技术的界限,并为处理敏感信息提供了全新的方法。
随着时间的推移,ZKP从一个抽象的理论构想逐步演变成具体的协议,它们能够被集成进各种应用中。在2010年,Groth发表了一篇名为《Short Pairing-based Non-interactive Zero-Knowledge Arguments》的论文,这篇论文成为了ZKP中重要的解决方案 zk-SNARK的理论先驱文章。零知识证明在应用上最重要的进展就是 2015 年 Z-cash 使用的零知识证明系统,实现了对交易及金额隐私的保护,后来发展到 zk-SNARK 和智能合约相结合,zk-SNARK 进入了更为广泛的应用场景。
传统的ZKP需要的遵守的原则有三点:
ZKP的原理得以通过简单的例子来理解:如果我需要向A证明我拥有B的电话号码,我不需要直接把B的电话号码告诉B,而是可以直接通过拨打B的电话,在打通后即可证明我确实拥有B的电话号码,这个过程并不会泄露B的号码信息。
而zk-SNARK则是在此基础进一步升级,其具有以下特点:
在Groth的论文中, 他提出基于配对的非交互式零知识论证方法将一个计算问题转化为一个二次算术程序(QAP),然后利用椭圆曲线密码学和哈希函数构造一个有效的证明。后来的zk-SNARK一般在设计时分为四个步骤:
举个简单的例子幫助理解:假设你有一张藏宝图,它能指引你到一个埋藏宝藏的确切位置。你想证明给某人看你知道宝藏的位置,但你不想揭露宝藏图的内容或宝藏的实际位置。如果你使用zk-SNARK技术的话,你還需要制作一份藏宝图的复杂拼图。你选择了一小块关键拼图(一个证明),并展示给对方看,足以让他们确信你知道完整的拼图如何组合,即宝藏的位置,而无需看到整个拼图。但是,为了做到这一点,你需要从一个可信的印刷厂获取一些特殊的标记,这些标记用来证明你的拼图片段是真实的。
传统方案零知识证明采用的是交互式证明方法,即示证者(宣称某一命题为真)和验证者(确认该命题确实为真)之间反复确认,你可以理解为示证者不断向验证者询问“是或不是?”,然后验证者不断给出回答,直到最后碰出一个正确答案来,所以效率很低。而zk-SNARK通过可信第三方获得了CRS,就不用反复确认,所有的示证者都可以直接对比CRS来产看真假。这样能大大节省ZKP的效率。
同时zk-SNARK还具有以下优势:
zk-SNARK的第一个应用是Zcash,允许用户进行完全匿名的交易,因为其通过zk-SNARK隐藏了发送者、接受者和金额等信息。目前的Web3领域,zk-SNARK技术还在区块链扩容和交易所储备金阵容等方面发挥着重大作用。
区块链扩容
区块链扩容(Layer2):由于区块链的共识机制和安全性要求,其吞吐量和效率受到了很大的限制。为了解决这个问题,一种常见的方案是使用 Layer2 技术,在区块链之上构建一个额外的层次,将大量的交易或计算从主链(Layer1)迁移到 Layer2 上进行,从而提高系统的性能和可用性。
zk-SNARK可以在这个方案中发挥重要的作用,它可以将 Layer2 上的交易或计算压缩为一个小而快的证明,然后提交到主链上进行验证,从而保证 Layer2 的正确性和一致性。目前有两种主流的基于 zk-SNARK 的 Layer2 方案,一种是 ZK-rollup,另一种是 Validium。
交易所储备金
由于加密货币市场的波动性和不确定性,很多交易所需要持有一定量的储备金来应对潜在的风险或需求。但是,这些储备金往往缺乏透明度和可信度,用户无法知道交易所是否真的拥有足够的储备金来保障他们的资产安全。
zk-SNARK可以在这个方面提供一个解决方案,它可以让交易所向用户或监管机构证明他们拥有足够数量和价值的储备金,而不需要透露具体的资产细节或位置。
一个典型的例子就是Gate.io交易所采用了zk-SNARK+默克尔树的方法将用户数据加密后通过被约束的电路来生成100种代币的储备金证明来证明自己拥有100%的偿付能力。
来源:https://www.gate.io/proof-of-reserves
扩展阅读:《zk-SNARK如何改进Gate.io的储备金证明》
除了在Web3领域的应用,zk-SNARK也可以用于非区块链领域,比如
在上文中,我们介绍了zk-SNARK的技术原理,其中说到了zk-SNARK通过寻找可信第三方生成CRS来提高证明效率,这也导致了zk-SNARK一些原生的缺陷和挑战。
综合来看,目前有多种解决方法来解决zk-SNARK的原生缺陷。
zk-SNARK作为一种前沿的密码学技术,有着广阔的未来应用场景,尤其是在隐私应用领域:
zk-SNARK技术代表了隐私保护和加密验证领域的一个重要突破,不仅因其在提供强大隐私保障方面的潜力,而且因为它在扩展区块链可用性和其他多种应用中的实用性。尽管存在技术挑战和局限性,但通过不断的研究创新,我们期待zk-SNARK将继续进化,不仅仅优化现有系统,更能激发新的应用模式,推动隐私保护和加密技术向前发展。随着技术的成熟和社会对数据隐私重视程度的提高,zk-SNARK有潜力成为数字时代不可或缺的工具,赋予用户更多控制自己信息的能力,同时促进安全、透明的数字交互。
零知识证明(Zero-Knowledge Proof,ZKP)是一种密码学技术,最早由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初的一篇名为《The Knowledge Complexity Of Interactive Proof Systems》的论文中提出。在该文中,它是作为一个理论模型被构想出来,解决的是在不透露证据的情况下如何验证数学陈述的问题。这一概念在学术界引起了广泛关注,因为它挑战了传统加密技术的界限,并为处理敏感信息提供了全新的方法。
随着时间的推移,ZKP从一个抽象的理论构想逐步演变成具体的协议,它们能够被集成进各种应用中。在2010年,Groth发表了一篇名为《Short Pairing-based Non-interactive Zero-Knowledge Arguments》的论文,这篇论文成为了ZKP中重要的解决方案 zk-SNARK的理论先驱文章。零知识证明在应用上最重要的进展就是 2015 年 Z-cash 使用的零知识证明系统,实现了对交易及金额隐私的保护,后来发展到 zk-SNARK 和智能合约相结合,zk-SNARK 进入了更为广泛的应用场景。
传统的ZKP需要的遵守的原则有三点:
ZKP的原理得以通过简单的例子来理解:如果我需要向A证明我拥有B的电话号码,我不需要直接把B的电话号码告诉B,而是可以直接通过拨打B的电话,在打通后即可证明我确实拥有B的电话号码,这个过程并不会泄露B的号码信息。
而zk-SNARK则是在此基础进一步升级,其具有以下特点:
在Groth的论文中, 他提出基于配对的非交互式零知识论证方法将一个计算问题转化为一个二次算术程序(QAP),然后利用椭圆曲线密码学和哈希函数构造一个有效的证明。后来的zk-SNARK一般在设计时分为四个步骤:
举个简单的例子幫助理解:假设你有一张藏宝图,它能指引你到一个埋藏宝藏的确切位置。你想证明给某人看你知道宝藏的位置,但你不想揭露宝藏图的内容或宝藏的实际位置。如果你使用zk-SNARK技术的话,你還需要制作一份藏宝图的复杂拼图。你选择了一小块关键拼图(一个证明),并展示给对方看,足以让他们确信你知道完整的拼图如何组合,即宝藏的位置,而无需看到整个拼图。但是,为了做到这一点,你需要从一个可信的印刷厂获取一些特殊的标记,这些标记用来证明你的拼图片段是真实的。
传统方案零知识证明采用的是交互式证明方法,即示证者(宣称某一命题为真)和验证者(确认该命题确实为真)之间反复确认,你可以理解为示证者不断向验证者询问“是或不是?”,然后验证者不断给出回答,直到最后碰出一个正确答案来,所以效率很低。而zk-SNARK通过可信第三方获得了CRS,就不用反复确认,所有的示证者都可以直接对比CRS来产看真假。这样能大大节省ZKP的效率。
同时zk-SNARK还具有以下优势:
zk-SNARK的第一个应用是Zcash,允许用户进行完全匿名的交易,因为其通过zk-SNARK隐藏了发送者、接受者和金额等信息。目前的Web3领域,zk-SNARK技术还在区块链扩容和交易所储备金阵容等方面发挥着重大作用。
区块链扩容
区块链扩容(Layer2):由于区块链的共识机制和安全性要求,其吞吐量和效率受到了很大的限制。为了解决这个问题,一种常见的方案是使用 Layer2 技术,在区块链之上构建一个额外的层次,将大量的交易或计算从主链(Layer1)迁移到 Layer2 上进行,从而提高系统的性能和可用性。
zk-SNARK可以在这个方案中发挥重要的作用,它可以将 Layer2 上的交易或计算压缩为一个小而快的证明,然后提交到主链上进行验证,从而保证 Layer2 的正确性和一致性。目前有两种主流的基于 zk-SNARK 的 Layer2 方案,一种是 ZK-rollup,另一种是 Validium。
交易所储备金
由于加密货币市场的波动性和不确定性,很多交易所需要持有一定量的储备金来应对潜在的风险或需求。但是,这些储备金往往缺乏透明度和可信度,用户无法知道交易所是否真的拥有足够的储备金来保障他们的资产安全。
zk-SNARK可以在这个方面提供一个解决方案,它可以让交易所向用户或监管机构证明他们拥有足够数量和价值的储备金,而不需要透露具体的资产细节或位置。
一个典型的例子就是Gate.io交易所采用了zk-SNARK+默克尔树的方法将用户数据加密后通过被约束的电路来生成100种代币的储备金证明来证明自己拥有100%的偿付能力。
来源:https://www.gate.io/proof-of-reserves
扩展阅读:《zk-SNARK如何改进Gate.io的储备金证明》
除了在Web3领域的应用,zk-SNARK也可以用于非区块链领域,比如
在上文中,我们介绍了zk-SNARK的技术原理,其中说到了zk-SNARK通过寻找可信第三方生成CRS来提高证明效率,这也导致了zk-SNARK一些原生的缺陷和挑战。
综合来看,目前有多种解决方法来解决zk-SNARK的原生缺陷。
zk-SNARK作为一种前沿的密码学技术,有着广阔的未来应用场景,尤其是在隐私应用领域:
zk-SNARK技术代表了隐私保护和加密验证领域的一个重要突破,不仅因其在提供强大隐私保障方面的潜力,而且因为它在扩展区块链可用性和其他多种应用中的实用性。尽管存在技术挑战和局限性,但通过不断的研究创新,我们期待zk-SNARK将继续进化,不仅仅优化现有系统,更能激发新的应用模式,推动隐私保护和加密技术向前发展。随着技术的成熟和社会对数据隐私重视程度的提高,zk-SNARK有潜力成为数字时代不可或缺的工具,赋予用户更多控制自己信息的能力,同时促进安全、透明的数字交互。