作者:Lauri Peltonen 来源:medium 翻译:善欧巴,金色财经
这可能是对零知识技术最大的误解。简而言之,这意味着 ZK 技术的大多数实现不提供隐私。但为什么?
这些术语到底是什么意思?
以下是维基百科中“零知识证明”所需的三个属性:
完整性:如果陈述为真,诚实的验证者(即正确遵循协议的验证者)将被诚实的证明者确信这一事实。
可靠性:如果该陈述是错误的,则任何作弊证明者都无法说服诚实的验证者该陈述是正确的,除非有一些小概率。
零知识:如果该陈述为真,则验证者除了该陈述为真这一事实之外不会获悉任何其他信息。
让我强调一下:术语“零知识”意味着接收者获得原始数据的零(额外)知识。
为了让协议实现“零知识”属性,它必须提供完整的 ZK 隐私。除了证明者拥有数据之外,证明的接收者不得了解任何原始数据。
那么,如果零知识协议连 ZK 特性都不满足,又如何利用 ZK 技术呢?
这就是事情变得令人困惑的地方,主要是因为“零知识”一词令人困惑。能够实现零知识证明的技术称为零知识技术。但零知识技术还支持隐私之外的其他用例。其他用例之一是简洁性:为大量数据生成一个小证明。
因此,并非所有零知识用例(或实现)都提供零知识属性,但它们仍然利用零知识技术来实现其目标。很简单,嗯?
我们将使用 ZK rollups 作为 ZK 系统的示例。以防万一您忘记了 ZK rollup 是什么,这里有一个小回顾。
有许多大型的、成熟的区块链被认为是安全的并且被大量使用。例如,此类区块链有比特币、以太坊和 Solana。它们被称为第 1 层 (L1) 区块链。
如果想要扩展 L1 区块链功能,目前的共识是应该创建一个新的区块链层。第 2 层 (L2) 区块链。
将 L2 区块链连接到 L1 区块链的一种方法是使其成为 ZK rollup。在 ZK rollup 中,称为定序器的服务从 L2 收集交易,并使用证明程序生成这些交易的证明。然后将该证明发送到 L1 中的链上验证程序。一旦 L1 验证者验证了证明,基础交易就被视为在 L2 上完成。
理论上,如果有一天 L2 爆炸了,L2 上的所有资产都可以在 L1 上被拯救,因为交易更新会发送到 L1。这就是 L2 “继承”L1 安全性的方式。
大多数利用零知识技术的项目只关心简洁性部分。事实上,大约99%的ZK项目仅仅依赖于简洁性。该技术还可以提供隐私,但该功能尚未得到利用。
例如,简洁性允许 ZK rollups 将大量交易简洁地“Rollup”到单个证明中。但仅利用简洁性属性意味着不存在真正的隐私:证明会泄露有关原始交易的数据。
在证明中添加隐私通常不是一件困难的任务。它需要在证明过程中添加一些随机性来屏蔽输入。
但这不是困难的部分。
将 ZK 隐私添加到证明系统将使证明变得私有。但 ZK 证明并不是在真空中使用的——它们只是一些更大系统的一小部分(?),比如 ZK rollup。人们还必须考虑证明周围的架构。
让我们考虑一下如果我们在 ZK rollup 中将 ZK 证明设为私有会发生什么。
L2 中的所有交易首先发送到定序器,定序器为它们生成证明。由于定序器(或与定序器关联的证明者)正在生成证明,因此它需要所有交易输入 - 包括私有输入。
因此,用户需要将其私人数据发送给定序器并相信定序器是诚实的。这已经违背了 ZK 隐私的目的:数据不能保持私密性。
此外,定序器执行交易以生成交易效果的跟踪:哪些资产被更改以及如何更改。这要求排序器知道交易的确切内容。
为了“修复”这些 ZK Rollup,需要在用户计算机上生成证明。这样,私人数据就不会发送到任何地方。
这引入了一些问题:
定序器不再知道事务的作用。网络状态如何改变?
排序器如何知道交易是有效的?
系统如何解决同时发出的不同交易之间的冲突?
这些都不是小问题。有一些区块链(Mina、Aztec、Aleo、Miden)提供真正的(可编程)ZK 隐私,但需要多年的研究和开发才能达到这一目标。而且它们都还没有投入生产(尽管这种情况很快就会改变)。
这些隐私区块链的架构与常规 ZK rollup 的架构有很大不同。证明必须在用户的计算机上本地生成,以保护隐私。之后,使用各种方法来克服上述由私人证明引起的问题。
大多数 ZK 项目都可以接受“只是”简洁。他们没有声称提供 ZK 隐私,但许多用户仍然认为他们提供了。
添加 ZK 隐私通常需要不同的架构。隐私不是事后可以“添加”的东西,而是事后可以“添加”的东西。整个网络的设计必须从一开始就考虑到隐私。
来源:金色财经