最全最细的零知识 (ZK) 证明解读_ENS:KITTENS价格

原标题:未来10年Web3/区块链最重要的解决方案之一,花10分钟了解一下?

零知识(ZK)证明就像三箭资本的SuZhu和KyleDavies一样,他们出生于上世纪八十年代,但直到最近才成为热门话题。

你可能听说过很多关于它们的信息,但ZK证明到底是什么?

你也许了解了基础知识,但想知道使用ZK证明最有前途的项目是什么?

现在就让我们通过ZK证明的概述、应用项目和底层技术来回答这些简单又复杂的问题。

概述

1.什么是ZK证明?

ZK证明使用密码学允许某人向其他人证明事实是百分百真实的,但除了特定真实性的陈述之外,不会透露任何额外信息。即能保守秘密,又能让人相信你。另一个比较通俗的定义是:ZK证明本质上是让某人证明他们知道或拥有某些东西,而不会泄露他们知道或拥有什么的任何信息。

也许举几个例子会更有助于理解:

可以使用ZK证明来证明我拥有某个NFT的事实,而无需透露我拥有哪一个、购买时间或所花金额。

可以使用ZK证明来证明将Token从账户A发送到账户B的以太坊交易的有效性,而无需透露任一账户的Token余额或发送的金额。

ZK证明在1985年MIT的一篇研究论文中第一次出现。像许多技术一样,ZK证明首先引起了大量理论论证,然后在进一步发展和完善后逐渐找到实际运用。

麻省理工学院研究复杂加密问题的研究人员

最早的ZK证明是交互式的。为了证明某事,你必须和验证者玩一个问答游戏。就像测谎仪测试——验证者不断对证明者所拥有的“知识”进行一系列提问。通过不停的提问,让验证者相信证明者的确知道这些”知识”。但是这样的方法并不能使人相信证明者和验证者都是真诚的,因为两者可以提前串通,以便证明者可以在不知道答案的情况下依然通过验证。

后来发展到非交互式的。非交互式是证明者现在可以生成一个东西,一段数据,作为他的ZK证明提交给验证者,而无需多轮沟通。这种ZK证明不太像游戏/仪式/协议,而更像是可以由证明者生成并提交给验证者的不可伪造物品,避免了证明者和验证者串通的可能性。

2.ZK证明有什么用?

目前ZK证明有两个主要的用途:

隐私:在区块链上进行活动时尽量减少公开的数据量。Zcash就是一个很好的例子:

与比特币一样,Zcash交易数据需要发布到公共区块链;但与比特币不同的是,Zcash提供了机密交易和财务隐私的选择,利用零知识证明允许在不透露发送者、接收者或交易金额的情况下验证交易。

其他利用ZK证明保护隐私的项目有IronFish、Worldcoin和前两天被监管的TornadoCash。

可扩展性:允许在链下执行密集计算,使成本更低,然后创建一个简洁的证明,表明计算是被诚实执行的,可以在链上发布。

链上和链下各司其职,变得专业化,专注于他们最擅长的事情。我们可以使用集中式、高性能、脱链系统快速有效地处理一大堆交易,然后使用去中心化、不可变、去信任的区块链作为记录谁拥有什么的最终事实来源。

ZK证明相对于所有链下交易的有效性证明而言计算起来非常小,并且验证速度非常快。这要归功于一个几乎神奇的属性:一旦他们创建了一个证明说“是的,这数十亿次计算都被100%证明是正确的”,验证者可以确认证明是正确的,而无需自己再进行数十亿次计算。

有很多ZKrollup项目专注于可扩展性,还有一些项目希望同时提供隐私和可扩展性,包括Aztec和EspressoSystems。

3.炒作

ZK证明是一种通用技术。过去的几次区块链牛市无疑推动了对ZK研发的投资,但ZK证明的第一个实际应用出现在中本聪发布比特币白皮书之前。链下世界中有许多令人兴奋的ZK证明应用——比如身份管理、最低年龄验证、匿名凭证、金融资产的评级和风险评估以及数字投票。

对于链上和链下应用程序的所有ZK证明炒作,如果能够推动技术向前发展出新的用途,那是一件好事。但是这种期望是周期性的。当ZK证明被炒得火热的时候,人们给予大量关注,但是当意识到技术也不是100%完美的时候,人们的情绪不可避免地会变得冷淡。

