FPGA 和 ASIC 有较大的优势和潜力。但需要注意的是,ZK 算法的复杂性和快速迭代下,不同需求适应的硬件可能也会不同。
撰文:宋嘉吉、任鹤义
摘要
零知识证明在以太坊扩容、乃至区块链行业发展中都被寄予厚望。而零知识证明技术面临一定难度,虽然各类创新算法不断涌现,但验证易、生成证明难的局面依旧。我们前期报告也分析过,区块链扩容的一大方向便是计算脱链,因此将证明生成计算放在链外则成为主流方案。为解决生成证明过程的去中心化问题,ZK 证明计算逐渐风生水起。随着以太坊合并之后,市场存量的以显卡算力只能另寻他途。而 ZK 证明正是为这些矿机硬件提供了新的应用空间。
零知识证明协议的验证非常快,而所有的难点就在于生成证明。只要生成证明的速度跟得上,那么链上验证就很简单,验证亚线性特点更利于区块链的拓展性。零知识证明目前有多种实现方式,如 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 方向发展,但是不会一步到位。
风险提示:区块链商业模式落地不及预期;监管政策的不确定性。
零知识证明在以太坊扩容、乃至区块链行业发展中都被寄予厚望。而零知识证明技术面临一定难度,虽然各类创新算法不断涌现,但验证易生成证明难的局面依旧。我们前期报告也分析过,区块链扩容的一大方向便是计算脱链,因此将证明生成计算放在链外则成为主流方案。为解决生成证明过程的去中心化问题,利用各类算力进行生成 ZK 证明计算(可以理解为类似 ZK mining)逐渐风生水起。随着以太坊合并之后,市场存量的以太坊矿机只能另寻他途。而 ZK 证明计算正是为这些矿机硬件提供了新的应用空间。Aleo 作为 ZK 证明计算的典型项目,提供了一种综合 Zcash 和以太坊的隐私平台方案。
本文分析了 ZK 证明计算的原理,对比了 ZK-SNARKS、ZK-STARKS 以及 Bulletproofs 几种典型方案的优劣。同时根据 ZK 的原理,分析了各类硬件应对零知识证明中的 MSM、FFT 的优劣。总而言之,对于 Aleo 而言,Fil 矿机的改造成本最低;从硬件类型来看,FPGA 和 ASIC 有较大的优势和潜力。但需要注意的是,ZK 算法的复杂性和快速迭代下,不同需求适应的硬件可能也会不同。
自以太坊诞生以来,扩容就成为区块链永恒的主题。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 证明计算的对硬件算力的需求都会催生出新的算力市场模式。
零知识证明最早由 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 没有可信设置,且性能可拓展性很高,证明大小不是指数级增加,节省更多的存储空间。
一个理想的零知识证明算法满足以下条件:
在理想的零知识证明算法下,区块链可以不用保存原始的交易数据,而是保存协议生成的零知识证明,矿工节点只需验证零知识证明,而无需验证原始交易数据。显然,生成的证明小于原始交易数据,且验证时间比原来的验证方式短。这样可以提高区块链的拓展性。
但是完全理想的零知识证明非常难达到,几种主流的算法通常在不同维度之间做平衡。
如比特币、以太坊等区块链,「矿工」验证最原始的交易数据,这种原始验证方式(下图中的 Naive)计算复杂度和验证证明的计算复杂度是一样的。ZK-STARK 算法的性能如图所示,它生成证明的时间复杂度随着输入和函数 f 的复杂度线性变化。很明显,验证的时间复杂度是对数的(因此可以提升扩展性)。虽然生成证明的时间复杂度是线性的,但它比原始的方式慢 100 多倍(放大坐标轴才能看出来差别)。2013 年业界提出 ZK-SNARK 算法(匿名币 Zcash 采用这种算法),性能有不小的提升,但需要可信设置(红色曲线)。正如上文提到的,可信设置会带来一些数据泄露的风险和博弈。
零知识证明越复杂、越大,则性能越高,验证所需的时间越短。如下图,STARKs 和 Bulletproofs 无需可信设置,随着交易数据量从 1TX 激增至 10000TX,后者证明的大小增加的更少。Bulletproofs 的优点是证明的大小是对数变换(即使 f 和 x 很大),有可能将证明存入区块,但其验证的计算复杂度是线性的。可见各类算法都有很多要权衡的关键点,亦有很多待升级的空间,然而在实际运行过程中,生成证明的难度远比想象中的要大,因此现在行业都致力于解决生成证明的问题。
以上分析为 ZK 证明计算提供了应用空间,其大思路则有些类似于 mina、或 AR 生态的 SCP,将更复杂的计算(生成证明)置于主链之外,利用硬件的堆叠来解决零知识证明生成的算力消耗,而主链则负责验证证明,以提升区块链的扩展性。交易数据在链外可以通过零知识证明、TEE 等技术手段实现主链对链外平台的监督和验证。整体上的思路就是脱链 / 链外计算,把计算(存储等资源消耗)与存证分开。而零知识证明的特点则在于验证的高效解放了区块链的拓展性,代价则是生成证明的复杂性。
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 证明计算机器,但是也可以通过改装现有机器。
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,成为以太坊大生态的一部分。
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 网络生态发展状况。
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 等机器的矿工,解决零知识证明运算。
在市场化的竞争下,去中心化的算力市场很可能会诞生类似比特币或以太坊矿池的形式,有能力的开发者 / 矿池会优化各种算法提高生成证明的效率、降低成本,以获得更多的奖励。而普通的矿工则直接接入这样的矿池,按贡献算力获取奖励。
根据证明系统的不同,证明生成过程可能会有所不同,但始终面临以下瓶颈:
虽然 MSM 和 FFT 都很慢,但都有提高性能的方法。MSM 具有并行性的可能,可以通过在多个线程上运行它们来加速。然而,即使在数百个内核上,如果每个元素向量是长(即 3300 万个元素,对于像 ZKEVM 这样的应用程序来说,这是一个较为保守的复杂度范围),乘法最终会花费大量时间。这意味着经常重复相同的操作,并且会耗尽设备上的大部分可用内存。
MSM 需要大量内存并且即使在高度并行化时仍然很慢,而 FFT 严重依赖算法运行时数据的频繁洗牌。这使得它们很难通过跨计算集群分配负载来加速。此外,它们在硬件上运行时需要大量带宽。改组意味着需要「随机」加载和卸载元素,例如,具有 16GB 或更少内存的硬件芯片上的 >100GB 数据集。虽然硬件上的操作非常快,但通过网络加载和卸载数据的时间最终会显着减慢操作速度。
综上所述:
MSM 具有可预测的内存访问,允许大量并行化,但由于所需的原始计算量和内存量,它们的成本仍然很高。
FFT 具有随机内存访问,这使得它们对硬件不友好,自然难以在分布式基础设施上运行。
纵观各类 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 算法的复杂性和快速迭代下,不同需求适应的硬件可能也会不同。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。