为解决生成证明过程的去中心化问题,ZK证明计算逐渐风生水起。随着以太坊合并之后,市场存量的以显卡算力只能另寻他途。而ZK证明正是为这些矿机硬件提供了新的应用空间。
作者:宋嘉吉 任鹤义
原文:《ZK证明计算:算力硬件的新征途?》
摘要
零知识证明在以太坊扩容、乃至区块链行业发展中都被寄予厚望。而零知识证明技术面临一定难度,虽然各类创新算法不断涌现,但验证易、生成证明难的局面依旧。我们前期报告也分析过,区块链扩容的一大方向便是计算脱链,因此将证明生成计算放在链外则成为主流方案。为解决生成证明过程的去中心化问题,ZK证明计算逐渐风生水起。随着以太坊合并之后,市场存量的以显卡算力只能另寻他途。而ZK证明正是为这些矿机硬件提供了新的应用空间。(相关阅读:《六问六答丨以太坊转POS之后,将如何影响矿工和加密市场?》)
零知识证明协议的验证非常快,而所有的难点就在于生成证明。只要生成证明的速度跟得上,那么链上验证就很简单,验证亚线性特点更利于区块链的拓展性。零知识证明目前有多种实现方式,如ZK-SNARKS、ZK-STARKS、PLONK以及Bulletproofs。每种方式在证明大小、证明者时间以及验证时间上都有自己的优缺点。完全理想的零知识证明非常难达到,几种主流的算法通常在不同维度之间做平衡。ZK-SNARK具有更简洁的证明,耗费更小的链上存储空间,但需要可信设置,存储一定的风险和漏洞。ZK-STARK具有更快的验证速度和证明速度,不需要可信设置,但是电路规模很大。BulletPropfs没有可信设置,且性能可拓展性很高,证明大小不是指数级增加,节省更多的存储空间。
ALEO的目标是构建一个可编程的隐私DeFi平台,类似Zcash和以太坊的综合体。用户可以不泄露数据隐私的情况下,使用区块链网络服务,其利用的主要技术就是零知识证明。零知识证明可以在不透露输入参数的情况下,验证交易的有效性,这为隐私验证提供了新的解决方案。Aleo结合零知识提供了全栈解决方案,保证应用程序堆栈的每一层都可编程、可使用、可去中心化隐私计算。这有些类似Zcash和以太坊的综合,既考虑隐私的需求,又能够运行各类合约,为DeFi等生态发展提供根基。
Aleo算力对CPU和GPU的要求都较高,对内存和固态存储的要求较低。从市场现有机型来看,Filecoin P1P2算力机改装最为简单,成为主流的测试机型。Fil C2超算机部分机型的CPU需要加强,再更改CPU的同时也可能会有主板的更改,改造成本也较低。对于Chia P盘机和ARweave,除了需要增加显卡,基本不需要其他改动,改造成本中等。而以太坊在转POS之后,如果ETH矿工想要加入 Aleo算力,则除了部分高端显卡之外,其余部分基本都需要改装,成本较高。
硬件方面的选择包括GPU、FPGA 或 ASIC,后两者潜力似乎更大。需要注意的是零知识证明仍处于早期发展阶段,目前仍然很少有标准化,且算法也在不断更新变化中。每种算法都有其特点,适合于不同的硬件,且随着项目发展需求每种算法都会有一定程度改进,因此很难去具体评估目前存量矿机的优劣。GPU能通过算法进行加速并行计算,但是算法内包含MSM、FTT,因此即使实现了并行运算,也无法大幅降低其证明时间。FPGA能够通过针对于ZK算法定制化优化矿机。ASIC是为特定用途专门定制的集成电路芯片,从出厂硬件上实现优化。但是ASIC由于过于定制化,需要的时间需要的时间和成本也会更多。也许硬件的迭代伴随着行业规模的增大,逐渐朝着ASIC方向发展,但是不会一步到位。
风险提示:区块链商业模式落地不及预期;监管政策的不确定性。
1. 核心观点
零知识证明在以太坊扩容、乃至区块链行业发展中都被寄予厚望。而零知识证明技术面临一定难度,虽然各类创新算法不断涌现,但验证易生成证明难的局面依旧。我们前期报告也分析过,区块链扩容的一大方向便是计算脱链,因此将证明生成计算放在链外则成为主流方案。为解决生成证明过程的去中心化问题,利用各类算力进行生成ZK证明计算(可以理解为类似ZK mining)逐渐风生水起。随着以太坊合并之后,市场存量的以太坊矿机只能另寻他途。而ZK证明计算正是为这些矿机硬件提供了新的应用空间。Aleo作为ZK证明计算的典型项目,提供了一种综合Zcash和以太坊的隐私平台方案。
本文分析了ZK证明计算的原理,对比了ZK-SNARKS、ZK-STARKS以及Bulletproofs几种典型方案的优劣。同时根据ZK的原理,分析了各类硬件应对零知识证明中的MSM、FFT的优劣。总而言之,对于Aleo而言,Fil矿机的改造成本最低;从硬件类型来看,FPGA和ASIC有较大的优势和潜力。但需要注意的是,ZK算法的复杂性和快速迭代下,不同需求适应的硬件可能也会不同。
2. 零知识技术的潜力:隐私和扩容
自以太坊诞生以来,扩容就成为区块链永恒的主题。L2无疑是扩容的主流方案,为解决L2与主网验证效率的问题,零知识证明技术(Zero Knowledge Proof,ZKP)是最有潜力的技术——这来源于ZKP验证的准线性特点。但其代价就是生成ZK证明计算带来的复杂性和难度,因为ZK证明计算需要大量的算力消耗,且消耗越大,验证的效率可能越高。因此ZKRollup成为最具潜力的扩容方案,而在公链的赛道上,ZK证明计算就成为绕不过去的点。因此,随着区块链扩容的发展,系统的复杂度也有着相应的提升,包括脱链(off-chain)计算(如SCP、ZKP证明计算)、硬件算力都成为扩容的选择。
以太坊扩容是大思路是数据运算、执行甚至存储脱离主链,这位硬件算力提供了新的应用场景。一些L2的ZK证明计算是放在私有算力硬件上完成的,但不要忘记零知识证明技术最基本的潜力是隐私性。为解决ZK证明计算的去信任化,利用去中心化的硬件节点来解决算力消耗成为一种自然而然的方向。例如Scroll创建一个去中心化的证明市场来解决以太坊L2扩容问题,创造了一个兼容EVM的ZKRollup。当然也有Aleo这样,利用ZKP的隐私特点,打造了一个隐私公链平台,且利用了硬件算力来解决ZK证明计算问题的新平台。
无论是用作L2,还是独立的新公链平台,ZKP证明计算的对硬件算力的需求都会催生出新的算力市场模式。
2.1.运行原理、特点
零知识证明最早由MIT的Shafi Goldwasser和Silvio Micali在1985年一篇名为《互动式证明系统的知识复杂性》的论文中提出。作者在论文中提到,证明者(prover)有可能在不透露具体数据的情况下让验证者(verifier)相信数据的真实性。公共的函数f(x)和一个函数的输出值y,Alice对Bob说她知道x值,但是Bob不信。为此,Alice使用零知识证明算法,来生成一个证明。Bob验证这个证明,确认Alice是不是真的知道满足函数f的x。零知识证明可以是交互式的,即证明者面对每个验证者都要证明一次数据的真实性;也可以是非交互式的,即证明者创建一份证明,任何使用这份证明的人都可以进行验证。零知识分为证明和验证两部分,一般来说证明是准线性的,即验证是T*log(T)的。
假设验证时间是以交易数量对数的平方,那么10000笔交易一个块的机器验证时间是
VTime = (log2 10000)2 ~ (13.2)2 ~ 177 ms;现在将块大小增加一百倍(达到100万tx/块),验证器的新运行时间是VTime = (log2 1000000)2 ~ 202 ~ 400 ms。因此,正是这种非线性关系,我们能看到其超强的可拓展性,这就是为什么说,从理论上tps能够达到无限的原因。
验证是非常快的,而所有的难点就在于生成证明这一部分。只要生成证明的速度跟得上,那么链上验证就很简单。零知识证明目前有多种实现方式,如ZK-SNARKS、ZK-STARKS、PLONK以及Bulletproofs。每种方式在证明大小、证明者时间以及验证时间上都有自己的优缺点。
ZK-SNARK具有更简洁的证明,耗费更小的链上存储空间,但需要可信设置(在协议进行证明和验证之前,需要设置和生成一些公共的参数,但是在生成这些公共参数的过程中会产生一些不能公开的中间数据,任何一方拿到这些数据都能破解协议,因此需要确保在完成设置之后删除这部分数据,在隐私保护的角度,这则成为风险和博弈的漏点)。
ZK-STARK具有更快的验证速度和证明速度,不需要可信设置,但是电路规模很大。BulletPropfs没有可信设置,且性能可拓展性很高,证明大小不是指数级增加,节省更多的存储空间。
2.2.几种算法方案对比
一个理想的零知识证明算法满足以下条件:
1)生成证明的计算复杂度最多是线性的;
2)验证证明的计算复杂度最多是对数的;
3)证明的大小复杂度最多是对数的(证明内容和函数大小增大,呈对数增长);
4)无需可信设置(可信设置存在数据泄露的风险)。
在理想的零知识证明算法下,区块链可以不用保存原始的交易数据,而是保存协议生成的零知识证明,矿工节点只需验证零知识证明,而无需验证原始交易数据。显然,生成的证明小于原始交易数据,且验证时间比原来的验证方式短。这样可以提高区块链的拓展性。
但是完全理想的零知识证明非常难达到,几种主流的算法通常在不同维度之间做平衡。
如比特币、以太坊等区块链,“矿工”验证最原始的交易数据,这种原始验证方式(下图中的Naive)计算复杂度和验证证明的计算复杂度是一样的。ZK-STARK算法的性能如图所示,它生成证明的时间复杂度随着输入和函数f的复杂度线性变化。很明显,验证的时间复杂度是对数的(因此可以提升扩展性)。虽然生成证明的时间复杂度是线性的,但它比原始的方式慢100多倍(放大坐标轴才能看出来差别)。2013年业界提出ZK-SNARK算法(匿名币Zcash采用这种算法),性能有不小的提升,但需要可信设置(红色曲线)。正如上文提到的,可信设置会带来一些数据泄露的风险和博弈。
零知识证明越复杂、越大,则性能越高,验证所需的时间越短。如下图,STARKs和Bulletproofs无需可信设置,随着交易数据量从1TX激增至10000TX,后者证明的大小增加的更少。Bulletproofs的优点是证明的大小是对数变换(即使f和x很大),有可能将证明存入区块,但其验证的计算复杂度是线性的。可见各类算法都有很多要权衡的关键点,亦有很多待升级的空间,然而在实际运行过程中,生成证明的难度远比想象中的要大,因此现在行业都致力于解决生成证明的问题。
以上分析为ZK证明计算提供了应用空间,其大思路则有些类似于mina、或AR生态的SCP,将更复杂的计算(生成证明)置于主链之外,利用硬件的堆叠来解决零知识证明生成的算力消耗,而主链则负责验证证明,以提升区块链的扩展性。交易数据在链外可以通过零知识证明、TEE等技术手段实现主链对链外平台的监督和验证。整体上的思路就是脱链/链外计算,把计算(存储等资源消耗)与存证分开。而零知识证明的特点则在于验证的高效解放了区块链的拓展性,代价则是生成证明的复杂性。
3. ZK证明计算:算力硬件的新出路?
2022年,在以太坊合并之前,在网工作的显卡数量约2700万张,算力亦在5月中达到高峰的1.13P,随着以太坊的合并,这些算力除切换至ETC等分叉链,还有其他出路吗?除了大量显卡,市场上的Filecoin(fil)、AR等算力设备存量也很大。ZK证明计算也许会为矿机硬件提供新的用武之地。
为什么ZK证明计算可实现?
1)当将证明这一部分外包出去是,通过KZG承诺等技术也能保证内容不会被篡改,这也就是所谓的计算完整性;
2)ZKPs 从根本上为可扩展的私人支付以及智能合约平台的加速发展提供了可能,但是其高昂的计算成本在一定程度上限制了其大规模采用的进程,因此出现ZK矿工提供算力支持成为自然。
ZK证明计算就是致力于通过硬件的堆叠,以快速高效的提出证明便于链上验证。随着新需求和用例的出现,芯片制造商会设计专用的 GPU、FPGA 和 ASIC,以针对特定功能和软件进行优化。从云计算到计算机图形学、人工智能和机器学习,所有主要的科技行业都已经发展到需要能够加快计算运行速度和效率的硬件。由于大量昂贵的数学运算,ZKP 的生产速度慢且成本高。但是,通过使用可编程门阵列 (FPGA) 和专用集成电路 (ASIC) 等专用硬件,它们可以加速 10-1000 倍。
随着用户寻求更具表现力、高性能和私密性的计算,使用 ZKP 证明的语句的复杂性将会增加。这将导致证明生成速度变慢,需要使用专门的硬件才能及时生成证明。与比特币矿工类似,硬件运营商的工作需要得到补偿——而同时用户需要解决算力外部的问题,这便形成了ZK证明计算的市场。最终,一个完整的 ZK采矿和证明行业将出现,首先是爱好者在他们的 CPU 中生成证明,然后是 GPU,然后是 FPGA。ZK证明计算可以在私人网络里运行,但考虑到去中心化的需求,可以利用区块链节点来解决。
目前比较形成系统的ZK证明计算项目是Aleo,尽管尚在早期,但为ZK硬件生态构建做了一些探索。Aleo还未有专门适配的ZK证明计算机器,但是也可以通过改装现有机器。
3.1.ALEO的探索
ALEO的目标是构建一个可编程的隐私DeFi平台,用户可以不泄露数据隐私的情况下,使用区块链网络服务,其利用的主要技术就是零知识证明。零知识证明可以在不透露输入参数的情况下,验证交易的有效性,这为隐私验证提供了新的解决方案。Aleo结合零知识提供了全栈解决方案,保证应用程序堆栈的每一层都可编程、可使用、可去中心化隐私计算。这有些类似Zcash和以太坊的综合,既考虑隐私的需求(以太坊的链上交易都是透明可查的),又能够运行各类合约,为DeFi等生态发展提供区块链平台。
该项目使用的是PoSW(简洁工作证明)共识机制,该算法是基于SNARK的激励算法。PoSW 是一种类PoW的共识机制,是比特币基于SHA的难度调整算法的变体,主要区别在于底层计算不是任意散列函数,而是知识证明。使得 PoSW 解决方案不仅可以充当 PoW 以确保系统共识,还可以提供给定区块中包含交易的验证,让算力发挥实际运算的作用,且逻辑上来说也可以让性能更进一步优化。
Aleo layer1层主要作为数据层,执行层在链下,验证层由Layer1验证节点承担,类似于ETH2.0结构。执行层执行交易并且由矿工生成SNARK证明,提交到Layer1,验证节点负责验证该证明有效性。而Layer1仍然采用的是POS质押模型。Aleo 通过ZKCloud体系实现可编程隐私的功能。ZKCloud 是一个脱链、去信任的计算环境,程序在其中以私密、安全、廉价的方式执行。这与AR生态的SCP等链下计算方式类似。
Aleo代币也称为积分额度,是访问零知识计算的关键资源,因此Aleo积分成为零知识证明市场定价的货币工具——在用户和矿工之间流转,这与fil等存储网络的经济模式类似。同时,PoSW共识机制下,Aleo网络上的费用是可以事先计算的,因此网络中不存在 "Gas "的概念,这一点与以太坊有着明显的区别。在Aleo网络中,每个人都提前知道运行一个特定的程序需要多少Aleo积分。Aleo目前出于三期测试网状态。
在兼容以太坊EVM的各类L2网络应用ZKP,则可以分享以太坊强大的生态资源,Aleo算是开辟了一个新的赛道模式——创造新公链平台,成为以太坊的竞争对手。当然,也不排除Aleo后面会兼容以太坊EVM,成为以太坊大生态的一部分。
3.2.ALEO算力机器改装
Aleo算力对CPU和GPU的要求都较高,对内存和固态存储的要求较低。从市场现有机型来看,Filecoin P1P2算力机改装最为简单,成为主流的测试机型。Fil C2超算机部分机型的CPU需要加强,再更改CPU的同时也可能会有主板的更改,改造成本也较低。对于Chia P盘机和ARweave,除了需要增加显卡,基本不需要其他改动,改造成本中等。而以太坊在转POS之后,如果ETH矿工想要加入 Aleo算力,则除了部分高端显卡之外,其余部分基本都需要改装,成本较高。
因此,从Aleo算力来看,fil矿机是最适合改造为ZK矿机的。对于 Aleo全网算力的预测可以借鉴 Fil主网上线时的增长幅度。因为诸多Fil算力机基本可以零改装费接入 Aleo网络,市场上很多矿商都在关注 Aleo算力业务。参考 Filecoin 主网上线第一年的增速,前3个月约为50%-60%增速,3-6月约为30%左右增速,6-12月约为15%-25%左右增速。市场对三期测试网的预期较为乐观,假设全网总算力为105万pps为起点,则预测 Aleo 主网上线一年后,全网可达到2000万pps左右。
但这种乐观的预期能否实现还要看最终的市场接受程度、Aleo网络生态发展状况。
3.3. Scroll:用于ZKRollup的证明市场
Scroll 是一个等效于 EVM 的 ZKRollup,旨在扩展以太坊。Scroll 能够兼容 EVM 支持生成零知识证明,以太坊智能合约可以无需修改而直接部署运行。而Scroll跟其他ZKRollup最大的区别是,项目希望创建一个去中心化的证明市场,这也为ZK证明计算带来应用空间。
在 ZKRollup 的运行原理里,存在一个Sequencer的角色,它负责收集交易并进行排序和打包发布到以太坊主网,随后 Prover会为这些交易生成证明。只有证明提交并被验证通过后,这些交易才最终被确认。目前主流的 ZKRollup 如 ZKSync 和 StarkWare 的 Sequencer 和 Prover 是中心化的,即掌握在项目方手中。而 Scroll 和其他 ZKRollup 的一个重要的不同点在于它希望通过去中心化网络创建一个证明市场,即Roller社区。Roller Network 里的 Roller 可以外包给提供 GPU、FPGA 和 ASIC 等机器的矿工,解决零知识证明运算。
在市场化的竞争下,去中心化的算力市场很可能会诞生类似比特币或以太坊矿池的形式,有能力的开发者 / 矿池会优化各种算法提高生成证明的效率、降低成本,以获得更多的奖励。而普通的矿工则直接接入这样的矿池,按贡献算力获取奖励。
3.4.ZK证明计算机器需要解决的问题
根据证明系统的不同,证明生成过程可能会有所不同,但始终面临以下瓶颈:
1)对大型数字向量(字段或组元素)的乘法,特别是可变基数和固定基数多标量乘法(MSM);
2)快速傅里叶变换(FFT) 和逆 FFT(尽管有用于无 FFT 证明系统的技术);
3)在同时存在 FFT 和 MSM 的系统中,大约 70% 的时间生成证明花费在 MSM 上,其余时间则由 FFT 主导。
虽然MSM 和 FFT 都很慢,但都有提高性能的方法。MSM 具有并行性的可能,可以通过在多个线程上运行它们来加速。然而,即使在数百个内核上,如果每个元素向量是长(即 3300 万个元素,对于像ZKEVM这样的应用程序来说,这是一个较为保守的复杂度范围),乘法最终会花费大量时间。这意味着经常重复相同的操作,并且会耗尽设备上的大部分可用内存。
MSM 需要大量内存并且即使在高度并行化时仍然很慢,而FFT 严重依赖算法运行时数据的频繁洗牌。这使得它们很难通过跨计算集群分配负载来加速。此外,它们在硬件上运行时需要大量带宽。改组意味着需要“随机”加载和卸载元素,例如,具有 16GB 或更少内存的硬件芯片上的 >100GB 数据集。虽然硬件上的操作非常快,但通过网络加载和卸载数据的时间最终会显着减慢操作速度。
综上所述:
- MSM 具有可预测的内存访问,允许大量并行化,但由于所需的原始计算量和内存量,它们的成本仍然很高。
- FFT 具有随机内存访问,这使得它们对硬件不友好,自然难以在分布式基础设施上运行。
3.5.ZK时代,什么类型的硬件会胜出?
纵观各类ZK算法,现在都能做到恒定的证明大小和较短的验证时间,因此目前对ZK算法的瓶颈桎梏主要不在区块大小上。然而,证明生成的复杂性和算术环路大小呈现理论上的线性关系(实际上目前在生产过程中仍然是指数级关系)。证明者需要评估整个算数环路,这需要大量时间,目前算力成本高和证明时间长,生产阶段的指数级难度递增,这些都确确实实限制了ZK应用的普及。改进方法在算法本身和硬件加速两方面。
就硬件方面,目前的选择包括GPU、FPGA 或 ASIC。需要注意的是零知识证明仍处于早期发展阶段,目前仍然很少有标准化,且算法也在不断更新变化中。每种算法都有其特点,适合于不同的硬件,且随着项目发展需求每种算法都会有一定程度改进,因此很难去具体评估哪种算法最优、目前存量矿机的优劣。
GPU能够通过一定的算法,加速并行计算。但是算法内包含MSM、FTT,因此即使实现了并行运算,也无法大幅降低其证明时间。根据上文分析,GPU改造成ZK证明计算的成本很高,逊色于Fil矿机的竞争力,根据草根调研,目前大部分矿机都是Fil矿机。
FPGA是可编程的集成电路,因此开发者能够通过针对于ZK算法定制化优化矿机。在可预见的未来,有机会实现比GPU更高的灵活性和省电、加速能力。
ASIC是为特定用途专门定制的集成电路芯片。如果说FPGA是从软件上实现加速优化,那么ASIC就是从出厂硬件上实现。因此设计人员能够针对ZK技术的特点专门设计适配的硬件,再结合算法的优化能够很大程度的释放硬件潜能。但是ASIC由于过于定制化,需要的时间和成本也会更多,也许硬件的迭代伴随着行业规模的增大,逐渐朝着ASIC方向发展,但是不会一步到位。
从上述分析看,FPGA和ASIC有较大的优势和潜力。但需要注意的是,ZK算法的复杂性和快速迭代下,不同需求适应的硬件可能也会不同。
风险提示
区块链商业模式落地不及预期:区块链、密码学等相关技术和项目处于发展初期,存在商业模式落地不及预期的风险。
监管政策的不确定性:区块链项目实际运行过程中涉及到多项金融、网络及其他监管政策,目前各国监管政策还处于研究和探索阶段,并没有一个成熟的监管模式,所以行业面临监管政策不确定性的风险。