应用项目

1.用户视角下的ZKRollups

前面已经提到了ZK-rollups如何运作的:它不需要在以太坊上运行缓慢且收费昂贵的计算,而是在链下进行这项工作区块链上):创建一个证明说你诚实地进行了所有交易,然后在以太坊上发布证明。

这对用户来说实际上是什么样的呢?

首先,你找到一个你感兴趣的ZKrollup项目。每个项目都有自己独立的应用程序和项目生态系统,所以找一个你喜欢的DeFi或NFT协议。假设L2在其L1结算层使用以太坊。它将在L1以太坊上拥有一个或几个智能合约,这些合约可以完成一些重要的工作:

存储有关L2链上正在发生的事情的所有相关数据。该合约可能不会看到L2块的实时视图,因为L2交易在被提交到以太坊上的汇总中之前不会被视为官方交易;

检查托管证明以确保它们是合法的代码。当汇总提交到以太坊时,验证者智能合约会确保汇总的证明有效,然后再在L1上正式发布。

也许一些类比可以让你更好理解:验证者就像保镖一样,确保来自L2的汇总在进入以太坊之前是有效的。或者,在L2上产生的区块就像是发表一些关于我有独立科学论文的粗略声明,然后被验证者检查并提交到以太坊就像是经过同行评审并在受人尊敬的期刊上发表。

这听起来好像并不是很简单,但了解ZKrollup架构的基础知识是理解ZKrollup项目交互的关键基础。基本的用户流程可能如下所示:

向rollup项目在以太坊上的智能合约发送一些ETH,用于存储/锁定您的资金。

短暂延迟后,L2链会收到您已锁定这些资金,并会解锁等值的硬币供您在L2上使用。这是一个非常典型的桥接体验。

您可以在L2上随意使用您的Token。你可以交换,投资,或者用来购买NFT。然后定期将rollup发送到以太坊,表示你在L2上最近发生的所有活动都已经完成。

现在您决定要将资金提取回以太坊,因为您在L2玩得很开心,但现在您想将筹码兑现为真钱。为此,您将L2Token发送到L2链上的销毁地址,并等待证明该行动的rollup汇总在以太坊上发布。发布完成后,您被锁定在以太坊智能合约中的资金就会被解锁,返回到您的钱包。

2.ZKrollupVS.?Optimisticrollups

本篇文章不会详细介绍ZKrollups和Optimisticrollups,因为有很多文章对此进行比较,但这里有一句话总结:Optimisticrollups对发布到L1的交易采取“在被证明有罪之前是无辜的”的方法,而ZKrollups,正如我们已经可见,在进入L1之前都被认为不可信,要求所有链下计算在进入L1之前使用有效性证明来验证自己。

每种方法都有利有弊,但ZKrollups的一个主要好处是用户可以更快地将资金提取到L1。在从Optimisticrollups中提款后,必须等待挑战期到期才能解锁资金,因为需要等待被验证。不过V神长期看好ZK路线:

总的来说,我自己的观点是,在短期内,Optimisticrollups可能会在通用EVM计算中胜出,而ZKrollups可能会在简单的支付、交换和其他特定于应用程序的用途中胜出,但在随着ZK-SNARK技术的改进,中长期ZKrollups将在所有用途中胜出。

—维塔利克

3.Rollupsvs.Validiumsvs.Volitions

另一种类似rollup的扩容解决方案是validiums。Volitions是混合扩容解决方案,让用户能够在“zkrollup模式”和“validium模式”之间进行选择。

当ZKrollups发布到L1上时,它既包括证明L2上的所有活动都是合法的,也包括自上次汇总以来L2上账户余额所有变化的情况。这一点至关重要,因为当您想从L2中提取资金时,您需要之前的情况来说明“这是我在L2上所做的,这意味着我应该能够提取特定数量的硬币和Token。”

还有一种叫做validium的东西,它算是另一种类似rollup的扩容解决方案。

Validiums的工作方式与传统的ZKrollups几乎相同,并且它们具有更便宜和更具可扩展性的额外好处。

不过问题是,不够安全。

