零知识证明的硬件加速

在这里插入图片描述
作者 | paradigm首席技术官Georgios Konstantopoulos,google翻译

内容

  1. 介绍
  2. 为什么零知识证明很重要?
  3. 为什么 ZKP 很慢,我们如何让它们变快?
  4. 硬件很重要
  5. ​结论

介绍
零知识密码学是过去 50 年计算机科学中最显着的创新之一。零知识证明 (ZKP) 提供了独特的属性,使其成为各种区块链扩展和隐私解决方案的重要组成部分,包括像StarkNet这样的 ZK rollup、像Aztec这样的私有 ZK rollup 以及像Mina、Filecoin和Aleo这样的第 1 层链。

由于大量昂贵的数学运算,ZKP 的生产速度慢且成本高。但是,通过使用现场可编程门阵列 (FPGA) 和专用集成电路 (ASIC) 等专用硬件,它们可以加速 10-1000 倍。

随着用户寻求更具表现力、高性能和私密性的计算,使用 ZKP 证明的语句的复杂性将会增加。这将导致证明生成速度变慢,需要使用专门的硬件才能及时生成证明。

与比特币矿工类似,硬件运营商的工作需要得到补偿。最终,一个完整的 ZK 采矿和证明行业将出现,首先是爱好者在他们的 CPU 中生成证明,然后是 GPU,然后是 FPGA。与比特币相比,我们预计 ASIC 可能需要很长时间才能被采用(如果有的话)。

为什么零知识证明很重要?
零知识证明有两个主要用例。

外包可验证计算

假设由于您使用的平台(例如您的笔记本电脑、Raspberry Pi 甚至是以太坊)的限制,您有一些昂贵或不可能运行的计算。

您必须在第三方服务上运行计算,而不是在您的平台上运行计算,该服务可以快速、廉价地向您返回计算的输出(例如 AWS Lambda 函数,或像 Chainlink 这样的预言机服务)。

通常,您需要相信计算已正确执行,从而允许提供者输出无效结果,并可能带来灾难性后果。

ZKP 允许第三方提供商也输出计算完整性证明,以保证您收到的输出是正确的。

私人计算

如果您的计算在本地运行并不昂贵,但您想隐藏其中的一部分怎么办?例如,如果我想告诉你我知道第 1000 个斐波那契数而不告诉你数字,或者想说服你我在不透露金额或我的身份的情况下发送了付款怎么办?

ZKP 允许您有选择地隐藏计算语句周围的部分或全部输入。

上述两个用例都以多种形式(除其他外)在加密行业中体现出来:

 第 2 层扩展:使用 ZKP 的可验证计算允许 L1 将事务处理外包给链下高性能系统(也称为第 2 层)。这可以在不影响安全性的情况下实现区块链扩展。例如,StarkWare正在构建一个可扩展的智能合约平台StarkNet,它使用运行 ZK 友好代码的专用虚拟机。Aztec还允许他们的第 2 层程序私下运行,而不会泄露有关用户交易的任何信息。

 私有 L1: Aleo、Mina 和 Zcash 等 L1 链允许交易者使用 ZKP 隐藏发送者、接收者或金额,默认情况下 (Aleo) 或作为选择加入 (Mina 和 Zcash)。

 去中心化存储: Filecoin使用 ZKP(在 GPU 上运行)来证明网络中的节点正确存储数据。

区块链压缩: Mina 和 Celo 使用 ZKP 将同步到链上最新状态所需的区块链数据压缩成一个小证明。

鉴于上述情况,可以肯定地说,随着加密货币采用率的增加,将需要 ZKP 来满足用户对性能和隐私以及新型应用程序和协议日益增长的需求。

ZKP 从根本上允许可扩展的私人支付和智能合约平台蓬勃发展,但引入了非平凡的开销,这在历史上阻碍了它们的采用。

为什么 ZKP 很慢,我们如何让它们变快?
证明计算需要首先将其从经典程序转换为 ZK 友好格式。这可以通过手动重写代码以使用像Arkworks这样的低级库来完成,或者通过使用像Cairo或Circom这样编译成必要的原语来生成证明的领域特定语言来完成。

更昂贵和更复杂的操作会导致更长的证明生成时间。某些操作对 ZK 不友好也很常见(例如,SHA 或 Keccak 中使用的按位操作),导致在经典计算机上可能是廉价操作的证明生成时间较长。

一旦您的计算采用 ZK 友好的形式,您就可以选择一些输入并将其发送到证明系统。有许多证明系统,一些以他们论文的作者命名(例如Groth16、GM17),而另一些则以更有创意的名称命名(PLONK、Spartan、STARK)。它们的共同点是,它们采用 ZK 友好格式表示的计算以及一些输入并输出证明。

根据证明系统的不同,证明生成过程可能会有所不同,但瓶颈始终是:

1、对大型数字向量(字段或组元素)的乘法,特别是可变基数和固定基数多标量乘法(MSM);或者,

2、快速傅里叶变换(FFT)和逆 FFT(尽管有 用于无 FFT 证明系统的 技术)。

在同时存在 FFT 和 MSM 的系统中,大约 70% 的时间生成证明花费在 MSM 上,其余时间则由 FFT 主导。

MSM 和 FFT 都很慢,但都有提高性能的方法:

MSM 具有令人尴尬的并行性,可以通过在多个线程上运行它们来加速。然而,即使在数百个内核上,如果每个元素向量是 2 25长(即 3300 万个元素,对于像zkEVM这样的应用程序来说,这是一个保守的复杂度),那么乘法最终仍然会花费大量时间。这意味着经常重复相同的操作,并且会耗尽设备上的大部分可用内存。简而言之,MSM 需要大量内存并且即使在高度并行化时仍然很慢。

FFT 严重依赖算法运行时数据的频繁洗牌。这使得它们很难通过跨计算集群分配负载来加速,如DIZK所示。此外,它们在硬件上运行时需要大量带宽。改组意味着您需要“随机”加载和卸载元素,例如,具有 16GB 或更少内存的硬件芯片上的 >100GB 数据集。虽然硬件上的操作非常快,但通过网络加载和卸载数据的时间最终会显着减慢操作速度。

简而言之:

MSM 具有可预测的内存访问,允许大量并行化,但由于所需的原始计算量和内存量,它们的成本仍然很高。

FFT 具有随机内存访问,这使得它们对硬件不友好,而且自然难以在分布式基础设施上运行。

在解决大型 MSM 和 FFT 的缓慢问题方面,我们看到的最有希望的工作是 PipeZK。在他们的论文中,作者描述了一种使用Pippenger 算法跳过重复计算来使 MSM 更便宜的方法。他们还描述了一种“展开”FFT 的方法,这样它们就可以在没有显着改组的情况下执行,由于现在可预测的内存访问模式,这可以提高硬件的速度。

假设上述方法解决了每种算法的基本瓶颈,那么问题就变成了:使用高度优化的 MSM 和 FFT 算法来加速 ZKP 生成的最佳硬件是什么?

硬件很重要
上述加速技术可以在多种硬件技术上实现:GPU、FPGA 或 ASIC。但是哪一个是最好的选择?

要回答这个问题,我们首先必须承认 ZKP 仍处于早期发展阶段。系统参数(例如 FFT 宽度或元素的位大小)或证明系统的选择仍然很少有标准化。

由于这些因素,FPGA 有两个核心特性使其在 ZK 环境中优于 ASIC:

“多次写入”与“一次写入”:ASIC 上的业务逻辑是一次写入。如果任何 ZKP 逻辑发生变化,您需要从头开始。FPGA 可以在 1 秒内重新刷新任意次数,这意味着它们可以在具有不兼容证明系统的多个链上重复使用相同的硬件(例如,因为他们想要跨链提取 MEV),并灵活地适应 ZK “元”的变化。

更健康的供应链: ASIC 设计、制造和部署通常需要 12 到 18 个月或更长时间。相反,FPGA 供应链是健康的,Xilinx等领先供应商允许从网站(即没有任何联系点)在16 周内到达的大量零售订单。这允许以 FPGA 为中心的运营对其产品有更紧密的反馈循环,并通过购买和部署更多 FPGA 来扩大其运营。

我们还期望 FPGA 的性能优于 GPU,原因与它们在机器学习和计算机视觉领域蓬勃发展的原因类似:

硬件成本:一流的 FPGA(领先的工艺节点、时钟速度、能源效率和内存带宽)比一流的 GPU 便宜约 3 倍。全球对 GPU 的需求进一步加剧了这一问题。

电源效率: FPGA的能效比 GPU 高10 倍以上,其中一个重要原因是需要将 GPU 连接到主机设备,这通常会消耗大量电力。

鉴于上述情况,我们预计市场上的赢家将是专注于 FPGA 而非 ASIC 或 GPU 的公司。然而,如果只有一个或几个 ZK L1 或 L2 最终实现了主导规模,并且 ZK 证明系统稳定在单个实现附近,那么 ASIC 胜过 FPGA 的可能性可能会更高。但是,如果这种情况真的发生的话,我们可能还需要几年的时间。

结论
2021 年,比特币矿工净收入超过150 亿美元,以太坊矿工刚刚超过 170 亿美元。零知识证明最终成为网络上计算完整性和隐私的事实上的媒介是合理的。在这种情况下,零知识矿工/证明人的机会可能与工作量证明采矿市场的规模相似。

ZKP 很慢,需要硬件加速才能在复杂的计算中变得可行。我们认为,对 ZK 硬件加速最重要的技术是 FPGA,而不是 GPU(由于成本和能源效率)或 ASIC(由于它们的不灵活性和长迭代周期)。

查看原文

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值