声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。
边肖:记得要集中注意力。
来源:范式
原标题:范式:零知识被证明重要但低效。如何通过硬件来加速?
由范式的研究伙伴圣乔治孔斯坦托普洛斯撰写。
编译:琥珀
简介
零知识密码学是近50年来计算机科学领域最引人注目的创新之一。零知识证明(以下简称ZKPs)的一系列“先天优势”使其成为各种区块链扩展和隐私解决方案的重要组成部分,包括StarkNet这样的ZK易拉宝,Aztec这样的隐私ZK易拉宝,以及Mina、Filecoin、Aleo这样的一层公共链等,都应用了这项技术。
虽然由于数学计算的巨大需求,ZKPs的制作速度慢且昂贵。但是,随着以现场可编程阵列(以下简称FPGA)和专用集成电路(以下简称ASIC)为代表的专用硬件的普及和落地,ZKPs的效率将会大大提高,提高幅度甚至可能达到1000倍之多。
随着个性化、高性能隐私计算需求的不断增加,ZKPs证明的语句复杂度将进一步增加。因此,我们只能使用特殊的硬件来避免证明生成速度的进一步下降,以便更及时地生成证明结果。
这意味着这条“产业链”将迎来变革,就像那些服务于比特币网络的矿工一样,这些特殊的硬件操作者将获得相应的报酬,以支持ZKPs的高效运转,一个完整的ZK开采和认证行业将会出现。业余爱好者可以在自己的CPU上生成样张,也可以使用GPU和FPGA。当然,这个完整链条的成熟还需要相当一段时间的演变。
为什么零知识证明很重要?
零知识证明有两个主要用例:
1、外包可验证计算
假设你有一些计算需求,由于你使用的平台(比如你的笔记本电脑、树莓派甚至以太坊)的限制,完成这些计算的时间和成本过于昂贵,甚至因计算能力不足而无法实现。此时,您必须依靠第三方服务来运行计算。一般来说,这些服务可以快速廉价地将计算的输出返回给你(比如AWS的Lambda函数或者像Chainlink这样的Oracle服务)。
但一般情况下,你只能假设计算已经正确执行,一旦计算提供者输出不正确或无效的计算结果,就可能造成灾难性的后果。
ZKPs的价值在于它允许第三方提供者输出一个计算完整性的证书,从而保证你得到的输出是正确的。
2.隐私计算
如果您有一个计算需求,在本地运行并不昂贵,但您想隐藏其中的一部分,该怎么办?比如我想让你知道我知道第1000个斐波那契数,但我不告诉你这个数,或者让你相信我付了一笔钱,但我不向你透露金额或者我的身份,怎么办?
ZKPs允许您有选择地隐藏与计算语句相关的部分或全部输入。
上述两个用例已经以多种形式体现在加密货币行业的各个方面。
两层扩展:可验证计算和ZKPs允许一层公共链将事务处理外包给链外高性能系统(也称为两层)。这使得区块链可以在不影响安全的情况下扩张。例如,StarkWare正在构建一个可扩展的智能合同平台StarkNet,在这个平台上,一个特殊用途的虚拟机被用来运行对ZK友好的代码。Aztec的二层应用支持私有操作,不会泄露用户交易的任何信息。隐私公链:Aleo、Mina、Zcash等一层公链允许交易者使用ZKPs隐藏发送者、接收者或金额等信息,可以默认(Aleo)也可以选择加入(Mina、Zcash)。分散存储:Filecoin使用ZKPs(运行在GPU上)来证明网络中的节点正确存储数据。区块链压缩:Mina和Celo使用ZKPs将同步到链最新状态所需的区块链数据压缩到一个小证明中。针对上述情况,可以说随着加密货币采用率的提高,ZKPs的市场需求也将同步增长,以满足用户对性能和隐私日益增长的需求。
ZKPs从根本上为可扩展的私人支付和智能合约平台的加速发展提供了可能性,但其高昂的计算成本在一定程度上限制了其大规模采用的进程。
ZKPs为什么慢?我们怎样才能让它更快?
为了证明基于ZKPs的计算,我们首先需要将它从经典描述“翻译”成ZK友好的格式。这可以通过手动重写代码来使用Arkworks这样的低级库,或者使用Cairo或Circom这样的专用语言将其编译成原语来生成证明。
更昂贵和复杂的操作将导致证书的生成时间更长。此外,一些对不友好的行动(如沙等。)也会导致普通电脑上的证书生成时间非常长,这种情况经常发生。
一旦您的计算变得对ZK友好,您就可以选择一些输入,并将它们发送到验证系统。比如以论文作者命名的Groth16、GM17,或者更有创意的名字PLONK、Spartan、STARK。这些证明系统都接受以ZK友好格式表示的计算。根据不同的证明体系,证明的生成过程可能不同,但瓶颈实际上是共同存在的,即:
大数向量的乘法,特别是可变基和固定基的多尺度乘法(以下简称MSM);或者快速傅立叶变换(以下简称FFT)和逆FFT(虽然有技术证明系统有无FFT)。在同时具有FFT和MSM的系统中,大约70%的生成证明的时间将花费在MSM上,其余的时间将花费在FTT计算上。MSM和FFT都很慢,但优化也不是不可能。先看问题:
对于MSM来说,可以通过多线程运行来加速。然而,即使在数百个核上,如果每个元素向量达到2的25次方(即3300万个元素,这是对zkEVM这样的应用程序的保守复杂度估计),乘法仍然需要大量时间。这可能会导致设备“内存爆炸”。简而言之,MSM需要大量的内存,即使在多线程的情况下也仍然很慢。FFT很大程度上依赖于算法运行时数据的频繁重组。这使得他们很难通过在计算集群中有效地分配负载来加速,这在硬件上运行时需要大量的带宽。重组意味着你需要“随机地”加载和卸载一些数据,例如,在16GB或更少内存的硬件芯片上加载100GB的数据集。虽然硬件上的运算速度很快,但是通过接口加载和卸载数据的时间会大大减慢运算速度。简单来说:
MSM的内存访问需求是可预测的,可以实现大量的并行化,但由于原始计算和内存需求巨大,其成本仍然很高。FFT的内存访问是随机的,对硬件不友好,在分布式基础设施上自然难以运行。PipeZK是我们看到的解决大型MSM和FFT速度慢的最有前途的工作。在他们的论文中,作者描述了一种通过使用Pippenger算法跳过重复计算来提高MSM效率的方法。他们还描述了一种“展开”的FFT方法,使得计算不需要大量的数据重组就可以完成,内存的访问模式将变得可预测,可以有效提高硬件的计算效率。
假设以上方法解决了每个算法的基本瓶颈问题,那么问题来了。什么样的硬件可以同时优化MSM和FTT算法,大大提高ZKP生成的效率?
硬件的选择
上述加速技术可以在多种硬件技术上实现,包括但不限于GPU、FPGA和ASIC。但是哪个才是最好的选择呢?
在回答这个问题之前,我们要明确一点,ZKPs还处于开发初期,系统参数(如FFT宽度或参数的数据量)或证明系统的选择还没有标准化。正因为如此,FPGA的两个核心特性使其在当前环境下比ASIC更具吸引力。
“多次编写”与“一次编写”:ASIC上的业务逻辑只编写一次。如果任何ZKP逻辑发生变化,你需要从头再来。FPGA可以在几秒钟内刷新,这意味着同一硬件可以在多个具有不兼容证明系统的链上重用(例如,因为他们要跨链提取MEV),硬件可以灵活适应ZK“元”的变化。更成熟的供应链:ASIC设计、制造和部署通常需要12至18个月或更长时间。相比之下,FPGA供应链要成熟得多,像Xilinx这样的头部供应商允许从网站下大量零售订单,16周内到货。这使得以FPGA为中心的服务对其产品有了更紧凑的反馈回路,并可以通过更灵活地购买和部署更多FPGA来随时扩大业务规模。随着机器学习和计算机视觉技术的发展,FPGA的性能甚至有望在未来超越GPU,而且与GPU相比,FPGA仍然有两个明显的优势:
硬件成本:顶级FPGA(领先的工艺节点、时钟频率、能耗比、内存带宽)比顶级GPU便宜3倍左右。全球GPU的短缺进一步加剧了这个问题。能耗比:FPGA的能效比GPU高10倍以上。主要原因是GPU需要连接主机设备才能运行,而主机设备往往耗电量很大。鉴于上述情况,我们预计市场上的赢家将是那些专注于FPGA而不是ASIC或GPU的公司。但是,如果只有一家或几家ZK L1或L2最终“垄断”市场,而ZK证明系统在单一实现方案上是稳定的,ASIC将更有可能击败FPGA。但从目前的情况来看,即使发生,也可能需要很多年。
结论
在刚刚结束的2021年,比特币矿工的净收入超过150亿美元,以太坊矿工的收入超过170亿美元。零知识证明最终将成为实现网络上计算的完整性和隐私性的重要手段。在这种情况下,“ZK矿商”的市场规模有望与PoW矿市场相匹敌。
综上所述,至少在目前的背景下,FPGA硬件可以更好的解决ZKPs证明生成效率低、成本高的现状。在这个新赛道的硬件竞争中,FPGA相对于GPU和ASIC暂时处于领先地位。