零知识密码学是过去 50 年计算机科学中最显着的创新之一。零知识证明 (ZKP) 提供了独特的属性,使其成为各种区块链扩展和隐私解决方案的重要组成部分,包括像StarkNet这样的 ZK rollup、像Aztec这样的私有 ZK rollup 以及像Mina、Filecoin和Aleo这样的第 1 层链。
由于大量昂贵的数学运算,ZKP 的生产速度慢且成本高。但是,通过使用现场可编程门阵列 (FPGA) 和专用集成电路 (ASIC) 等专用硬件,它们可以加速 10-1000 倍。
随着用户寻求更具表现力、性能和私密性的计算,使用 ZKP 证明的语句的复杂性将会增加。这将导致证明生成速度变慢,需要使用专门的硬件才能及时生成证明。
与比特币矿工类似,硬件运营商的工作需要得到补偿。最终,一个完整的零知识挖掘和证明行业将会显现,首先是爱好者在他们的 CPU 中生成证明,然后是 GPU,然后是 FPGA。与比特币相比,我们预计 ASIC 可能需要很长时间才能被采用(如果有的话)。
可验证外包计算
假设由于使用的平台(例如笔记本电脑、树莓派,甚至是以太坊)存在的限制,计算变得非常昂贵或无法运行。
那么用户必须在第三方服务上运行计算,而不是通过自己的平台,这种第三方服务可以快速、廉价地返回计算输出(例如 AWS Lambda 函数,或类似 Chainlink 的预言机服务)。
通常情况下,用户需要信任计算已正确执行,而允许提供者输出无效结果,可能会带来灾难性的后果。
ZKP 允许第三方提供商也输出计算完整性的证明,以保证用户收到的输出是正确的。
隐私计算
如果有一种在本地运行成本不高的计算,但想隐藏其中的一部分,那该怎么办?比方说,如果我想告诉你我知道第 1000 个斐波那契数,而不告诉你这个数,或者要说服你,我在没有透露金额或身份的情况下支付了款项,那该怎么办?
ZKP 允许用户有选择地隐藏计算语句周围的部分或全部输入。
上述两种用例都以多种形式在加密行业中得到了体现:
Layer 2 扩容:ZKP 的可验证计算,允许 L1 将交易处理外包给链外高性能系统(也称为 Layer 2)。这使得区块链可以在不损害安全性的情况下进行扩容。例如,StarkWare 正在使用运行 ZK 友好代码的专用虚拟机构建一个可扩展的智能合约平台 StarkNet。Aztec 还允许他们的 Layer 2 程序私下运行,而不会泄露有关用户交易的任何信息。
隐私 L1:Aleo、Mina 和 Zcash 等 L1 公链允许交易者使用 ZKP 隐藏发送者、接收者或金额(其中 Aleo 是默认使用 ZKP,而 Mina 和 Zcash 是可选使用)。
去中心化存储:Filecoin 使用 ZKP(在 GPU 上运行)来证明网络中的节点正确存储数据。
区块链压缩:Mina 和 Celo 使用 ZKP 将同步到链上最新状态所需的区块链数据压缩成一个小证明。
鉴于上述情况,可以肯定地说,随着加密资产采用率的增加,我们将需要 ZKP,以适应用户对性能和隐私以及新型应用程序和协议日益增长的需求。
ZKP 从根本上允许可扩展的私人支付和智能合约平台蓬勃发展,但也带来了巨大的开销,这在历史上阻碍了它们的采用。
证明计算需要首先将其从经典程序转换为 ZK 友好格式。这可以通过手动重写代码以使用 Arkworks 之类的低级库来实现,也可以通过使用 Cairo 或 Circom 之类的域特定语言来编译成必要的原语来生成证明。
而更昂贵和更复杂的操作会导致更长的证明生成时间。一些操作对 ZK 不友好(例如 SHA 或 Keccak 中使用的逐位操作)也很常见,这导致在经典计算机上可能是廉价操作的证明生成时间很长。
一旦您的计算采用 ZK 友好的形式,你就可以选择一些输入并将其发送到证明系统。目前已经有很多证明系统,一些以论文作者的名字命名(例如 Groth16、GM17),另一些则以更具创造性的名字命名(PLONK、Spartan、STARK)。它们的共同点是,它们接受一个以 ZK 友好格式表示的计算,以及一些输入,并输出一个证明。
根据证明系统的不同,证明生成过程可能会有所不同,但瓶颈始终是:
对大型数字向量(字段或组元素)的乘法,特别是可变基数和固定基数多标量乘法(MSM);或
快速傅里叶变换(FFT)和逆快速傅里叶变换(IFFT)(尽管有一些技术适用于无 FFT 证明系统);
在同时存在 FFT 和 MSM 的系统中,大约 70% 的生成证明时间都花在 MSM 上,而其余时间则由 FFT 主导。
MSM 和 FFT 都很慢,但也都有提高性能的方法:
MSM 可以通过在多个线程上运行它们来进行加速。然而,即使在数百个内核上,如果每个元素向量的长度为 2^25(即 3300 万个元素,对于像 zkEVM 这样的应用程序来说,这是一个保守的复杂度范围),那么乘法最终仍然会花费大量时间。这意味着经常重复相同的操作,并且会耗尽设备上的大部分可用内存。简而言之,MSM 需要大量内存,并且即使在高度并行化时仍然会很慢。
FFT 严重依赖算法运行时数据的频繁洗牌。这使得它们很难通过在计算集群中分配负载来实现加速,正如 DIZK 所示。此外,它们在硬件上运行时需要大量带宽。重组意味着你需要“随机”加载和卸载元素,例如,在内存等于或少于 16 GB 的硬件芯片上,从大于 100 GB 的数据集中加载和卸载元素。虽然硬件上的操作非常快,但通过网络加载和卸载数据的时间最终会显着减慢操作速度。
简言之:
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“meta”的变化。
更健康的供应链:ASIC 从设计、制造到部署,通常需要 12 到 18 个月或更长的时间。相比之下,FPGA 供应链是健康的,像Xilinx 等领先供应商允许在 16 周内从网站(即没有任何联系点)获得大量零售订单。这允许以 FPGA 为中心的运营商在其产品上有一个更紧密的反馈循环,并通过购买和部署更多 FPGA 来扩大运营规模。
我们还预计 FPGA 的性能将优于 GPU,原因与它们在机器学习和计算机视觉领域蓬勃发展的原因类似:
1、硬件成本:一流的 FPGA(领先的处理节点、时钟速度、能效和内存带宽)比一流的 GPU 便宜约 3 倍。此外,全球对 GPU 的需求进一步加剧了这一问题。
2、能效:FPGA 的能效比 GPU 高 10 倍以上,其中一个重要原因是需要将 GPU 连接到主机设备,这通常会消耗大量电力。
鉴于上述情况,我们预计市场上的赢家将是专注于 FPGA 而非 ASIC 或 GPU 的公司。然而,如果只有一个或几个 ZK L1 或 L2 项目最终主导了市场,并且 ZK 证明系统稳定在单一实现上,那么 ASIC 胜过 FPGA 的可能性可能会更高。但这种情况要真的发生,我们可能还需要等待几年的时间。
2021 年,比特币矿工的净收入超过 150 亿美元,以太坊矿工则刚刚超过 170 亿美元。零知识证明最终成为网络计算完整性和隐私的事实媒介,这似乎是合理的。在这种情况下,零知识矿工/证明人的机会可能与工作量证明挖矿市场的规模相似。
ZKP 很慢,其需要硬件加速才能在复杂的计算中变得可行。我们认为,对 ZK 硬件加速最重要的技术是 FPGA,而不是 GPU(由于成本和能源效率)或 ASIC(由于它们不灵活以及长迭代周期)。