# 一分钟了解zk-SNARKs和zk-STARKs隐私协议

By [aiko](https://paragraph.com/@aiko-2) · 2022-03-18

---

前言
--

匿名性一直被视为 加密货币 社区的非常有价值的特征之一。它是可替代性的前身，该特性对于广泛使用的货币形式来说也是必要的。同样，大多数加密资产持有者不希望他们的资产和交易记录被完全公开。在所有在为区块链提供隐私性的各种加密技术中，zk-SNARK 和 zk-STARK 是两个值得注意的例子。

zk-SNARK 代表了简洁化的非交互式零知识证明，而 zk-STARK 代表了简洁化的全透明零知识证明。 Zk-SNARK 已经在基于区块链的支付系统上如 Zcash，JP Morgan Chase 项目中使用，并作为一种客户端到服务器的安全验证方式。但是，虽然 zk-SNARKs 已经很成熟并被很广泛的使用，但 zk-STARK 现在也被吹捧为该协议的新版本和改进版本，旨在解决 zk-SNARKs 先前的许多缺点。

简介
--

Zk-Snarks的全称为“Zero-Knowledge Succinct Non-Interactive Argument ofKnowledge”，中文名称为：简明非交互零知识证明。代表项目：Zcash

**什么是zk-STARKs？**

zk-STARKs可以认为是Zk-Snarks的替代版本，其中字母“N”变成了“T”，其中“T“是“Transparent”，代表“透明的”。

**zk** **\-SNARKs与zk-STARKs有什么区别？**

zk-STARKs是作为zk-SNARK协议的替代版本而创建的，被认为是该技术的更快和更便捷的实现方式，从技术上讲，zk-STARKs不需要初始化可信设置，可以减少花费的资金和时间。

在zk-STARK中，证明者与验证者之间的通信量，相对于计算的任何增量，是保持不变的，而在zk-SNARK中，所需的计算越多，各方来回发送消息的次数就越多，因此，zk-SNARK的整体数据量，远大于zk-STARK证明中的数据量。

**总结：**

zk-SNARKs和zk-STARKs都是基于”零知识证明”（zero knowledge proof，即ZKP）， zk-SNARK代表了简洁化的非交互式零知识证明，而zk-STARK代表了简洁化的全透明零知识证明。

V神曾称赞zk-SNARKs这种协议，可以帮助以太坊2.0网络扩容，当被问及以太坊3.0的愿景时，他说“STARKs，STARKs和STARKs”，很明显，zk-SNARKS和zk-STARK这两个协议都具有很大的潜力。

虽然zk-SNARKs已经很成熟并被很广泛的使用，但zk-STARK旨在解决zk-SNARKs先前的许多缺点，可以作为替补和改进版本来使用。 **箴言：** 行情总在绝望中诞生，在半信半疑中成长，在憧憬中成熟，在希望中毁灭。

阿里巴巴的洞穴寓言
---------

1990 年，密码学家 Jean-Jacques Quisquater （以及其他合作者）联合发表了一篇 题为「如何向孩子解释零知识证明协议」的论文。本文介绍了 零知识证明 的概念，其中包含阿里巴巴洞穴的寓言。自创建以来，这个寓言已经被多次改编，我们现在有多种版本。但所表达的内容基本上一致的。

让我们想象有一个环形洞穴，它有一个入口和一个将两条路分开的魔法门。为了打开魔法门，人们需要低声说出正确的秘密。因此，考虑到 Alice （黄色）想要向 Bob （蓝色）证明她知道密码是什么 , 但同时也要对密码保密。为此，Bob 同意在外面等待，同时 Alice 进入洞穴并从两条路径中选择一条走到尽头。在该案例中，她决定通过路径 1。

[2019101615023371769.png](https://appserversrc.8btc.cn/post/2019101615023371769.png)

[appserversrc.8btc.cn](https://appserversrc.8btc.cn/post/2019101615023371769.png)

过了一会儿，鲍勃走到入口处，喊出他希望爱丽丝从哪一边出现（在该案例中应该是路径 2）。

[2019101615024741835.png](https://appserversrc.8btc.cn/post/2019101615024741835.png)

[appserversrc.8btc.cn](https://appserversrc.8btc.cn/post/2019101615024741835.png)

如果 Alice 确实知道这个密码，她将可以正确地按照 Bob 所要求的路径中走出来。

[2019101615030089639.png](https://appserversrc.8btc.cn/post/2019101615030089639.png)

[appserversrc.8btc.cn](https://appserversrc.8btc.cn/post/2019101615030089639.png)

这个过程可以重复多次，以确认 Alice 不是通过运气才选择正确的路径。 阿里巴巴的洞穴寓言说明了零知识证明的概念，它是 zk-SNARK 和 zk-STARK 协议的一部分。 零知识证明可用于证明拥有某些知识并且不会泄露任何有关它的信息。

zk-SNARKs
---------

Zcash 是 zk-SNARKs 的首个广泛应用。虽然像 Monero 这样的隐私项目也采用了环形签名和其他技术 , 通过这些技术也可有效地创建了一个烟幕弹保护发送者 , 而 zk-SNARKs 也从根本上改变了数据的共享方式。 Zcash 的隐私源于这样一个事实，即网络中的交易可以被 加密，但仍然可以通过使用 零知识证明 来验证有效性。因此，那些执行 共识 规则的人不需要知道每个交易的所有数据。值得一提的是，Zcash 中的隐私功能默认情况下是处于不活动状态，是可选的，取决于手动设置。

零知识证明允许一个人向另一个人证明其所陈述的是真实的，且不会泄露超出陈述有效性的任何信息。有关各方通常被称为证明者和验证者，他们所持有的秘密被称为证据。这些功能的主要目的是让双方之间尽可能少的进行数据交换。换句话说，人们可以使用零知识证明来证明他们是知晓某些知识但不会泄露有关知识本身的任何信息。

在 SNARK 首字母缩略词中，首字母「succinct」意味着这些该证明较简单，可以快速验证。 「非交互式」意味着证明者和验证者之间几乎没有交互。较早版本的零知识证明协议通常要求证明者和验证者进行通信，因此被认为是「交互式」零知识证明。但在「非交互式」结构中，证明者和验证者只需交换相关证明。

目前，zk-SNARK 证明依赖于证明者和验证者之间的初始化可信设置，这意味着需要一组公共参数来构建零知识证明，从而构建私有交易。这些参数几乎就像游戏规则，它们通过编程写到协议中，并且是证明交易有效的必要因素之一。然而，这会产生潜在的集中化问题，因为参数通常由非常小的群体制定。

虽然最初的公共设置是如今 zk-SNARK 实施的基础，但研究人员正在努力寻找其他替代方案，以减少交互流程中所需的信任。初始设置阶段对于防止伪造支出非常重要，因为如果某人有权访问生成参数的随机性，他们就可能会创建对验证者有效的假证明。在 Zcash 中，初始设置阶段称为 参数生成过程。

我们再来谈下首字母缩略词的「ARguments」。 zk-SNARK 被认为是可合理计算的，这意味着伪造的证明者成功欺骗系统的可能性非常小。此属性称为健壮性，假设证明者具有有限的计算能力。从理论上讲，具有足够计算能力的证明者可以创建伪造证明，这也是量子计算机被许多人视为可能对 zk-SNARK 和 区块链 系统产生威胁的原因之一。

最后一个首字母是「Knowledge」，这意味着证明者无法在没有实际知识（或证人）支持其陈述的情况下构建证据。

零知识证明可以快速验证，通常比标准 比特币 交易占用的数据少得多。这为 zk-SNARK 技术开辟了一条新道路，使其可用作匿名性和可扩展性解决方案。

zk-STARKs
---------

zk-STARKs 是作为 zk-SNARK 协议的替代版本而创建的，被认为是该技术的更快和更便捷的实现方式。但更重要的是，zk-STARK 不需要进行初始化可信设置（因此，字母「T」代表了透明性）。

从技术上讲，Zk-STARKs 不需要初始化可信设置，因为它们依赖于通过哈希函数碰撞进行更精简的对称 加密 方式。这种方式还消除了 zk-SNARK 的数论假设，这些假设在计算上成本很高，并且理论上容易受到量子计算机的攻击。

Zk-STARK 能够提供更便捷和更快速实现的主要原因之一是因为证明者和验证者之间的通信量相对于计算的任何增量是保持不变的。相反，在 zk-SNARK 中，所需的计算越多，各方须来回发送消息的次数就越多。因此，zk-SNARK 的整体数据量大小远大于 zk-STARK 证明中的数据量。

很明显，zk-SNARKS 和 zk-STARK 都吸引了越来越多的关于匿名性的问题。在 加密货币 领域，这些协议具有巨大的潜力，可能成为一种被广泛使用的开创性途径。

---

*Originally published on [aiko](https://paragraph.com/@aiko-2/zk-snarks-zk-starks)*
