什么是零知识证明(ZK Proof)?Web2.0通往Web3.0的入口技术

古老的难题

女:你爱我吗?
男:爱!
女:怎么证明?
男:……

零知识证明的定义

零知识证明(Zero-Knowledge Proof)也叫做最小泄露证明,能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄漏出去,即给外界的 “知识” 为“零”。

例子

假设A有一个带密码锁的盒子,他想在不告诉B真正密码的情况下,又让B相信A知道这个盒子的密码。那么他要怎么做呢?

A让B写了一个全世界只有B自己知道的秘密,B写下了一张“我的小狗叫Bob”的字条放入盒子中。A通过正确的密码打开盒子后获取了此信息并告知B。在这个交互过程中,B并没有得知任何此前自己不知道的信息(盒子的密码),但A还是成功的让B相信了A知道密码。

零知识证明的发展

零知识证明第一次问世是在 1985 年麻省理工学院的一篇研究论文中提出的一种加密方法,是可信计算广泛使用的密码学算法之一。其中一位作者 Silvio Micali 后来创立了 Algorand 区块链。

作者在论文中提到,证明者(prover)有可能在不透露具体数据的情况下让验证者(verifier)相信数据的真实性。

像许多技术一样,零知识证明首先吸引的是理论上的关注,然后它才在进一步发展和完善后最终找到了实际用途。

最早的零知识证明是交互式(interactive)的。为了证明什么,你必须和验证者玩一个游戏。他们就像测谎测试一样,整个过程就像是一个仪式,其中一方提问,另一方回答,直到真相被确定。

而零知识证明最近(和更先进的)的实现是非交互式的。你现在可以生成一个东西,一个数据来作为你的零知识证明,你可以把它提交给验证者,而不需要几轮的沟通。这些新的零知识证明不太像游戏/文件/协议,而更像是一种不可伪造的物品,它可以由验证者生成并提交给验证者。

零知识证明目前有多种实现方式,如zk-SNARKs(简洁非交互式零知识证明)、zk-STARKs(简洁全透明零知识证明)和 BulletProofs(防弹证明)。

零知识证明三个性质

  • 完备性(Completeness):若一个证明方确实掌握了某论断的答案,则他肯定能找到方法向验证方证明他手中掌握的数据的正确性,即真的假不了。
  • 可靠性(Soundness):若一证明方根本不掌握某论断的答案,则他无法(或只能以极低概率)说服验证方他手中所谓答案的准确性,即假的真不了。
  • 零知识性(Zero-knowledgeness):验证方除了知道证明的结果外,对其他信息一无所知。

零知识证明的用途

在当前,零知识证明有两个最主要的用例:隐私和扩展性

隐私

隐私计算是零知识证明的一个重要的应用领域。隐私是信息泄露所导致的问题,若想保护隐私,则必须通过密码学的解决方案对链上数据进行加密,让链上的不同交易之间找不出关联性。零知识证明可以验证计算而不会暴露有关输入和计算本身的任何信息,保证链上数据隐私。

在 Web3.0 中至关重要的一点是用户自身真正掌握身份和数据所有权。但当前区块链上所有的信息都是公开的,通过一些手段可以轻易得获取用户的信息(当然这本身也是区块链网络共识的特性)。

(1)金融:如抵押贷款申请人可以证明他们的收入在可接受的范围内,而不透露他们的确切工资。

(2)在线投票:零知识证明允许选民匿名投票,并验证他们的投票是否包含在最终计票中。

(3)身份验证:零知识证明可用于对用户进行身份验证,而无需交换密码等机密信息。以太坊上的Polygan ID就是采用了零知识证明的验证方案,它既帮助了用户在基于区块链的Web3平台上保护他们的隐私,同时满足监管要求的KYC验证规范,用户可以自由选择何时以及共享哪些数据。

(4)机器学习:零知识证明可以让机器学习算法的所有者说服其他人了解模型的结果,而无需透露关于模型本身的任何信息。

(5)区块链:比特币和以太坊等区块链能保证链上数据的透明性使人人都可以验证链上交易。这意味着参与者几乎没有了隐私,可能导致数据的非对称性,而零知识证明可以帮助保护区块链参与者的隐私权。

