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研究院的公众号,入群后您将获得:
专业团队的独家研究和分析报告
与行业专家进行交流和互动的机会
社群成员分享的宝贵经验和投资策略
加密行业新闻和市场动态的即时更新
大有IPFS研究院
领取专属 10元无门槛券
私享最新 技术干货