本文深入探讨了零知识证明(ZK)在区块链中的应用,涵盖了其基本概念、可验证计算,以及在扩展性、隐私性和混合方法上的应用。文章还介绍了像Mina这样采用独特方式使用ZK技术的区块链项目,强调了ZK技术在推动区块链创新方面的潜力。
这是关于区块链的系列文章的一部分。如果你是第一次看到这篇文章,我强烈建议从本系列文章的开头开始阅读。
在写了 四篇 关于 Polkadot 的 文章 之后,通过解决一个更普遍的问题来放松一下是个不错的选择,而不是再次如此专注于单一技术。
毕竟,我猜想内容相当多。抱歉!
今天,我想让我们一起探索过去几年密码学领域最先进的研究和开发领域之一:零知识证明,通常简称为 ZK。
这项技术已经在区块链领域引起了轰动。我们甚至在关于 rollup 的文章中简要介绍过它。因此,如果你一直在关注这个系列,你很可能对它有所了解。
但今天,我们将深入探讨这个流行语的含义,它究竟是如何使用的,然后展示一些应用示例——有些比较常见,有些则相当疯狂和奇异。
哦,是的
让自己感到舒适,让我们开始行动吧。
在我们讨论应用之前,我们必须精确地定义 ZK 是什么,并澄清一些常见的误解——也许最有趣的是,围绕“零知识”概念的经常被误解。
零知识证明是密码学协议,它允许证明者向验证者证明某些声明的有效性,同时除了声明本身的真实性之外,不泄露任何信息。
一个简单的例子是证明我的年龄超过 21 岁,但不透露我的年龄。
这样说起来,听起来相当神奇和深奥。但我猜我们实际上是在倒着学习它——有一种方法可以从更熟悉或更实际的角度来理解这些想法。这种方法就是谈论可验证计算。
想象一下你有一个程序 P,并且你想验证它对于给定的输入集合 x 是否被正确执行,从而产生一些输出 y。 就像这样:
$y = P(x)$
最简单的方法就是直接运行计算,并检查结果是否匹配——但这不是唯一的方法。
你看,一些聪明的技术允许我们对计算信息进行编码,这样我们就可以用更少的计算量来验证它的有效性,代价是允许接受错误证明的概率非常低。
这种系统被称为知识论证。它们依赖于我们今天无法细谈的几种技术,因为那将花费比一篇文章更长的时间。
我已经在我的密码学 101 系列中写了一些关于这个的内容,所以你可能想去看看!不过别担心——我们将在这里介绍你需要知道的内容。
然而,我们刚才所说的内容足以更精确地描述这种零知识的东西:如果你的知识论证碰巧没有泄露任何关于计算输入的信息,那么你就得到了一个零知识证明。这意味着它是这些论证可以拥有的一种属性——而不是一个严格的要求。
相反,知识论证需要满足另外两个属性,称为完备性和可靠性:第一个意味着有效的证明总是会被接受,第二个意味着伪造证明真的真的很难。
甚至还有更精确的知识可靠性概念,粗略地说,这意味着在不知道某些信息的情况下,几乎不可能伪造一个证明。 这个定义本身更复杂,它要求我们定义一个高效的提取器,所以我们将跳过这些技术细节。
鉴于此,人们不禁要问:什么时候我们应该关心零知识?
说实话,我们并不总是关心 ZK。事实上,我们有时更感兴趣的是知识论证的其他属性——特别是关于证明可以变得多么小,或者它们可以被验证得多么快。
只有当数据隐私至关重要时,ZK 才会具有优势。 但是在区块链的背景下,我们主要对我们刚刚提到的其他属性感兴趣。 总而言之:ZK 这个术语通常被过度使用(甚至被误用),因为它有助于营销,但要知道可验证计算通常才是重点。
好的! 考虑到这一点,让我们找出如何在区块链中使用 ZK(或可验证计算)。
粗略地说,区块链领域中的 ZK 应用可以分为三大类:
我们将大致按此顺序处理各种应用,从已经有些熟悉的围绕扩展性的讨论开始。
简单回顾一下,当我们谈论 ZK rollup 时,整个讨论围绕着能够积累链下交易,然后执行计算以推进某些状态,并让 layer 1 在链上验证这些计算。
所以现在问你一个问题:你认为在这种情况下我们关心零知识吗?
暂停一下,试着猜一猜。
嗯,一般来说,不——我们更关心快速(且廉价的)验证。 只要 rollup 具有私有状态,并且希望保持这种状态,那么隐私可能很重要——但说起来容易做起来难。
因此,我们的重点将放在快速验证上。
区块链是有状态的系统。 你知道的:它们具有全局状态,这种状态会随着网络处理交易(或类似实体,如 JAM 中)而发展。 换句话说,它们可以用函数来描述,该函数接受初始状态和一组交易,并输出下一个状态。
执行此函数需要计算——这一点尤其重要,因为需要验证每个新状态才能被接受。 我们如何验证? 通过重新执行整个过程,或者通过验证计算已正确执行的证明。
显然,我们对后一种选择感兴趣。 我们正在寻找能够帮助我们执行快速验证的解决方案——例如 SNARK 或 STARK。 正如我们已经知道的那样,这种方法的主要吸引力是当 layer 1 验证者检查 rollup 的状态时可以节省成本。
等一下。 我们这里讨论的是 rollup 和验证。 但是……Layer 1 区块链中难道不需要验证吗?
没错!
L1 区块链已经有了保持快速和精简验证的机制。 事实上,我们在几篇文章之前讨论了可用的方法。 ZK 证明是可能性的列表中的一部分。
但是,虽然知识论证非常强大且用途广泛,但它们并非万无一失。 它们有一个特别烦人的限制,虽然验证可能很快,但证明生成步骤通常是计算密集型的,需要很长时间和大量的资源。
让我们思考一下这会产生什么后果。 想象一下,一个验证者正在提议一个区块。 他们会希望生成一个证明以进行快速验证。 如果他们花费太长时间来生成这样的证明会发生什么?
你猜对了——他们成为了整个过程的瓶颈!
等等——我快完成证明了
总而言之,如果想让它被采用为当前验证策略的替代方案,那么证明生成步骤是需要解决的主要挑战。 虽然很有前景,但技术尚未成熟,在撰写本文时,证明生成仍然非常缓慢。
像以太坊的 Beam chain 倡议这样雄心勃勃的实验性想法正在探索将 ZK 纳入其中的可能性,并且不仅仅是在状态验证中——例如,签名聚合是 ZK 证明可能发挥作用的另一个领域。
现在我们将注意力转向实际的零知识内容。
区块链中的隐私并不是一个新概念。 早期的例子,如 Monero (2014) 或 Zcash (2016) 开创了私有或屏蔽交易的领域,以保护其用户的财务信息。
事实上,Zcash 是零知识证明的早期采用者!
重要的是,Monero 和 Zcash 都属于支付解决方案:它们的工作方式与比特币类似,但它们在比特币之上添加了隐私。
自这些项目构思以来已经过去了近十年,现代解决方案还探索了将隐私添加到通用区块链——换句话说,将隐私添加到智能合约。
其中一个例子是 Aleph Zero。
作为一个好奇的点,它建立在 Substrate(现在的 Polkadot SDK)之上。
核心思想相对简单:Aleph Zero 是一个标准的智能合约平台,就像以太坊一样,默认情况下所有内容都是公开的。 但是当你需要隐私时,你可以选择加入。 以下是它的演示:
当你想进行私有交易或与私有智能合约进行交互时,系统会使用零知识证明来隐藏交易细节,同时仍然向网络证明一切有效。
你实际上是在证明“我有权执行此操作”,而无需透露该操作实际上是什么。
这在两个方面很有趣:
ZK 证明确保即使私有操作被隐藏,验证者仍然可以验证某些事情,例如没有凭空创建代币、支出限制得到遵守等等。
Aleph Zero 并不是这场游戏中的唯一参与者——我们可以说出其他具有类似属性的项目,例如 Aztec、Penumbra、Secret Network 和 Oasis。
我知道我已经在整个系列中说过好几次了,但现在评估这些解决方案将产生的影响还为时过早。
是时候闪耀了,宝贝儿
现在我们来讨论更奇异的东西。
虽然有一些有趣的东西可以讨论,例如基于 ZK 的身份或 ZK 机器学习 (ZKML),但有一种区块链特别吸引我,因为它以一种非传统和创新的方式使用可验证计算:Mina。
Mina 采用的方法,嗯,整个区块链的基础与标准方法截然不同。 我们已经看到了一些以 DAG 形式出现的区块链模型的偏差,但这已经是最疯狂的事情了。
Mina 提出了一个全新的范例:如果整个区块链只是一个 ZK 证明呢?
哇?
很烧脑吧? 但这怎么可能呢?
这个想法是用递归证明替换区块链本身,该证明证明了网络当前状态的有效性。
我知道这会引发很多问题,所以让我尝试先发制人地解决这些问题。
首先,交易呢? 仅保留一个小的证明意味着没有包含曾经进行过的每笔交易的账本,这是我们已经习惯的事情。 但是如果我们想保持隐私……我们真的需要吗?
因此,Mina 仅保留了一个小证书,用于证明当前余额是正确的。 每次发生新交易时,它们都会生成一个新证书,该证书既证明了新交易有效,也证明了之前的证书有效。 有了这个,你就拥有了一个证明链,该链链接到网络的起源,你可以验证整个进展是否有效。
而不是你通常在区块链中获得的哈希链。 尽管我怀疑指向先前证明的指针也是某种哈希。
采用这种策略有什么优势? 嗯,Mina 一个非常酷的特性是所使用的证明非常精简,因为它们使用了 zkSNARK。 其影响是巨大的:任何人都可以下载并验证网络的状态,即使在他们的手机上也是如此。 这是通过不必下载大量交易数据,而是依赖 ZK 技术来实现的。
最后,我想提到 Mina 在他们的 zkApps 中更进一步:智能合约在链下运行,并且仅向区块链提交证明。 数据永远不会离开你的设备,你仍然可以向网络证明有关它的事情。
这太疯狂了。 Mina 可能是迄今为止我所见过的对区块链架构最激进的重新构想。 对我而言,这正是 ZK 技术如此令人兴奋的原因。
这不仅仅是使现有系统更快或更私密。 而是要开辟全新的方式来思考区块链可能是什么。
我相信在不久的将来会出现其他 ZK 的疯狂应用和一般的可验证计算。 该技术仍在不断发展,随着它的改进,它肯定会实现几年前不可能实现的事情。
ZK 在区块链中的应用并不止于此。
仅提及另一个,我们可以提到一些关于 跨链桥 探索 ZK 以获得额外安全性的信息。
但我认为现在是停下来的好地方。
关键的收获是,我们正在亲眼目睹 ZK 技术的演变,从利基隐私工具转变为对该领域产生实际影响。
因此,我们不能再忽视它了。 确实感觉 ZK(以及一般的可验证计算)已准备好在不久的将来从根本上改变区块链格局。
谁知道呢——也许下一个突破将使今天的“激进”想法看起来像是儿戏!
区块链行业根本不是静态的,边界将不断被推进。 ZK 证明是最新的工具包之一,它们有望在隐私和可扩展性方面提供特别的帮助。
但是,这些并不是唯一需要长期解决的问题。
我们在整个旅程中多次接触到的另一个突出的问题是数据可用性。
这将是我们系列文章的最后一站之一。 我在那里等你!
- 原文链接: medium.com/@francomangon...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!