在L1上发布的Validiums不包括在L2上拥有资金的所有数据——即将资金提取到以太坊上的数据也是未知。相反,数据存储在链下。如果信任存储该数据的个人/网络/公司,这不是问题,但最好确定他们绝对是可靠的。因为如果你在L2上存储了100万美元,然后存储这些数据的项目方被黑客入侵并丢失了数据,或者被政府冻结,或者因为你在Twitter上说了愚蠢的话而对你进行惩罚,那么你可能会失去你的钱…

或者,更准确地说,它被锁定了。

有机会在这里用一句精辟的“不是你的钥匙,不是你的硬币”类型的口头禅,来传播对有效性潜在风险的认识,但我能想到的最好的办法是“如果数据不可用,你的硬币就是可攻击的”。因此,项目最好能够很好地跟踪他们的汇总数据。

而某些项目正在使用volitions混合扩容解决方案,让用户能够在“zkrollup模式”和“validium模式”之间进行选择。这也被宣传为两种选择之间的折衷方案——项目将它们吹捧为“拥有你的蛋糕并吃掉它”或“世界上最好的”的一种方式。因此了解rollups和validiums之间的区别很重要。当L2向L1链提交证明时,它们允许用户选择取款所需的数据是否也发布在L1上,或者是否存储在其他地方。

总的来说,Validiums比ZK-rollups便宜,但让你的资金在L2上有冻结的风险。那些用volitions的项目会让你在Validiums还是ZK-rollups之间进行选择。

资料来源:StarkWare

4.ZK项目

使用ZK技术的项目太多了,无法一一列出,但这里有一些主要类别和项目。

zkEVM

在过去的一个月里,几个不同的项目都通过推出所谓的zkEVM登上了头条。这些协议之间的竞争被称为“zkEVM战争”和“ZKRollupRace”,人们很快就发现,每个协议都声称已经击败了其他协议:

三个主要参与者是Scroll、MatterLabs和Polygon。

zkEVM很重要,因为它们允许ZKrollups支持比目前更多的应用程序。第一波ZKrollups允许在超级可扩展且廉价的L2上执行基本操作——比如发送ETH和转移Token。但是使用zkEVM,开发人员可以编写任意复杂的智能合约代码并将其部署到ZK驱动的L2上。最重要的是,他们可以使用他们在以太坊本身上使用的相同的Solidity代码来做到这一点。这意味着ZK-rollupL2s现在可以发展成为疯狂、复杂、可组合的狂野西部链,既充满了机遇但是也充满了混乱。

Polygon

Polygon正在构建真正数量惊人的缩放解决方案。老实说,很难跟踪它们。他们被描述为“瑞士军刀的缩放”,大概是基于这个模型:

这是他们目前的产品线,其中四个提到了ZK证明:

每个项目的更多信息都可以在他们的网站上找到,Polygon的文档非常好,所以在这里就不重复细节。

StarkWare

StarkWare是一家构建ZK扩展技术的公司,由真正的ZK巨头EliBen-Sasson创立。Eli共同发明了STARKs,并且是Zcash的创始科学家。他们有两个主要产品:

StarkEx:允许每个应用程序构建自己的个人、许可的ZK系统。例如,dYdX和Immutable已经使用StarkEx分别为永续交易和NFT建立了自己的特定应用ZK项目。但是这些应用程序是孤立的——项目之间没有可组合性,因此一个StarkEx项目不能直接与另一个项目“对话”。

StarkNet:一种更新的产品,类似于通用区块链。任何开发人员都可以创建智能合约并将其部署在StarkNet上——它是无需许可的,例如StarkEx。项目之间是完全可组合的,所有交易都在以太坊上汇总和结算。我怀疑你很快就会听到很多关于StarkNet的消息,因为它的Token计划在9月推出?。

BTC&ETH

Zcash,前面已经提到过几次,是隐私币领域的主要链。鉴于它与比特币的相似之处,我们是否会看到BTC本身采用ZK证明来实现隐私还未可知?那么以太坊呢——它是否可以从L2的剧本中借鉴一页来使用ZK证明来实现可扩展性?简而言之:BTC不行,ETH可以。

创造比特币的早期密码朋克非常注重隐私。Zcash的联合创始人Zooko认为,鉴于大多数高级用户现在接受链上取证允许交易追溯到现实生活中的身份,因此BTC在隐私方面已经迷失了方向。众所周知,比特币社区并不乐于接受新功能,因此短期内可能不会有重大的隐私升级,Zooko预测BTC最终会因此而走向末路!!!

