# Tau 的力量或：我如何学会停止担心并热爱设置

By [Todoist](https://paragraph.com/@todoist) · 2022-06-05

---

自在 Zerocoin 和 Zerocash 中首次实施以来，零知识证明 (ZKP) 在加密货币的背景下有着特别重要的历史。

[自在Zerocoin](http://zerocoin.org/media/pdf/ZerocoinOakland.pdf) 和 [Zerocash](http://zerocash-project.org/media/pdf/zerocash-extended-20140518.pdf)中首次实施以来，零知识证明 (ZKP) 在加密货币的背景下有着特别重要的历史 。虽然早期的实现针对的是一般隐私，但 ZKP 只是现在才开始被用于许多其他强大的功能，而不仅仅是混淆。例如，zkRollups 在以太坊上实现了更高的交易吞吐量，并且正在使用诸如 Halo 之类的递归证明结构来创建压缩区块链。[Proof-of-Necessary Work](https://eprint.iacr.org/2020/190.pdf)等提议  利用 zkSNARK 的功能在网络的共识层提供安全性，并通过 Zexe 等结构，ZKP 支持链下计算甚至全新的编程模型。

零知识证明通常被称为单体，但重要的是要记住有许多不同类型的 ZKP。严格来说，ZKP 方案是一种提供“零知识”属性的方案，其中证明的验证者对被证明的陈述背后的事实一无所知。ZKP 可以是交互式的，验证者直接与证明者交互，也可以是非交互式的，证明者可以独立生成证明。有几类满足该标准的非交互式 ZKP，包括：

1.  非交互式零知识论证 (NIZK)
    
2.  简洁的非交互式零知识论证（SNARG）
    
3.  简洁的非交互式零知识知识论证（SNARK 或有时是 zkSNARK）
    

zkSNARK 因其简洁和高效而与加密货币最相关。第一个用于生产的 SNARK 是基于最初在 Zcash 中使用的 Pinocchio。后来，Zcash 和其他几个项目采用了 Jens Groth 在他 [2016 年的论文](https://eprint.iacr.org/2016/260.pdf) （现在通俗地称为“Groth16”）中描述的 zkSNARK。

尽管 zkSNARK 很受欢迎，但它有两个主要缺点。

*   首先，非通用的 zkSNARK（例如 Groth16）特定于给定的 NP 关系。换句话说，证明是特定于固定程序的，限制了方案的灵活性。
    
*   其次，生成和验证任何 zkSNARK 证明都需要预先生成一个公共参考字符串（CRS）。这个过程可以被认为是创建一个只有系统“知道”的秘密，任何知道 CRS 是如何生成的人都可以伪造证明，从而破坏完整性。
    

[关于通用 SNARK（例如Marlin](https://eprint.iacr.org/2019/1047.pdf)、  [PLONK](https://eprint.iacr.org/2019/953.pdf)等）的学术研究在 很大程度上解决了第一个问题。但即使这些仍然需要 CRS。_有零知识证明结构_ 不需要 CRS，例如 STARKs（可扩展的透明知识论证） 和 [Bulletproofs](https://eprint.iacr.org/2017/1066.pdf)。然而，虽然 STARK 和 Bulletproofs 都有很好的应用，但从证明大小和验证速度的角度来看，zkSNARK（尤其是像 Groth16 这样的非通用 SNARK）是无与伦比的。对加密货币特别感兴趣的是，zkSNARKs 的验证是恒定时间的。这意味着无论被证明的语句的大小如何，验证者为检查证明而必须做的工作量保持不变。

由于这个事实，zkSNARKs 仍然是许多面向隐私的区块链应用程序的首选工具。但这些系统的安全性很大程度上归结为 CRS 生成的安全性。因此，在所谓的“设置仪式”中安全地生成 CRS 的方法将继续具有相关性。当然，以可信、集中的方式生成这些参数是可能的，但与去中心化的目标不相容。到目前为止，zkSNARK 设置仪式中使用的首选技术是多方计算（MPC）。

MPC 方案试图确保没有任何一方生成或能够获得 CRS 的基础数学结构的知识。他们通过要求尽可能多的独立参与者共享生成过程来实现这一点，这样只有一小部分人（甚至一个人）需要诚实行事，以确保设置安全。2015 年，Eli Ben-Sasson、Alessandro Chiesa、Matthew Green、Eran Tromer 和 Madars Virza 提出了一种改进的 MPC 结构，用于生成安全参数，即使除了一个参与者之外的所有参与者都已损坏。Zcash 使用此方案为 ZCash 的第一个版本“Sprout”生成 CRS。这篇 [文章](https://electriccoin.co/blog/the-design-of-the-ceremony/)中描述了这个仪式， 并在一 [集中进行了介绍](https://www.wnycstudios.org/podcasts/radiolab/articles/ceremony) 美国国家公共广播节目Radiolab。尽管它很新颖，但参加仪式很麻烦，并且仅限于可以信任的专家来正确执行。此外，由于参与有限，人们普遍认为所需的信任程度仍然太高，与建立 zkSNARK 旨在保护的去中心化系统的理想相矛盾。

从那时起，设立仪式的目标一直是最大限度地增加可以参与该计划的诚实、独立参与者的数量。因为如果有很多独立的参与者，那么，直觉上，所有人都不诚实的可能性被降低到可以忽略不计的程度。因此，技术创新旨在提高这些仪式的能力，以支持尽可能多的参与者。

上述早期方案的一个问题是必须事先知道参与者的数量。在 2017 年的 MMORPG 论文中，Sean Bowe、Ariel Gabizon 和 Ian Miers 描述了 Groth16 设置的 MPC 仪式的变体，其中包括两个阶段。第一个我们现在称为“Tau 的力量”，它是给定大小的所有电路的通用设置。第二个将 Powers of Tau 阶段的输出转换为特定于关系的 CRS。在该方案中，协调器用于管理参与者之间的消息。这扩展了流程，使其理论上能够支持数百甚至数千名参与者。尽管存在协调器，但 MPC 的输出仍然可以独立验证，从而保持安全性。自论文最初发表以来，Tau 仪式的权力已成为行业标准。项目如 [Filecoin](https://filecoin.io/blog/posts/participate-in-our-trusted-setup-ceremony/)、以太坊（[Semaphore](https://github.com/appliedzkp/semaphore)）和 Zcash（“Sapling”）都使用它为其系统生成 CRS。图 1（下）直观地描绘了 Tau 仪式的力量。

**图 1 — Tau 的力量 — MMORPG 变体**

尽管它相对受欢迎，但 MMORPG 的一个缺点是设置仍然是一个串行过程。更具体地说，MPC 仪式的个人参与者一次只能参加一个。由于 CRS 与电路的大小成线性比例，个人贡献可能需要很长时间，因此，设置仪式不太可能吸引参与者。最近，以太坊基金会的贾斯汀德雷克提出了一个被称为“乐观流水线”的方案。关键的见解是，贡献可以同时应用于 CRS 的不同部分，使参与者能够同时为 MMORPG 仪式做出贡献。因此，参与者不必等待轮到他们，而是可以同时为给定的一轮做出贡献。我们将使用这种方法的设置描述为“乐观设置”。Celo 最近的成立仪式 [Plumo](https://celo.org/plumo) 使用了这个方案，Aleo 即将举行的设置仪式也使用了它。

除了纯粹的去中心化和安全问题之外，团队越来越多地将这些仪式视为自己的产品。例如， [Tornado.cash](https://ceremony.tornado.cash/) 举办了一个设置仪式，使用户能够直接从 Web 浏览器中进行贡献，从而创造了破纪录的 1114 名参与者。Tornado 设置的成功表明，与以前被视为必要的邪恶的仪式相比，将用户体验放在首位和中心的现代设置仪式不仅鼓励更多的贡献，而且可以被视为本身的产品.

这些仪式的运作正变得更加精简。最初的 MMORPG 计划使用一个中央“协调器”来管理与参与者之间的消息，并组装成绩单。从历史上看，这个角色是手动执行的。但最近，团队已经投资于自动化这个过程（再次参见 Celo 的 Plumo [仪式](https://celo.org/plumo) 和 Kobi Gurkan 的[Espero](https://www.youtube.com/watch?v=LKbDNc-LrA4) 演讲）。从人力资源的角度来看，这不仅不那么密集，而且还使仪式更加安全，因为它减少了出错的机会。有关乐观设置如何工作的说明，请参见图 2（下图）。

**图 2 — 乐观设置模式下的 MMORPG**

尽管许多人认为生成 CRS 的要求是 zkSNARKs 的一个关键缺陷，但目前与其他 ZKP 方案相比，它们的效率优势无法逃脱。这就是为什么它们仍然是行业标准，以及为什么如此多的团队和研究人员已经将这些仪式发展和改进到我们今天的位置。由于协议效率的提高、更好的用户体验和协调员等任务的自动化，参加设置仪式比以往任何时候都容易，最近仪式的参与者人数反映了这一点。原来的 Zcash 仪式只有 6 名参与者，而现代仪式能够支持更多的人。由于 CRS 的安全只需要一个诚实的参与者，所以更多的参与者通常等于更高的安全性，

的确，即使是通过仪式生成的 CRS，安全性的断言也不能数学化。然而，许多密码系统都基于一些抽象的假设。例如，我们确信 SHA-256 是一种抗碰撞哈希函数，因为还没有人发现碰撞 \*\*，\*\*而不是因为任何数学证明（事实上，在数学上我们可以证明相反的情况：碰撞必须存在）。但是 SHA256 被如此广泛地使用是因为碰撞的几率被认为是天文数字般的低，以至于不值得深思。

类似地，试图确定一个个体参与者在设置仪式中诚实行事的平均概率是具有挑战性的（阅读：不可能），以便在数学上证明生成的系统是安全的。然而，随着参与者数量的增加，即使与广泛使用的密码方案相关的可能性以及对参与者的极端悲观假设相比，这些可能性也会变得非常小。实际上，参与者的数量类似于安全参数ƛ，在密码学理论中用作可调参数，为不同的值ƛ提供不同的安全“级别”。

使设置仪式更高效的创新反映在 ZKP 研究的惊人步伐中。计划变得更加高效，使应用变得实用，鼓励进一步的创新和发展。这导致 ZKP 出现类似摩尔定律的改进曲线。现在甚至还有所谓的“透明”zkSNARK（例如 [Fractal](https://eprint.iacr.org/2019/1076.pdf) 和 [SuperSonic](https://eprint.iacr.org/2019/1229)) 消除了对受信任设置的要求。尽管有这些创新，Groth16 等现有 zkSNARK 的效率意味着它们可能会在未来几年继续应用。因此，设置仪式可以为社区协作庆祝和正在实施它们的项目提供机会。所以它们代表了一个拥抱的机会，而不是一个必须克服的邪恶。

参考
==

*   ZeroCash —  [https://ieeexplore.ieee.org/document/6956581](https://ieeexplore.ieee.org/document/6956581)
    
*   Groth16 —  [https://eprint.iacr.org/2016/260.pdf](https://eprint.iacr.org/2016/260.pdf)
    
*   Zcash 成立仪式 —  [https://electriccoin.co/blog/the-design-of-the-ceremony/](https://electriccoin.co/blog/the-design-of-the-ceremony/)
    
*   Zcash 设置 (Radiolab) —  [https://www.wnycstudios.org/podcasts/radiolab/articles/ceremony](https://www.wnycstudios.org/podcasts/radiolab/articles/ceremony)
    
*   CRS 的原始 MPC 提案 —  [http://www.ieee-security.org/TC/SP2015/papers-archived/6949a287.pdf](http://www.ieee-security.org/TC/SP2015/papers-archived/6949a287.pdf)
    
*   第二个 MPC 提案 —  [https://eprint.iacr.org/2017/602.pdf](https://eprint.iacr.org/2017/602.pdf)
    
*   MMORPG —  [https://eprint.iacr.org/2017/1050.pdf](https://eprint.iacr.org/2017/1050.pdf)
    
*   乐观流水线 —  [https://ethresear.ch/t/accelerating-powers-of-tau-ceremonies-with-optimistic-pipelining/6870](https://ethresear.ch/t/accelerating-powers-of-tau-ceremonies-with-optimistic-pipelining/6870)

---

*Originally published on [Todoist](https://paragraph.com/@todoist/tau)*
