{"content":{"title":"科普: 零知识证明, SNARK与STARK 及使用场景","body":"> * 原文链接： https://pontem.network/posts/zero-knowledge-201\r\n> * 译文出自：[登链翻译计划](https://github.com/lbc-team/Pioneer)\r\n> * 译者：[翻译小组](https://learnblockchain.cn/people/412)  校对：[Tiny 熊](https://learnblockchain.cn/people/15)\r\n> * 本文永久链接：[learnblockchain.cn/article…](https://learnblockchain.cn/article/5654)\r\n\r\n\r\n\r\n\r\n![img](https://img.learnblockchain.cn/2023/04/07/26624.png)\r\n\r\n\r\n\r\n在这篇文章中，我们将探讨零知识技术及其在加密领域的应用。[零知识证明](https://learnblockchain.cn/tags/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E)是一个复杂的话题。\r\n\r\n如果你没有看到我们的[科普: 零知识证明与zkRollup的基础知识](https://learnblockchain.cn/article/5632)文章，请先阅读它 ，如果你没有掌握基础知识，它将是额外的挑战。\r\n\r\n\r\n\r\n## 什么是零知识？\r\n\r\n首先，让我们温习一下什么是零知识证明：\r\n\r\n零知识证明是一种让人相信你知道一个秘密的方法，而不告诉他们这个秘密。\r\n\r\n这个想法最早是在20世纪80年代提出的，但直到1991年才利用三色问题发现了一种开发零知识证明的实际方法。\r\n\r\n在此案例中，我们有一个连接节点的图。节点可以用三种颜色着色，但相邻的两个节点的颜色必须不同。\r\n\r\n![img](https://img.learnblockchain.cn/2023/04/07/48526.png!/scale/40)\r\n\r\n有可能证明你知道一个解决方案，同时向验证者提供关于该解决方案的零知识。只需揭示(暴露)两个节点（不显示任何其他节点），直到验证者达到极高的信心。可以用非常大的数组和无数的揭示来重复计算，以创造复杂问题的零知识。\r\n\r\n这个解决方案证明了零知识证明是可能的，并形成了此后的创新和发展的支柱。\r\n\r\n## zk-proof 的标准\r\n\r\n让我们仔细看看究竟是什么定义了zk-proof（也被称为ZK证明-零知识证明）。为了通过验证测试，一个ZK证明必须满足[三个标准](https://mirror.xyz/krinza.eth/5_Cr91cBK3XdkeHPQ9yjc7z_4NoTNxyqBiM4Jz4d5VE)：\r\n\r\n1. **完整性（Completeness）**：如果证明（statement）是真的，验证者将被证明所说服，而不需要任何额外的信息。\r\n\r\n2. **健全性（Soundness）**：如果证明（statement）是假的，验证者将无法通过证明说服验证者相信它是真的。\r\n\r\n3. **零知识（Zero-knowledge）**：验证者除了知道证明（statement）是真的之外，并不了解关于任何其他信息。\r\n\r\n## 交互式证明与非交互式证明\r\n\r\n在零知识证明的范畴内，我们可以根据所需的交互程度一般将其分为两种类型：\r\n\r\n**交互式证明**通过来回沟通说服验证者。回想一下我们的三色例子。在此案例中，验证者必须要求看到更多的节点（彩色圆圈），而验证者则必须一次又一次地揭示它们。检验者和验证者不得不多次相互交流。这种方法很简单，但对于复杂或计算机化的任务来说并不理想，比如区块链交易。考虑一下，如果一个zk-rollup需要与第1层通信数千次，只是为了执行一批交易；费用和滞后将是无法忍受的。\r\n\r\n**非交互式证明**将证明者和验证者之间所需的沟通程度降低到只有一条信息。这背后的计算对这篇科普文章来说太复杂了, 有兴趣可以[查看这个论文](https://fisher.wharton.upenn.edu/wp-content/uploads/2020/09/Thesis_Terrence-Jo.pdf)，总结一句话是这样：[验证者（verifier）被一个算法取代](https://crypto.stackexchange.com/questions/14365/what-is-a-non-interactive-zero-knowledge-proof)，他向证明者（Prover）提出随机问题或测试。证明被生成并发送给验证者（Verifier），[验证者使用另一种算法来确认](https://mirror.xyz/krinza.eth/5_Cr91cBK3XdkeHPQ9yjc7z_4NoTNxyqBiM4Jz4d5VE)证明者事先并不知晓是什么问题或测试，并且证明符合完整性、健全性和零知识的标准。非交互式zk证明的发展使其能够用于更多的实际应用。几乎所有的零知识加密工具都使用非交互式证明。\r\n\r\n## 非交互式证明：SNARKs和STARKs\r\n\r\n如果 \"零知识\" 不是一个足够奇怪的术语，那么我们现在进入真正奇怪的词语：SNARKs和STARKs。\r\n\r\n简洁的非交互式知识论证（SNARKs）和可扩展的透明知识论证（STARKs）是ZK证明中最常见的两种类型（尽管不是唯一的）。\r\n\r\n**SNARKs**的名称中有 \"非交互式\"，其主要特征在于它们如何生成允许验证者和证明者进行非交互式通信的验证方法。这是通过创建一个[通用参考字符串(CRS)](https://ethereum.org/en/developers/docs/scaling/zk-rollups/#zk-rollups-and-ethereum)来实现的，这是一个公共参数，双方都用来创建/验证证明。\r\n\r\n\r\n\r\n但是，创建CRS有一个缺点：必须有人来做这件事！这就引入了安全风险！这引入了安全风险，因为现在有其他实体参与了这个过程。(对某些人来说，这违背了首先使用ZK证明的目的：不可信任）。在创建CRS的过程中，相关各方可以接触到敏感信息，这些信息可以被用来创建虚假证明。这种[信息被迷人地称为 \"有毒废弃物\"](https://ethereum.org/en/developers/docs/scaling/zk-rollups/#zk-rollups-and-ethereum)，一旦生成了CRS，就必须将其删除。\r\n\r\n![img](https://img.learnblockchain.cn/2023/04/07/71581.gif)\r\n\r\n为了限制所涉及的安全风险，CRS通常使用[多方计算（MPC）设置仪式](https://zkproof.org/2021/06/30/setup-ceremonies/)来创建。在这种方法中，多方输入创建CRS所需的一些“有毒废弃物”，并使其相互隐藏。这样一来，只要有一方在最后删除他们的有毒废弃物，CRS就得到了保障。然而，风险仍然存在，若他们不这样做。\r\n\r\n**STARKs**(由[Starknet](https://www.starknet.io/)开发)通过消除CRS为这个问题提供了一个解决方案。不再需要\"有毒废弃物\"，[参数是随机产生的，使用可公开验证的方法](https://ethereum.org/en/developers/docs/scaling/zk-rollups/#zk-rollups-and-ethereum)。除了这一安全优势外，STARKs也比SNARKs更快地证明和验证，特别是对于复杂的证明。主要的缺点在于它们对数据的使用：STARK证明比SNARK大得多，使它们的使用成本更高。\r\n\r\nSNARKs因其较低的成本和相对的简单而被许多零知识工具所使用。最著名的第二层以太坊 Rollup 扩容，zkSync，需要[使用可信的设置仪式](https://blog.matter-labs.io/keeping-funds-safe-a-3-factor-approach-to-security-in-zksync-2-0-a70b0f53f360)。不过，它包括200多个参与者(甚至是Vitalik Buterin本人也在内！)，只要其中一个人是诚实的，整个系统就是安全的。在[另一篇文章中单独科普 ZKRollup](https://learnblockchain.cn/article/5606) \r\n\r\n同时，STARKs正被越来越多地采用，特别是在有高安全需求的情况下。\r\n\r\n## ZK的使用案例超越了 Rollup\r\n\r\n这就把我们带到了有趣的部分：我们如何才能真正使用这些零知识的东西？\r\n\r\n第二层Rollup是实现最好的使用场景，有几个突出的例子，包括[zkSync](https://zksync.io/)、[Loopring](https://loopring.org/)、[ZKSpace](https://zks.org/)和[Aztec](https://aztec.network/) 。但是，零知识是一个快速、持续发展的领域，\r\n\r\n新的应用一直在出现。在这篇文章中，我们将看一下其中的两个应用：隐私加密货币和ZK身份。(请继续关注我们的ZK 科普文章，将看看最新的使用场景：[ZKEVMs](https://learnblockchain.cn/article/5606)）。\r\n\r\n### 身份\r\n\r\n零知识的一个最有趣的实现是在身份验证中。在加密领域，人们保持匿名和使用虚拟网名的情况并不少见；你肯定见过Twitter上的主要影响者，他们只通过一个ENS域名和一个NFT  而被大家所知。\r\n\r\n甚至是大型项目的创始人，他们在整个职业生涯中都保持 \"无名 \"状态。一个例子是[0xMaki](https://twitter.com/0xMaki)，他是SushiSwap的前主厨，现在是LayerZero团队的成员。\r\n\r\n![img](https://img.learnblockchain.cn/2023/04/07/79965.png)\r\n\r\n这就提出了一个具有挑战性的问题：我们怎么能把我们辛苦赚来的资金交给一个匿名人呢？虽然加密货币的原住民可能对这一前景毫不畏惧，但对于具有传统金融背景的人来说，这是一粒难以下咽的药丸。\r\n\r\n但是，考虑一下[ZK身份工具可以解锁这样的场景](https://0xparc.org/blog/zk-id-1)：\r\n\r\n- 为了申请贷款，一个匿名的债务人可以证明他们以前曾贷款并按时偿还，而不透露他们的身份、贷款的规模或目的。\r\n\r\n- 在对DAO提案或社区决策进行权衡时，有人可以证明他们的股份大小、在项目中的时间，或在更广泛的空间中的声誉，而不透露他们的身份或这些资格的确切细节。\r\n\r\n- 为了有资格获得空投、NFT铸币白名单、早期访问DApp或其他独家机会，有人可以证明他们的持股规模，收集独家NFT，广泛的交易历史，或类似的，而不透露这些敏感信息的确切性质。\r\n\r\n而这样的场景还在不断增加。一些项目已经开始实施零知识身份解决方案，其中最突出的是Polygon ID。\r\n\r\n\r\n\r\n[Polygon ID](https://www.polygon.technology/polygon-id)是一个由Polygon区块链团队开发的零知识身份平台。该平台为终端用户提供隐私，并为dApps和协议提供链上验证，创造了一个更加隐私和更加安全的环境。Polygon的联合创始人Mihailo Bjelic曾表示，Polygon ID是第一个[\"数字身份空间\"，\"默认隐私，提供链上验证和无许可证明。](https://www.polygon.technology/blog/introducing-polygon-id-zero-knowledge-own-your-identity-for-web3)\"\r\n\r\n### 隐私区块链和加密货币\r\n\r\n零知识是一种强大的交易和通信方式，而不透露多余的信息。这使它成为推动加密货币隐私这个关键目标 的流行技术。\r\n\r\n许多项目都采用了 ZK 证明来匿名交易，保护用户隐私，并对数据进行加密。\r\n\r\n其中最有名的是[Zcash](https://z.cash/)，它在2016年推出时是\"[zk-SNARKs的第一个广泛的应用](https://z.cash/technology/zksnarks/)\"。Zcash \"屏蔽交易（shielded transactions）\"对交易的发起者、收款人和金额进行完全加密。[Zcash声称其技术超过了Monero等其他私有加密货币](https://z.cash/support/faq/)，因为它还隐藏了交易路径，使得追踪Zcash交易变得极其困难。目前Zcash的市值为[4.95亿美元，24小时交易量为3300万美元。](https://electriccoin.co/zcash-metrics/)\r\n\r\nZcash历史上一个耐人寻味的部分是\"[启动仪式](https://web.archive.org/web/20171221073939/https://fortune.com/2017/12/18/jp-morgan-bitcoin-zcash-wilcox/)\"，这是历史上最著名的信任设置。为了在2016年推出Zcash，私钥在两天的过程中在全球六个地方生成。之后，这些有毒废弃物被销毁了--用电锯和篝火进行物理销毁！在这一仪式中，联合了[摩根大通](https://web.archive.org/web/20171221073939/https://fortune.com/2017/12/18/jp-morgan-bitcoin-zcash-wilcox/)和[爱德华-斯诺登](https://fortune.com/crypto/2022/04/28/edward-snowden-crypto-zcash/)这样的”怪人“都参加了。\r\n\r\n![img](https://img.learnblockchain.cn/2023/04/07/94955.png)\r\n\r\n>  销毁用于Zcash仪式的其中一台电脑。资料来源：IEEE Spectrum\r\n\r\n另一个采用ZK保护隐私的突出例子是[TRON](https://tron.network/)区块链和加密货币。2020年7月，[Tron升级到Tron 4.0，并引入TRONZ隐私协议](https://www.gemini.com/cryptopedia/tron-coin-blockchain-architecture#section-tron-4-0-and-zk-snar-ks-introduction)，基于SNARKs。这为网络增加了三种类型的交易：铸造隐蔽的TRC-20代币，将其销毁回非隐蔽的形式，以及地址之间的隐蔽转账。\r\n\r\n虽然Zcash和Tron是第一层，[Aztec](https://aztec.network/)是一个面向加密的[以太坊](https://decrypt.co/resources/what-is-ethereum-quickly-explained-four-minute-guide)第二层。它使用zk-SNARKs来Rollup交易，以降低费用，同时也完全加密它们。它的[Aztec Connect](https://aztec.network/connect/) SDK允许开发者在以太坊上也建立加密的dApps和DAO。建立在Aztec上的[zk.money](https://zk.money/)协议是一个具有加密和降低费用的以太坊 DeFi工具。\r\n\r\n# 结论\r\n\r\n零知识是一项快速发展的技术，每天都在开发新的功能和应用。\r\n\r\n本文作者是 Pontem，Pontem Network是一个产品工作室，为Aptos构建基础性的dApps，欢迎也可以在[Twitter](https://twitter.com/pontemnetwork?lang=en)和[Telegram](https://t.me/pontemnetworkchat)上与Pontem联系\r\n\r\n\r\n---\r\n\r\n感谢 [Chaintool](https://chaintool.tech/) 对本翻译的支持， Chaintool 是一个为区块链开发者准备的开源工具箱"},"author":{"user":"https://learnblockchain.cn/people/412","address":null},"history":null,"timestamp":1681531257,"version":1}