介绍 ICICLE:用于零知识加速的开源 GPU 库
作者:互联网
Web3 的基础建立在去中心化计算之上,因此为 ZK 提供了一个独特的设置,以开创一个去信任和隐私保护服务和基础设施的时代。大多数基于 ZK 构建的 Web3 协议和应用程序的“首选武器”是 ZK-SNARKs 协议家族。SNARKs的一个已知权衡是,我们得到了一个小的证明和一个快速的验证者,代价是资源匮乏的证明者。
进入硬件加速
就像历史上早期改变游戏规则的技术一样,大规模采用和扩展的道路是通过硬件来实现的。SNARK 存在于大型有限字段的领域,这些字段在 CPU 中不受本机支持。数学原语,如多标量乘法(MSM)和多项式算术,支配着SNARK证明者的时间和内存消耗,可以从并行性和专用算法中受益。如今,ZK 原语的硬件加速是一个令人兴奋且不断增长的领域——ZK 协议和密码学的设计空间正在转向硬件友好的思维方式。
GPU 和 ZK
在ZK ASIC变得可行之前,还有很长的路要走。我们将在以后的一篇文章中专门讨论我们的 ZPU 和 ASIC 路线图。
如果我们今天想要 ZK 硬件,我们有 FPGA 或 GPU 可供我们使用。此时,GPU 几乎可以被视为商品硬件;由于它们在图形和人工智能方面的成功,它们随处可见,而且相对便宜。但是,GPU的最大卖点是软件。我们特别讨论了 CUDA,它可以轻松编写在 Nvidia GPU 上运行的代码,利用其高度并行的架构。再加上这些设备的广泛可用性,如果我们可以让 GPU 在 ZK 工作负载上工作,那么我们就朝着可访问和高效的 ZK 证明器迈出了一大步。
之禾简介
在Ingonyama,我们从第一天起就一直在试验GPU。其中一些实验是富有成效的,并已在实践中部署和使用。一个例子是最近激励的 Aleo 测试网,我们在 zksync 团队的大力帮助下,使用 CUDA 实现了整个证明者代码。这个证明者负责大约 50% 的网络哈希算力,跨越数十万个 GPU,包括旧的以太坊矿工。
今天,我们发布了ICICLE,这是一个新的基于CUDA的GPU库,以支持Aleo等应用程序的ZK加速。作为示例应用程序,我们还介绍了“Fast Danksharding”,这是我们对 Danksharding Builder 的 Rust 实现。有关我们的 Danksharding 代码以及如何使用它的更多详细信息,请参阅我们的配套博客文章。
我们的目标是促进 ZK 的采用,并使 GPU 成为 ZK 应用程序的标准硬件。我们编写ICICLE时遵循以下设计原则:
- 卓越的开发体验:我们实现了 Rust 包装器,并与现有的更高级别 ZK 库基元表示兼容,例如 arkworks
- 多场支持:我们支持在场和椭圆曲线之间轻松切换,反映了我们行业的现状,该行业仍然分散在不同的主要领域
- 干净的代码: 我们致力于维护代码并根据社区需求添加功能。我们希望接受任何形式和形式的捐款。为此,我们确保ICICLE的可读性和可访问性。
- 性能:这是我们开始使用GPU的果汁和原因。好消息是,该库在这个初始版本上非常快。更好的消息是,我们有大量的优化:)