本文通过ZK证明的概述、应用项目和底层技术来阐述ZK证明到底是什么,以及使用 ZK 证明最有前途的项目是什么。
原文标题:Intern Breakdown #4: Zero-Knowledge Proofs
原文作者:Mark Bissell and CMS Intern
原文来源:Substack
编译:火火,白话区块链
零知识 (ZK) 证明就像三箭资本的 Su Zhu 和 Kyle Davies一样,他们出生于上世纪八十年代,但直到最近才成为热门话题。
你可能听说过很多关于它们的信息,但 ZK 证明到底是什么?
你也许了解了基础知识,但想知道使用 ZK 证明最有前途的项目是什么?
现在就让我们通过ZK证明的概述、应用项目和底层技术来回答这些简单又复杂的问题。
ZK 证明使用密码学允许某人(证明者)向其他人(验证者)证明事实是百分百真实的,但除了特定真实性的陈述之外,不会透露任何额外信息。即能保守秘密,又能让人相信你。
另一个比较通俗的定义是:ZK证明本质上是让某人证明他们知道或拥有某些东西,而不会泄露他们知道或拥有什么的任何信息。
也许举几个例子会更有助于理解:
可以使用 ZK 证明来证明我拥有某个 NFT 的事实,而无需透露我拥有哪一个、购买时间或所花金额。
可以使用 ZK 证明来证明将Token从账户 A 发送到账户 B 的以太坊交易的有效性,而无需透露任一账户的Token余额或发送的金额。
ZK 证明在1985 年 MIT 的一篇研究论文中第一次出现。像许多技术一样,ZK 证明首先引起了大量理论论证,然后在进一步发展和完善后逐渐找到实际运用。
麻省理工学院研究复杂加密问题的研究人员
最早的 ZK 证明是交互式的。为了证明某事,你必须和验证者玩一个问答游戏。就像测谎仪测试——验证者不断对证明者所拥有的“知识”进行一系列提问。通过不停的提问,让验证者相信证明者的确知道这些”知识”。但是这样的方法并不能使人相信证明者和验证者都是真诚的,因为两者可以提前串通,以便证明者可以在不知道答案的情况下依然通过验证。
后来发展到非交互式的。非交互式是证明者现在可以生成一个东西,一段数据,作为他的 ZK 证明提交给验证者,而无需多轮沟通。这种ZK 证明不太像游戏/仪式/协议,而更像是可以由证明者生成并提交给验证者的不可伪造物品,避免了证明者和验证者串通的可能性。
目前ZK证明有两个主要的用途:
● 隐私:在区块链上进行活动时尽量减少公开的数据量。Zcash就是一个很好的例子:
与比特币一样,Zcash 交易数据需要发布到公共区块链;但与比特币不同的是,Zcash 提供了机密交易和财务隐私的选择,利用零知识证明允许在不透露发送者、接收者或交易金额的情况下验证交易。
其他利用 ZK 证明保护隐私的项目有Iron Fish、World coin和前两天被监管的Tornado Cash。
● 可扩展性:允许在链下执行密集计算,使成本更低,然后创建一个简洁的证明,表明计算是被诚实执行的,可以在链上发布。
链上和链下各司其职,变得专业化,专注于他们最擅长的事情。我们可以使用集中式、高性能、脱链系统快速有效地处理一大堆交易,然后使用去中心化、不可变、去信任的区块链作为记录谁拥有什么的最终事实来源。
ZK 证明相对于所有链下交易的有效性证明而言计算起来非常小,并且验证速度非常快。这要归功于一个几乎神奇的属性:一旦他们创建了一个证明说“是的,这数十亿次计算都被 100% 证明是正确的”,验证者可以确认证明是正确的,而无需自己再进行数十亿次计算。
有很多 ZK rollup 项目专注于可扩展性,还有一些项目希望同时提供隐私和可扩展性,包括Aztec和Espresso Systems 。
ZK 证明是一种通用技术。过去的几次区块链牛市无疑推动了对 ZK 研发的投资,但 ZK 证明的第一个实际应用出现在中本聪发布比特币白皮书之前。链下世界中有许多令人兴奋的ZK证明应用——比如身份管理、最低年龄验证、匿名凭证、金融资产的评级和风险评估以及数字投票。
对于链上和链下应用程序的所有 ZK证明炒作,如果能够推动技术向前发展出新的用途,那是一件好事。但是这种期望是周期性的。当 ZK证明被炒得火热的时候,人们给予大量关注,但是当意识到技术也不是 100% 完美的时候,人们的情绪不可避免地会变得冷淡。
前面已经提到了 ZK-rollups 如何运作的:它不需要在以太坊上运行缓慢且收费昂贵的计算,而是在链下进行这项工作(即在第 2 层(L2)区块链上):创建一个证明说你诚实地进行了所有交易,然后在以太坊上发布证明。
这对用户来说实际上是什么样的呢?
首先,你找到一个你感兴趣的 ZK rollup 项目。每个项目都有自己独立的应用程序和项目生态系统,所以找一个你喜欢的 DeFi 或 NFT 协议。
假设 L2 在其 L1 结算层使用以太坊。它将在L1以太坊上拥有一个或几个智能合约,这些合约可以完成一些重要的工作:
存储有关 L2 链上正在发生的事情的所有相关数据(账户余额等)。该合约可能不会看到 L2 块的实时视图,因为 L2 交易在被提交到以太坊上的汇总中之前不会被视为官方交易;
检查托管证明以确保它们是合法的代码。当汇总提交到以太坊时,验证者智能合约会确保汇总的证明有效,然后再在 L1 上正式发布。
也许一些类比可以让你更好理解:验证者就像保镖一样,确保来自 L2 的汇总在进入以太坊之前是有效的。或者,在 L2 上产生的区块就像是发表一些关于我有独立科学论文的粗略声明,然后被验证者检查并提交到以太坊就像是经过同行评审并在受人尊敬的期刊上发表。
这听起来好像并不是很简单,但了解 ZK rollup 架构的基础知识是理解ZK rollup 项目交互的关键基础。基本的用户流程可能如下所示:
(1)向rollup项目在以太坊上的智能合约发送一些 ETH,用于存储/锁定您的资金。
(2)短暂延迟后,L2 链会收到您已锁定这些资金,并会解锁等值的硬币供您在 L2 上使用。这是一个非常典型的桥接体验。
(3)您可以在 L2 上随意使用您的Token。你可以交换,投资,或者用来购买 NFT。然后定期(通常以分钟为单位)将rollup发送到以太坊,表示你在 L2 上最近发生的所有活动都已经完成。
(4)现在您决定要将资金提取回以太坊,因为您在 L2 赌场玩得很开心,但现在您想将筹码(L2 上的硬币和Token)兑现为真钱(ETH 和 L1 Token)。为此,您将 L2 Token发送到 L2 链上的销毁地址,并等待证明该行动的rollup汇总在以太坊上发布。发布完成后,您被锁定在以太坊智能合约中的资金就会被解锁,返回到您的钱包。
本篇文章不会详细介绍ZK rollups 和 Optimistic rollups,因为有很多文章对此进行比较,但这里有一句话总结:Optimistic rollups 对发布到 L1 的交易采取“在被证明有罪之前是无辜的”的方法(默认情况下,所有交易都被认为是有效的,但是任何观察到错误 rollup 的人都可以将其调回并获得奖励),而 ZK rollups,正如我们已经可见,在进入L1之前都被认为不可信,要求所有链下计算在进入 L1 之前使用有效性证明来验证自己。
每种方法都有利有弊,但 ZK rollups 的一个主要好处是用户可以更快地将资金提取到 L1。在从Optimistic rollups中提款后,必须等待挑战期到期(大约 7 天)才能解锁资金,因为需要等待被验证。
不过V神长期看好 ZK 路线:
总的来说,我自己的观点是,在短期内,Optimistic rollups可能会在通用 EVM 计算中胜出,而 ZK rollups可能会在简单的支付、交换和其他特定于应用程序的用途中胜出,但在随着 ZK-SNARK 技术的改进,中长期 ZK rollups将在所有用途中胜出。
—维塔利克(2021 年 1 月)
另一种类似rollup的扩容解决方案是validiums。
Volitions是混合扩容解决方案,让用户能够在“zk rollup模式”和“validium 模式”之间进行选择。
当ZK rollups发布到 L1 上时,它既包括证明L2 上的所有活动都是合法的,也包括自上次汇总以来 L2 上账户余额所有变化的情况。这一点至关重要,因为当您想从 L2 中提取资金时,您需要之前的情况来说明“这是我在 L2 上所做的,这意味着我应该能够提取特定数量的硬币和Token。”
还有一种叫做validium的东西,它算是另一种类似rollup的扩容解决方案。
Validiums 的工作方式与传统的ZK rollups几乎相同,并且它们具有更便宜和更具可扩展性的额外好处。
不过问题是,不够安全。
在 L1 上发布的 Validiums 不包括在 L2 上拥有资金的所有数据——即将资金提取到以太坊上的数据也是未知。相反,数据存储在链下。如果信任存储该数据的个人/网络/公司,这不是问题,但最好确定他们绝对是可靠的。因为如果你在 L2 上存储了 100 万美元,然后存储这些数据的项目方被黑客入侵并丢失了数据,或者被政府冻结,或者因为你在 Twitter 上说了愚蠢的话而对你进行惩罚,那么你可能会失去你的钱…
或者,更准确地说,它被锁定了。
有机会在这里用一句精辟的“不是你的钥匙,不是你的硬币”类型的口头禅,来传播对有效性潜在风险的认识,但我能想到的最好的办法是“如果数据不可用,你的硬币就是可攻击的”。因此,项目最好能够很好地跟踪他们的汇总数据。
而某些项目正在使用volitions混合扩容解决方案,让用户能够在“zk rollup模式”和“validium 模式”之间进行选择。这也被宣传为两种选择之间的折衷方案——项目将它们吹捧为“拥有你的蛋糕并吃掉它”或“世界上最好的”的一种方式。因此了解 rollups 和 validiums 之间的区别很重要。当 L2 向 L1 链提交证明时,它们允许用户选择取款所需的数据是否也发布在 L1 上,或者是否存储在其他地方。
总的来说,Validiums 比 ZK-rollups 便宜,但让你的资金在 L2 上有冻结的风险。那些用volitions的项目会让你在Validiums 还是 ZK-rollups之间进行选择 。
资料来源:StarkWare
使用 ZK 技术的项目太多了,无法一一列出,但这里有一些主要类别和项目。
(1)zkEVM
在过去的一个月里,几个不同的项目都通过推出所谓的zkEVM登上了头条。这些协议之间的竞争被称为“ zkEVM 战争”和“ ZK Rollup Race ”,人们很快就发现,每个协议都声称已经击败了其他协议:
三个主要参与者是Scroll 、Matter Labs (zkSync 的创建者)和Polygon 。
zkEVM 很重要,因为它们允许 ZK rollups 支持比目前更多的应用程序。第一波 ZK rollups允许在超级可扩展且廉价的 L2 上执行基本操作——比如发送 ETH 和转移Token。但是使用 zkEVM,开发人员可以编写任意复杂的智能合约代码并将其部署到 ZK 驱动的 L2 上。最重要的是,他们可以使用他们在以太坊本身上使用的相同的 Solidity 代码来做到这一点。这意味着 ZK-rollup L2s 现在可以发展成为疯狂、复杂、可组合的狂野西部链,既充满了机遇但是也充满了混乱。
(2)Polygon
Polygon正在构建真正数量惊人的缩放解决方案。老实说,很难跟踪它们。他们被描述为“瑞士军刀的缩放”,大概是基于这个模型:
这是他们目前的产品线,其中四个提到了ZK证明(包括上文提到的zkEVM):
每个项目的更多信息都可以在他们的网站上找到,Polygon的文档非常好, 所以在这里就不重复细节。
(3)StarkWare
StarkWare是一家构建 ZK 扩展技术的公司,由真正的 ZK 巨头 Eli Ben-Sasson 创立。Eli 共同发明了 STARKs(一种高级的 ZK 证明),并且是 Zcash 的创始科学家。他们有两个主要产品:
StarkEx:允许每个应用程序构建自己的个人、许可的 ZK 系统。例如,dYdX(一个Layer 2 上运行的去中心化的智能合约交易平台)和 Immutable (第一个 Layer 2 的 NFT 交易平台)已经使用 StarkEx 分别为永续交易(永续交易类似于股票,只要这只股不退市,您可以一直持有)和 NFT 建立了自己的特定应用 ZK 项目。但是这些应用程序是孤立的——项目之间没有可组合性,因此一个 StarkEx 项目不能直接与另一个项目“对话”。
StarkNet:一种更新的产品,类似于通用区块链。任何开发人员都可以创建智能合约并将其部署在 StarkNet 上——它是无需许可的,例如 StarkEx。项目之间是完全可组合的,所有交易都在以太坊上汇总和结算。我怀疑你很快就会听到很多关于 StarkNet 的消息,因为它的Token计划在 9 月推出👀。
(4)BTC & ETH
Zcash,前面已经提到过几次,是隐私币领域的主要链。鉴于它与比特币的相似之处,我们是否会看到 BTC 本身采用 ZK 证明来实现隐私还未可知?那么以太坊呢——它是否可以从 L2 的剧本中借鉴一页来使用 ZK 证明来实现可扩展性?简而言之:BTC 不行,ETH 可以。
创造比特币的早期密码朋克非常注重隐私。Zcash 的联合创始人 Zooko认为,鉴于大多数高级用户现在接受链上取证允许交易追溯到现实生活中的身份,因此 BTC 在隐私方面已经迷失了方向。众所周知,比特币社区并不乐于接受新功能,因此短期内可能不会有重大的隐私升级,Zooko 预测 BTC 最终会因此而走向末路!!!
有趣的是,在对被称为 BitcoinTalk 论坛的神圣文本进行了一些调查之后,我发现其中一个讨论中只有中本聪本人提到了 ZK 证明。
比特币 maxis 检查 bitcointalk.org 的神圣经文
不幸的是,在当时讨论时,ZK 证明还不够先进,无法支持 Zcash(是首个使用零知识证明机制的区块链系统) 级别的功能,这就是中本聪将它们注销的原因:
这是一个非常有趣的话题。如果找到解决方案,比特币更好、更容易、更方便的实施将是可能的。......在这种情况下,很难想到如何应用零知识证明。(2010 年 8 月 11 日)
当一起谈到比特币和 ZK 证明时,时机是不对的。当时比特币很年轻很好改造的时候,密码学太原始而无法实施,而现在应对复杂的升级,比特币的又有太多妨碍的惯性。或许这就是生活。C’est la vie.
不过,在实施新技术方面,以太坊更加进步。在最近关于 zkEVMs 的一篇文章中,V神提到 ZK 证明可以“更容易验证以太坊链本身”,并大声疾呼以太坊的隐私和扩展探索团队正在为此工作。毕竟,L2s 没有理由垄断 ZK 技术。但也不要过于自信了——相对于更小、更灵活的项目,以太坊的发展速度非常缓慢。
SNARK 是一种 ZK 证明,于 2011 年首次出现,并帮助实现了许多现实的应用程序。目前大多数 ZK 项目都利用 SNARK。
SNARK 代表“简洁的非交互式知识论证”(英文全称Zero-Knowledge Succinct Non-Interactive Argument ofKnowledge),这是一个很好的技术,但了解它们的作用更有用:
STARK是SNARK 的小兄弟,其中字母“N”变成了“T”,其中“T“是“Transparent”,代表“透明的”。(Zero-Knowledge Succinct Transparent-Interactive Argument ofKnowledge,中文意思:简洁化的全透明零知识证明)
它们各自有不同的优缺点。这里说一下这两种 ZK 证明之间的主要区别:
需要注意的是,这些特点在不断发展。最近出现了新的基于 SNARK 的方案,以解决传统 SNARK 的弱点。
对于任何关心 zkEVM 产品细节方面的人(尤其是开发人员)来说,值得强调的是,并非所有的 zkEVM 都是一样的。
这些项目必须在与以太坊的兼容性和性能之间做出权衡。所谓的“EVM 兼容”,即zkEVM 能够验证在与普通以太坊完全相同的环境中运行的程序。
例如,Scroll 不仅与 Solidity 编程语言等高级抽象层的 EVM 兼容,它还与字节码级别的 EVM 兼容。这一点很重要,因为它使 Scroll 上的开发体验与在以太坊本身上开发体验几乎没有区别,有区别的是使用检查单个操作码的复杂调试器工具。它还允许重复使用熟悉且经过实战考验的以太坊客户端,例如 geth,这意味着 zkEVM 可以草拟对以太坊本身的升级,而只需从项目中进行最少的额外工作。
这些zkEVM采用以Solidity编写的智能合约代码,采用这种方法可以让代码更有效地运行,但它抛弃了很多以太坊现有的基础设施。例如,众所周知,geth客户端具有某些限制,这就是为什么像zkSync这样的团队已经用其他用Rust编写的软件替换了它。
将此与“与 EVM 兼容”的zkEVM 进行比较,后者在与 EVM 协调方面并不那么严格。zkSync 团队的一位成员这样描述了这两种类型的 zkEVM:如果您在 Windows 计算机上运行 Photoshop 软件,并且现在想在 Mac 上运行它,您可以重新编译 Photoshop代码使其针对 Mac 进行优化,或者 在您的 Mac 上运行 Windows 模拟器,并让该模拟器运行 Windows 版本的 Photoshop。很明显,前者会更有效率。
诚然,这种观点是有偏见的,并且忽略了更高兼容性所带来的一些好处,但这是一个很好的类比。在这一点上,现在说哪种方法最终会证明更好的策略还为时过早但我们应该很高兴有各种各样的实验现在同时进行。
随着 对ZK证明以及其他新兴加密技术的热议,让我相信我们可能正处于“加密,而不是区块链”的风口浪尖,类似于过去几年的“区块链,而不是比特币”的叙事情况一样。甚至一些比特币 和 Web3/区块链怀疑论者也指出,创新 ZK 证明技术的持续发展是(他们认为)原本毫无价值的替代链的一种救赎。
综上所述——ZK 证明的出现令人兴奋。
但是也许也会出现惊人的反差,说不定所有这些月球数学完全是虚构的,我们被一个全行业的阴谋所欺骗。毕竟,很多 ZK 证明的密码学解释听起来emmm……
责任编辑:Kate