扩展性

若常用的区块链平台中产出新区块的验证时间很长,可直接更改为一人(节点)验证并生成证明,网络中的其他参与者都掌握快速验证该证明的方法,而不需要每个参与者都花费大量的时间来直接进行验证。

将零知识证明和区块链的一致共识结合起来,则可以降低网络成本,一台设备即可运行计算,链上用密码学的方法验证其可靠性而非重复参与计算,并且在成本昂贵的区块链网络上,验证计算的正确性要比重复计算便宜得多。

区块链依旧负责网络的共识和安全,而一些计算的工作则可以交给零知识证明,在区块链网络外部完成。整体上,不仅提升了扩展性,这种方法依旧有着区块链网络的安全性和共识。

零知识证明代表项目

ZK Rollup是基于「零知识证明」验证方式落实Rollup技术的layer2解决方案。

以zkSync2.0与StarkNet为代表的zk-Rollup路径,被普遍视为 Layer2扩容的终极方案。以至于以太坊创始人Vitalik认为,zk-Rollups将会成为扩容的最终方案。而目前更为流行的 op-Rollup可能只是作为在zk-Rollups技术尚不成熟时的过渡方案而存在。

ZK-SNARKs技术的代表项目zkSync

zkSync 是基于 ZK Rollup 架构的低成本且无需信任扩容协议,用于在以太坊上进行可扩展的低成本支付。主要通过零知识证明和数据可用性保障用户资产安全来保证用户的资产安全。

所有资金都由主链上的智能合约持有,而计算和存储则在主链外进行。为了提升效率,不是单独验证每个交易,而是将交易“汇总”到单个项目(汇总块,即Rollup),然后对其进行验证,同时批准所有交易。

zkSync的主要架构分为链上和链下,即 L1 和 L2;L1 的核心为zkSync智能合约,主要负责存款、提款、交易验证,也就是以太坊主链上账户的最终状态维护。

L2 分为 L1 交互(Watcher、Sender)、L2 状态维护(Mempool、Block Proposer、State Keeper、Block Commiter)、零知识证明系统。

zkSync具有证明慢、验证快,证明体积小的特点。

zkSync成为行业最为看好的L2解决方案。

zk-STARKs技术代表项目StarkWare

StarkWare 是一家建立零知识证明扩展技术的公司,该公司由 Eli Ben-Sasson 创立,他是一个真正的零知识证明专家。

Eli 共同发明了 STARKs(简洁全透明零知识证明),并且他还是 Zcash 的创始科学家。他们有两个主要产品:

  • StarkEx:允许应用程序各自建立自己独立的、有权限的零知识证明系统。例如,dYdX 和 Immutable 已经使用 StarkEx分别为永续交易和 NFT 建立了自己的特定应用零知识证明项目。但这些应用是孤立的 ,各项目之间没有兼容性,所以一个 StarkEx项目不能直接与另一个项目进行“对话“。
  • StarkNet:一个较新的产品,它像一个通用的区块链。任何开发者都可以创建一个智能合约并将其部署在 StarkNet 上,但它不像StarkEx 那样需要许可。项目之间是完全可组合的,所有交易都在以太坊上的 rollup 和结算。

通过Volition系统解决DA(数据可用性)问题。(DA非常重要,有了它,用户才能在区块链浏览器上看到自己的交易具体是如何发生的)Volition允许用户可以在rollup 方案 (链上数据可用性,更昂贵) 和validium方案 (链下数据可用性,更便宜) 之间自由选择。

在 validium 方案中,链下DA由中心化的 “数据可用性委员会” 提供保证,委员会由一些有声望的加密实体组成。虽然不够去中心化但费用更低。用户仍可自由选择,这其实是一个折中的方案。

StarWare具有证明快、验证快,但证明体积大等特点。

总结

无论是L2与L1、链上链下、Web2.0与Web3.0,都可以利用零知识证明来传递信用,因此零知识证明作为一种有效的技术实现不同生态之间的共识传递,成为Web2.0通往Web3.0的入口技术。

猜你喜欢

转载自blog.csdn.net/xingxincsdn/article/details/128254731