{"content":{"title":"什么是 零知识证明：ZK-SNARKs？|Tokenview","body":"零知识证明（Zero-knowledge proofs ）是允许一方向另一方透露信息知识而不透露信息本身的机制。ZK 证明也称为有效性证明，最初用于隐藏以隐私为中心的区块链中的交易细节。 \r\n\r\n但 ZK 证明还有另一个令人兴奋的用例：扩展通用区块链。通过有效性证明，区块链节点可以在不存储详细信息或重放计算的情况下验证交易。这减少了确认时间并提高了网络吞吐量。  \r\n\r\n由于其可扩展性优势，ZK 证明已成为区块链扩展项目的核心基础设施，尤其是零知识汇总（zero-knowledge rollups）。ZK-SNARKs和ZK-STARKs是零知识证明的主要类型。**作为一个全币种区块链浏览器，Tokenview同样支持了Horizen、Zcash等注重隐私的ZK-SNARKs类型的公链。** 本期文章就来一起学习一下什么是ZK-SNARKs？\r\n\r\n# 什么是 ZK-SNARKs？\r\n**ZK-SNARKs 是一种在不暴露底层数据的情况下生成零知识证明来验证信息真实性的协议。** 首字母缩略词全称为：Zero-Knowledge Succinct Non-Interactive Argument of Knowledge。\r\n\r\nZK-SNARKs 协议涉及两方：证明者 (Alice) 和验证者 (Bob)。证明者（Alice）是提出声明的一方，而验证者（Bob）是负责验证声明的一方。 \r\n声明中引用的信息称为见证（witness）或秘密（secret）。证明者（Alice）使用 ZK-SNARK 机制产生证明，以向验证者（Bob）表明声明是真实的，而无需透露参考信息。\r\n一个涉及 ZK-SNARKs 的假想示例是验证用户身份。个人可以在不透露个人信息（例如护照或社会安全号码）的情况下证明声明（“我是中国公民”）。 \r\n\r\n ZK-SNARKs具有以下特性：\r\n1. 零知识（Zero-knowledge）：这意味着验证者除了知道声明的有效性或虚假之外，一无所知。 \r\n2 . 简洁（Succinct）：证明足够小，验证者可以在短时间内完成验证。 \r\n3. 非交互式（Non-interactive）：SNARKs 是非交互式的，因为证明者和验证者不需要交换超出提交的初始证明之外的信息。早期的零知识证明系统需要证明者和验证者交换多条消息来验证陈述。 \r\n4. 论证（Argument）：SNARK 是一个满足严格要求的“计算合理”的陈述，因此很难作弊（即生成虚假证明）。 \r\n5. 知识：基于 SNARK 的证明不能通过访问底层信息或见证来创建。  \r\n \r\n![image.png](https://img.learnblockchain.cn/attachments/2022/12/HME31VZg63a59b9aec4c3.png)\r\n\r\n资料来源：Altoros\r\n# 区块链中的 ZK-SNARKs\r\n分布式计算系统和公链一样，需要解决所谓的“计算完整性问题”。计算完整性 (CI：Computational integrity) 是指从特定计算中得到的输出的正确性。 \r\n\r\n在公链中，计算完整性是指在网络上执行的交易的正确性。大多数区块链通过让其他计算机（节点）重新运行每个交易来实现它。 \r\n\r\n然而，这种方法是有问题的。强制每个节点重放每个交易会减慢网络速度并限制可扩展性。节点还必须存储交易数据（否则它们无法重放计算），导致区块链大小呈指数增长。 \r\n\r\n但是，如果节点可以在不重放计算的情况下检查计算的有效性呢？这将提高网络吞吐量并消除节点存储多余交易数据的需要。 \r\n\r\n使用 ZK-SNARK 生成的有效性证明可以在不泄露输入（inputs）的情况下证明交易的有效性。这就是为什么 Zcash 和 Monero 等注重隐私的加密货币使用 SNARK 来混淆交易信息。 \r\n\r\nSNARK 还可以证明链下执行的计算的正确性，而无需节点重放计算的每一步。这就是 ZK-SNARK 可用于扩展区块链的地方。 使用SNARKs 验证链下计算是一个复杂的过程，首先要将计算编码为数学表达式。该数学陈述构成了有效性证明的基础。 \r\n验证者然后对证明执行操作以检查其正确性。如果证明通过所有检查，则基础计算被认为是有效的。这就是 SNARKs简洁的原因——有效性证明的大小比它验证的计算小很多倍。 \r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2022/12/gmF2ux8N63a59bbd68516.png)\r\n来源：Finematics\r\n### ZK-SNARKs 和 ZK rollups\r\n汇总（rollup）是以太坊的第 2 层扩展解决方案，可通过链下执行提高L1区块链的吞吐量。汇总 处理 L2 链上的交易，将多个链下交易聚合成区块，并提交给 L1 链。 通过将计算从基础层移开，汇总可以减少网络拥塞并扩展交易。 \r\n\r\n然而，L1 链需要知道链下执行的交易是否有效（即计算完整性问题）。否则，恶意行为者可以劫持汇总并向主链提交不良交易。 \r\n\r\n一种类型的汇总（零知识汇总）使用 ZK-SNARKs 向 L1 链证明链下交易的真实性。任何人都可以验证 SNARK 证明，这确保了 L1 链的交易有效性。 \r\n\r\n**大多数使用 ZK-SNARKs 的 ZK rollups 都遵循相同的结构：**\r\n1. L2 链上的用户签署交易并将其提交给验证者。 \r\n2. 验证者将交易压缩成一个区块，并生成相应的有效性证明（SNARK）。这提供了新状态由添加有效交易产生的加密保证。 \r\n3. L1 链上的智能合约对有效性证明进行操作。此操作的结果确定批量交易是否经过验证并发布到主链。 \r\n\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2022/12/SuiRFtP863a59be29dbc8.png)\r\n\r\n资料来源：Simon Brown\r\n# ZK-SNARKs 有什么好处？\r\n使用 ZK-SNARKs 有三个主要好处：高吞吐量、有效性证明尺寸小和安全性。\r\n**1. 高吞吐量** \r\nZK-SNARKs 通过缩小以太坊基础层的计算来扩展吞吐量。使用 ZK-SNARKs，汇总可以将 TPS 率提高到数千。 \r\nZK-SNARK 通常比它验证的交易数据小很多倍。这减少了基础区块链的拥塞，并实现了更便宜的gas费和更快的交易。 \r\n\r\n**2. 证明尺寸小 **\r\nSNARK 证明的小尺寸使其易于在主链上进行验证。在以太坊上，这意味着验证链下交易的gas费更低，从而降低了终端用户的汇总成本。\r\n\r\n**3. 安全 **\r\n\r\nZK 汇总被认为比其他扩展项目更安全，主要是因为 ZK-SNARK 中使用了领先的加密安全机制。 \r\nZK-SNARK 证明在计算上是可靠的，因此很难欺骗验证者。ZK-SNARKs 的非交互性也意味着任何人都可以去信任地验证证明。 \r\n\r\n# ZK-SNARK 的缺点是什么？\r\n使用 ZK-SNARKs 有三个主要缺点：它需要一个可信的设置，它们容易受到量子计算攻击，并且它们依赖于特殊的硬件。\r\n**1. 可信设置 （Trusted setup ）**\r\n设置 ZK-SNARK 协议需要创建一个通用公共参考字符串 (CRS：Common Reference String)。CRS也被描述为公共参数，它支持证明者和验证者之间的安全通信。 \r\n如果恶意行为者获得了公共参数的知识，他们可能会生成虚假的有效性证明。一些项目试图通过涉及不同个体的多方计算（MPC：multi-party computation ）来生成公共参数来解决这个问题。 然而，这种方法要求用户信任涉及到各方的完整性。这有很大的问题，因为区块链的目的是减少对信任机构的需求。\r\n\r\n**2. 易受量子计算攻击**\r\nZK-SNARK 使用椭圆曲线密码体制 (ECC：Elliptic Curve Cryptography) 来加密用于生成有效性证明的信息。ECC 目前相对安全，但量子计算的进步可能会打破其安全模型。 \r\n**3.对特殊硬件的依赖 **\r\n\r\n使用 ZK-SNARKs 生成有效性证明是一个计算密集型过程，这意味着证明者必须使用专门的硬件。因为很少有人能买到这些机器，所以很多人认为 ZK-SNARK 证明过程是高度中心化的。  \r\n\r\n# 哪些项目使用 ZK-SNARKs？\r\n使用 ZK-SNARKs 的五个著名项目是 ZKSync、Loopring、Aztec、Polygon Hermez 和 ZKSpace。\r\n**ZKSync**\r\nEVM 兼容的 ZK rollup 存在于以太坊主网上。ZKSync 支持智能合约、代币互换、支付和 NFT 铸造。\r\n**Loopring**\r\n以太坊L2项目由基于 SNARK 的 ZK rollup 技术提供支持。Loopring 还可以作为交易 ETH 和其他 ERC-20 代币的去中心化交易所，其费用仅为以太坊主网上 DEX 的一小部分。 \r\n**Aztec**\r\n建立在以太坊网络上的开源 L2 网络。Aztec 利用 ZK-SNARKs 来扩展交易并增加用户的财务隐私。 \r\n**Polygon Hermez **\r\n\r\nZK rollup 在以太坊区块链上运行。Polygon Hermez 使用 ZK-SNARKs 来支持安全和低成本的代币交易和支付。 \r\n**ZKSpace**\r\n基于 ZK-SNARKs 的 ZK rollup 项目。ZKSpace 为以太坊用户提供更低的 gas 费用和更快的交易，包括 AMM 式的 DEX (ZKSwap v3)、支付网络 (ZKSquare) 和 NFT 市场 (ZKSea)。 \r\n\r\n原文链接：https://www.alchemy.com/overviews/snarks-vs-starks\r\nhttps://ethereum.org/en/zero-knowledge-proofs/#zk-snarks"},"author":{"user":"https://learnblockchain.cn/people/12284","address":null},"history":"QmWJGKGLMbdMVgbTemN9M6gbJCbRqPr2frBqgTxLxvN1US","timestamp":1675131749,"version":1}