有趣的是,在对被称为BitcoinTalk论坛的神圣文本进行了一些调查之后,我发现其中一个讨论中只有中本聪本人提到了ZK证明。

比特币maxis检查bitcointalk.org的神圣经文

不幸的是,在当时讨论时,ZK证明还不够先进,无法支持Zcash级别的功能,这就是中本聪将它们注销的原因:

这是一个非常有趣的话题。如果找到解决方案,比特币更好、更容易、更方便的实施将是可能的。......在这种情况下,很难想到如何应用零知识证明。

当一起谈到比特币和ZK证明时,时机是不对的。当时比特币很年轻很好改造的时候,密码学太原始而无法实施,而现在应对复杂的升级,比特币的又有太多妨碍的惯性。或许这就是生活。C’estlavie.

不过,在实施新技术方面,以太坊更加进步。在最近关于zkEVMs的一篇文章中,V神提到ZK证明可以“更容易验证以太坊链本身”,并大声疾呼以太坊的隐私和扩展探索团队正在为此工作。毕竟,L2s没有理由垄断ZK技术。但也不要过于自信了——相对于更小、更灵活的项目,以太坊的发展速度非常缓慢。

底层技术

1.SNARKs——一项突破

SNARK是一种ZK证明,于2011年首次出现,并帮助实现了许多现实的应用程序。目前大多数ZK项目都利用SNARK。SNARK代表“简洁的非交互式知识论证”,这是一个很好的技术,但了解它们的作用更有用:

“简洁”意味着证明比它们所代表的所有计算总和要小得多。例如,可以获取需要在以太坊区块链上单独记录的一大堆交易,并创建一个仅用几百字节证明其有效性的SNARK。

“非交互式”意味着您可以使用一台计算机生成一个证明,该证明可以作为某物的不可伪造证明,您可以将该证明提交给另一台计算机/智能合约将验证它。

ZK:像所有ZK证明一样让您在分享尽可能少的信息的同时证明某些事情。

速度:由于这些证明非常小,因此可以非常快速地进行验证。

安全性:SNARK的一个主要缺点是进行证明的计算机和进行验证的计算机必须就一组称为公共参考字符串(CRS)的参数达成一致。要制作CRS,您需要使用随机源,而这些随机数非常强大。如果坏人发现了他们,他们可以创建任意证据并验证者认为它是有效的。这就是为什么任何使用SNARK的合法项目都会确保在使用这些随机数后立即销毁它们。

2.STARKVS.?SNARK

STARK是SNARK的小兄弟,其中字母“N”变成了“T”,其中“T“是“Transparent”,代表“透明的”。

它们各自有不同的优缺点。这里说一下这两种ZK证明之间的主要区别:

证明大小:STARK比SNARK大,这也意味着它们在以太坊上验证的成本更高,因为更大的证明=更多的计算=更高的gas费。

可扩展性:通常认为STARK比SNARK更有效,具体取决于实现情况。证明和验证STARK的复杂度规模相对于被证明的计算复杂度呈拟线性增长,而SNARK的复杂度呈线性增长。这意味着在证明更大的计算量时,STARKs比SNARKs具有更大的优势。

生态系统和项目:使用SNARK的项目比使用STARK的项目多得多,因为SNARK的存在时间更长。

递归:SNARK支持递归——您可以创建一个父SNARK来证明多个子SNARK——这是许多扩展解决方案使用的主要功能。STARK不支持递归。

量子安全:SNARK使用椭圆曲线密码术,这不是量子安全的。量子计算的进步可能会使基于SNARK的系统容易受到攻击。STARK不易受到攻击,因为它们的加密方案依赖散列函数。

可信设置:如前所述,SNARK在创建CRS期间需要可信设置。STARK通过利用可公开验证的随机性来生成证明者和验证者共享的参数,从而避免了这个不便的问题。

需要注意的是,这些特点在不断发展。最近出现了新的基于SNARK的方案,以解决传统SNARK的弱点。

3.zkEVM权衡

对于任何关心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……

原文链接:https://internbreakdowns.substack.com/p/intern-breakdown-4-zero-knowledge原文标题:Zero-KnowledgeProofs原文作者:MarkBissellandCMSIntern

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:15ms0-8:568ms