作者|圣乔治孔斯坦托普洛斯,Paradigm首席技术官,谷歌翻译
内容
为什么引入零知识证明很重要?zkp为什么慢,怎么才能让它们更快?硬件非常重要结论零知识密码学是过去50年来计算机科学领域最显著的创新之一。零知识证明(ZKP)提供了独特的属性,使其成为各种区块链扩展和隐私解决方案的重要组成部分,包括StarkNet这样的ZKP汇总,Aztec这样的私人ZKP汇总以及Mina、Filecoin和Aleo这样的一级连锁。
由于大量昂贵的数学运算,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: L1连锁店,如Aleo、Mina和Zcash,允许交易者使用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友好的格式来表示计算和一些输入输出证明。
根据不同的认证系统,认证生成过程可能不同,但瓶颈总是:
大数向量(域或组元素)的乘法,特别是变基和定基多标量乘法(MSM);或者,快速傅立叶变换(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。在他们的论文中,作者描述了一种通过使用Pippen的算法跳过重复计算来使MSM变得更便宜的方法。他们还描述了一种“展开”FFT的方法,以便可以在没有重大重组的情况下执行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(由于它们的不灵活性和长迭代周期)。