本文探讨了零知识证明(ZKP)的硬件加速方案,对比了使用FPGA、GPU和ASIC的优劣。虽然FPGA在单位功耗性能上与GPU相当,但在性价比上不如GPU。ASIC在性能和功耗方面都优于FPGA和GPU,但开发周期较长、成本高昂,并需要考虑可编程性的问题。文章还提出了使用指令集架构(ISA)来解决ASIC可编程性问题的方案,并展望了未来ZKP硬件加速的发展趋势,认为ASIC最终可能会成为主导。
作者:Luke Pearson 及 Cysic 团队
要点:
近年来,零知识证明 (ZKP) 的重要性呈指数级增长,成为过去半个世纪计算机科学领域最关键的创新之一。这可以归因于 ZKP 有可能显著提高以太坊等区块链平台的可扩展性。ZKP 的一个关键方面是它们能够显著增加各种区块链平台上的每秒交易数 (tps),仅依赖于数学原理而不是信任。通过使验证者能够将多个交易合并为一个简洁的证明,ZKP 确保了整个过程的准确性和完整性。ZKP 提供了许多其他功能,使其成为各种扩展和隐私解决方案的重要组成部分,包括像 StarkNet 这样的 ZK 聚合、像 Aztec 这样的私有 ZK 聚合,以及像 Mina、Filecoin、Manta 和 Aleo 这样的 Layer 1 链。尽管如此,ZKP 并非没有其局限性,因为生成证明的过程在时间和能源方面都可能非常耗费资源。由于需要大量的复杂数学运算,例如求幂、求逆和双线性配对计算,证明的创建常常会减慢速度。因此,优化 ZKP 解决方案以充分发挥其潜力仍然是一个挑战。为了克服所有提出的 ZKP 构造的这些问题,开发硬件加速方法至关重要。也就是说,它们可以通过使用专用硬件(如现场可编程门阵列 (FPGA) 和专用集成电路 (ASIC))来加速 10 到 1000 倍。
在本文中,我们将概述与 ZKP 相关的计算挑战,然后讨论可能有助于解决这些问题并提高这些加密技术效率的潜在改进措施。
zkSNARK(零知识简洁非交互知识论证)方案是一种 ZKP,它允许证明者说服验证者,证明者知道一个 witness,而无需泄露关于该 witness 的任何信息。该方案由四个算法组成:Setup、KeyGen、Prove 和 Verify。setup 算法生成一些结构化的参考字符串,KeyGen 算法将使用它来为一些指定的电路生成证明密钥和验证密钥。证明者使用证明密钥和 statement/witness 对,可以通过指定的电路生成关于 statement/witness 对关系的 ZK 证明。验证者可以使用验证密钥和 statement 来检查 ZK 证明的有效性。
一个 zkSNARK 方案需要满足以下特点:
另一种变体称为 zkSTARK(零知识可扩展透明知识论证)。它可以有或没有零知识地运行,并且可以是交互式或非交互式协议。它们也可以替代 zkSNARK 作为交互式协议。与 zkSNARK 不同,交互式证明不需要可信设置阶段,这使得 STARK 系统成为更好的选择。STARK 系统通过利用交互式 Oracle 证明 (IOP) 域克服了这一缺点,该域依赖于快速 Reed-Solomon 码来提高可扩展性,从而导致了 zkSTARK 证明系统的开发。此外,基于 zkSTARK 的系统传统上以对数复杂度处理证明者和验证者,使其高效并防止一方执行拒绝服务 (DoS) 攻击,因为双方的计算量相似。zkSTARK 的另一个值得注意的特性是推测的后量子安全性,而 zkSNARK 则不具备,因为它受到 Shor 的量子算法的影响。zkSTARK 系统提供后量子安全性,前提是框架内使用的哈希函数本身能够抵抗量子计算攻击。
在区块链技术领域,缩写词 SNARK 和 STARK 通常用于代替 zkSNARK 和 zkSTARK,因为当隐私未实施或区块链用例不同时,也会使用它们。因此,在本文中,我们将在讨论和解释中也采用简化的术语“zk”。ZKP 有两个重要的用例:
在区块链的背景下,ZKP 的上述用例呈现为:
因此,随着加密货币的采用持续扩展,对增强的性能和隐私的需求预计也会增加,从而推动对更复杂的 ZKP 应用的需求。随着开发人员创建新的应用程序和协议,ZKP 有望在促进安全高效的去中心化系统中发挥关键作用。这些系统将能够处理大规模的交易处理,同时保护用户隐私,满足数字货币领域不断发展的要求。
要使用 ZKP 证明计算,有必要将计算从经典程序转换为 ZK 友好的格式。有两种方法可以做到这一点:要么使用以某种现有语言(如 Rust 中的 Arkworks)编写的库,要么使用领域专用语言 (DSL)(如 Cairo 或 Circom),该语言会编译为生成证明所需的基元。操作越复杂,生成证明所需的时间就越长。此外,某些操作本质上不是 ZK 友好的,需要额外的工作才能使其如此。例如,在 SHA 或 Keccak 中使用的按位函数等操作可能与 ZKP 不友好,从而导致延长的证明生成时间。即使对于在经典计算机上执行时相对便宜的操作,也可能发生这种情况。在将计算转换为 ZK 友好的格式后,你可以选择一些输入并将其提交给证明系统。有许多证明系统,例如 Groth16、PLONK、HyperPlonk、UltraPlonk、Sonic、Spartan 和 STARK。所有这些系统都共享接受带有输入的 ZK 友好计算并生成证明作为输出的相同基本功能。根据证明系统的不同,证明生成过程可能会有所不同,但瓶颈最终是相似的。
在 ZKP 的上下文中,主要使用两种计算任务:
在 NTT 和 MSM 都存在的证明系统中,生成证明的时间大约 60% 花在 MSM 上,其余时间由 NTT 主导。MSM 和 NTT 都有可以通过以下方式解决的性能挑战:
我们认为,硬件加速是使区块链协议能够实现实际应用所需的可扩展性的重要组成部分。目前,区块链协议受到其链上计算和存储容量以及其网络带宽的限制。通过优化链下硬件和证明生成,我们相信我们可以大幅提高区块链网络的性能,使其更有效率。
ZPrize 是区块链行业内的一项集体倡议,包含超过 32 个合作伙伴和赞助商,他们贡献自己的时间、资源和努力来确保其成功。该计划提供了一系列挑战和计划,以激发参与者开发创新解决方案,以促进可持续性并减少碳排放。他们以实现这两个目标而自豪,这标志着零知识密码学领域的重大进步。ZPrize 的结果超出了他们的预期,如下面的图表所示。对于他们收到提交的大多数奖项,从基线的平均增强超过五倍。值得注意的是,一些涉及 FPGA 的奖项缺乏公开基准测试,这使得这些提交成为算法实现以开源形式的首次公开展示。以下是一些值得注意的成就:
226 个元素)显示从 5.8 秒到 2.5 秒的改进,从而可以更复杂地使用 zkSNARK。
在接下来的几个月中,他们计划展示所有参与此倡议的团队的工作。随着零知识密码学领域的发展,新的方法和障碍将会出现。他们渴望定期组织 ZPrize 竞赛,以促进这项技术的进步,并通过一系列开源资料向公众提供。
证明生成中的瓶颈通常源于大数向量的乘法,包括字段或群元素、变量或固定基数的多标量乘法,以及 NTT 和逆 NTT。在使用 NTT 和 MSM 的证明系统中,MSM 贡献了大约 60% 的证明生成时间,而 NTT 占据了剩余的时间。尽管 MSM 是可并行化的,但它仍然很慢,需要大量的内存资源,并且经常消耗设备上的大部分可用内存。另一方面,NTT 严重依赖于频繁的数据混洗,这使得通过在计算集群中分配负载来加速变得复杂。此外,NTT 需要大量的带宽才能在硬件上运行,因为通过网络加载和卸载数据会显着降低操作速度,尽管硬件操作本身非常快。然而,有一些方法可以提高 MSM 和 NTT 的性能,以便优化证明生成过程。
MSM 通常使用 Pippenger 算法来实现,以最大限度地减少群加法运算的数量。此方法具有直接的硬件实现,其中包括一个群加法单元和一个桶表作为其基本组件。从系统设计的角度来看,MSM 因以下原因而非常适合加速器:
总之,使用专用硬件加速 MSM 非常有利。然而,主要问题是市场上缺乏此类硬件。Cysic 设计了一个使用 Xilinx FPGA 的 MSM 加速器,这展示了迄今为止最佳的系统级性能(大约 40 毫秒/
226 在 BN254 曲线上的 MSM)。不幸的是,与为普通游戏玩家设计的 GPU 相比,FPGA 芯片对于专业用户来说成本很高,加上 FPGA 的工艺滞后(FPGA 的 14 纳米与 GPU 的增强型 5 纳米相比),这两个显着的缺点抵消了基于 FPGA 的加速器的利用优势。
NTT 由多个蝴蝶算子层组成。虽然教科书式的逐层 NTT 实现可能会因内存带宽利用率(由于步长访问)而很快成为瓶颈,但可以通过同时执行一批层并在计算期间正确地重新排序 NTT 数据来解决此问题。根据经验,内存访问可以重组为块访问,其粒度约为(片上内存容量的大小)/(
NTT 点的 k 次方根),其中
k 是表示层组数量的可调参数。通过使用这种方法,GPU 和加速器都可以实现出色的性能。
硬件加速可以通过在各种硬件技术(例如 GPU、FPGA 或 ASIC)上部署优化的算法来支持区块链协议的性能。增强软件和算法实现,以更有效地利用现有资源(如 CPU 和 GPU),以及结合为特定硬件配置量身定制的新颖算法,开发定制硬件,可以促进硬件加速。通过这样做,可以显着提高区块链网络的性能,这些网络目前受到其链上计算和存储容量以及网络带宽的限制。
为了确定实现上述加速技术的最佳硬件技术,我们需要考虑到 ZKP 仍处于开发的早期阶段。因此,系统参数和证明系统的选择(例如 FFT 宽度或元素的位大小)的标准化有限。此外,我们还需要考虑两个因素:
基于上述两个指标,这是否意味着 FPGA 无法胜过 GPU?答案是否定的。虽然单个 FPGA 芯片无法与单个 GPU 竞争,但大规模互连的 FPGA 系统可以击败大规模互连的 GPU 系统。由于 PCIe 插槽的限制,顶级 GPU 系统最多只能有 10 个 GPU 卡。然而,数十个 FPGA 芯片可以通过定制的、可编程的、高带宽的互连连接在一起,从而达到可以击败 GPU 系统的性能水平。Cysic 的大规模互连 FPGA 系统直接证明了这一见解。
ASIC 普遍被认为是 ZKP 的理想硬件。然而,对于构建用于 ZKP 的 ASIC 存在三个主要问题。
第一个问题可以使用硬件中的框架来解决,该框架称为指令集架构 (ISA)。ISA 是指硬件系统(例如 CPU 和硬件加速器)的抽象框架和设计。它表示处理器可以执行的基本指令和操作集。这些指令包括算术运算、数据移动、逻辑运算、控制流和其他低级函数。使用 ISA,硬件加速 ZKP 可以分为三个层:
此 ISA 结构提供了一个支持多个 ZK 系统和潜在更新的解决方案。可以使用 ZK-ISA 对 AZK(用于 ZK 的 ASIC)进行编程,以支持 ZK 系统的多功能性。
对于关于做 ASIC 的其他担忧,这取决于市场。目前,与 ZK 相关的项目的估值加起来超过 100 亿美元,我们认为花费大约 1000 万美元来构建 ASIC 以提高 ZK 证明生成的效率是值得的。这个上市时间问题是所有 ASIC 设计中固有的。幸运的是,ASIC 的供应链问题现在比以前好多了。解决此问题的唯一方法是尽早启动并彻底预热供应链。到 ASIC 问世时,它可以摧毁任何其他形式的 ZK 硬件。
ZKP 具有促进可扩展和私有的支付系统以及智能合约平台的潜力,从而大大增强区块链技术的可用性和安全性。ZKP 确实引入了开销,这些开销在历史上阻碍了它们的采用。诸如显着的计算和验证成本以及实施基于 ZKP 的系统的复杂性等因素可能会为许多开发人员设置进入壁垒。然而,ZKP 领域的持续研究和开发正在解决这些挑战,从而简化这些技术在实践中的实施和应用。
考虑到 GPU 在灵活性、易于部署和预期性能方面的优势,我们认为,在 ASIC 技术出现之前的未来几个月内,专注于 GPU 解决方案的公司更有可能蓬勃发展。如果 ASIC 达到主导规模和稳定性,它们可能会成为优化算法的首选硬件。因此,ZKP 有望在未来继续在实现日益先进和安全的区块链系统中发挥关键作用。
- 原文链接: hackmd.io/@Cysic/BJQcpVb...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!