这是对零知识技术最大的误解之一。简而言之,大多数所谓的零知识(ZK)技术并不提供真正的隐私保护。那么,为什么会这样?
术语解析
这些术语究竟是什么意思?
根据维基百科,“零知识证明”需要满足以下三个属性:
让我强调一下,“零知识”意味着接收者获得原始数据的零(额外)知识。
为什么称为ZK却不是真正的零知识?
要实现“零知识”属性,协议必须提供完整的ZK隐私。除了证明者拥有数据之外,证明的接收者不得了解任何原始数据。那么,如果零知识协议连ZK特性都不满足,又如何利用ZK技术呢?
这就是问题的关键,主要是因为“零知识”一词具有混淆性。能够实现零知识证明的技术称为零知识技术,但零知识技术也支持隐私之外的其他用例。一个重要的用例是简洁性:为大量数据生成一个小证明。因此,并非所有零知识用例都提供零知识属性,但它们仍然利用零知识技术来实现其目标。
快速了解:ZK Rollups
我们以ZK Rollups为例来说明ZK系统。ZK Rollup是一种扩展区块链功能的方法,将L2区块链连接到L1区块链。ZK Rollup中,定序器收集L2交易并生成证明,然后将证明发送到L1进行验证。一旦验证通过,交易就被视为在L2上完成。这使L2能够“继承”L1的安全性。
简洁性的作用
大多数利用零知识技术的项目只关心简洁性部分。事实上,约99%的ZK项目依赖于简洁性。尽管技术还可以提供隐私,但这一功能尚未得到广泛利用。简洁性允许ZK Rollups将大量交易“Rollup”到单个证明中,但这并不意味着隐私:证明会泄露有关原始交易的数据。
为什么不添加隐私?
在证明中添加隐私通常不是技术上困难的任务。它需要在证明过程中添加一些随机性来屏蔽输入。但困难在于系统架构。ZK证明并不是独立使用的,它们是更大系统的一部分,例如ZK Rollup。
让我们考虑一下如果在ZK Rollup中添加隐私会发生什么。L2的所有交易首先发送到定序器,定序器为它们生成证明。这要求用户将私人数据发送给定序器,违背了ZK隐私的目的。
如何解决?
要解决这个问题,需要在用户计算机上生成证明,以保护隐私。这引发了一系列问题,如定序器如何知道事务的作用和交易的有效性,以及如何解决冲突。这些问题并不小,有一些区块链(如Mina、Aztec、Aleo、Miden)正在努力实现真正的ZK隐私,但它们的架构与常规ZK Rollup有很大不同,需要多年的研究和开发。
结论
大多数ZK项目只关注简洁性,而不提供真正的ZK隐私。要实现ZK隐私,需要从一开始就考虑到隐私,而不是事后添加。