详解 zk-SNARKs 在 Filecoin 网络中的应用
大有IPFS研究院
2023-05-25 20:40
订阅此专栏
收藏此文章
zk-SNARKs 为一方提供了向另一方证明他们知道秘密而不泄露秘密本身的能力,允许与区块链中未知和不受信任的各方进行安全、私密的交互。


撰文: 大有 IPFS 研究院


zk-SNARKs(零知识简洁非交互式知识论证),为一方提供了向另一方证明他们知道秘密而不泄露秘密本身的能力。zk-SNARKs 允许与区块链中未知和不受信任的各方进行安全、私密的交互。


Filecoin 网络目前每天生成 600 - 700 万个 zk-SNARK 证明,每个证明包含超过 1 亿个算术约束。为了实现这一目标,我们 —— 协议实验室改进并大量优化了现有的 snark 生成工具,使其能够扩展以满足我们前所未有的需求。



Filecoin 是迄今为止最大的 zk-SNARK 网络。


几个方面:


  • Filecoin 的可信设置支持高达 2^27 = ~134M 约束的电路。
  • Filecoin 的大型单个电路有> 100M 的限制。
  • 为了满足 Filecoin 的安全要求,一些证明将多达 10 个单独的 zk- snark 捆绑成一个大的证明。
  • Filecoin 还扩展并部署了对 zk-SNARK 聚合的研究,以允许将数千个单独的证明压缩为单个证明。


所有这些都有助于 Filecoin 证明生产中更多信息的能力。


Tau 的力量与建立信任



为了支持 Filecoin 所需的限制数量,我们运行了一个新的 Tau 权力仪式,在 Zcash 运行的仪式上增加了 64 倍的支持数量。这使我们能够生成超过 1 亿个约束的证明,仅受分布的参数大小的限制。


为了支持我们的大型电路的第二阶段 ( 特定电路 ) 可信设置,我们实现了一些技术,以显着减少 RAM 使用,允许并行性,并减少 I/O 开销 - 以便允许使用实用硬件的各方在仪式举行的 7 周内参与。


使用基于 GPU 的证明程序



zk- snark 的生成很快成为瓶颈,因此昂贵的部分是使用 OpenCL 和 CUDA 在 GPU 上实现的。由于支持证明生成的核心操作具有高度并行性,因此我们利用现代通用 GPU 计算将其从 CPU 中卸载。


这允许更高的吞吐量,同时也创造了经济效率。通过将可并行工作转移到相对便宜的并行处理器上,我们可以为用于创建数据挖掘者的高顺序和内存密集型工作保持主内存和 CPU 空闲。


低电平域算法是生成和验证 zk- snark 时执行的大多数操作的基础。blst 库在汇编和 C 语言中实现了关键部分,以从 CPU 中获得最后的性能。为了确保这些优化不会损害安全性,该代码 ( 甚至汇编语言!) 正在由 Galois 进行正式验证。


更强大的批量验证



为了提高多个 zk- snark 的验证速度,实现了批量验证。这是 Zcash 规范附录 B2 中描述的一种技术,但尚未使用。这允许减少需要执行的 Miller 循环 ( 验证过程中最昂贵的操作 ) 的数量,从而在一次查看多个验证时大大减少。


尽管批处理验证有帮助,但我们需要更快的验证,所以我们实现了 SnarkPack。这允许我们将许多 zk- snark 聚合到一个组合证明中。这种优化不仅在规模上将验证时间减少了 10 倍以上,而且还通过减少必须提交给链的每个证明的平均字节数来减少链带宽。



为了实现这一点,我们在内部产品论证的基础上进行了研究,并与作者合作扩展了它,以支持我们的需求,而不需要新的可信设置。我们通过使用两个现有的 power of Tau 可信设置来调整技术以安全地应用,从而实现了这一点。这是一个很好的例子,说明我们在历史上必须克服障碍,以实现突破性的规模。


大有 IPFS 研究院将持续关注围绕 Filecoin 项目的最新消息。


无论您是新手还是资深从业者,大有 IPFS 研究院将为您提供创新的观点和深入的分析。我们秉承开放、包容的精神,欢迎您的加入,共同学习和成长。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

大有IPFS研究院
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开