ZKP硬件加速

1. 引言

本文重点关注:

  • 1)何为硬件加速?为何需要硬件加速?
  • 2)ZKP的关键计算原语:
    • Multiscalar Multiplication
    • Number Theoretic Transformation
    • Arithmetic Hashes
  • 3)所需的硬件资源
  • 4)加速的限制
  • 5)硬件加速的当前现状
  • 6)硬件加速的未来方向

2. 何为硬件加速?为何需要硬件加速?

2.1 何为硬件加速?

所谓硬件加速,是指使用专用硬件来加速某运算,使得该运算运行更快和(和)更高效。

硬件加速可包含:

  • 使用现有硬件(COTS)来优化函数和代码
  • 开发针对特定任务的新硬件

现有硬件包括CPU、GPU以及FPGA,而定制硬件通常是指ASIC。
使用定制硬件来加速 具有昂贵计算任务 的历史由来已久,如:

  • Floating Point(FPU):科学计算
  • Digital Signals(DSP):音频和视频
  • Graphic(GPU):游戏、视频等
  • AI(TPU):机器学习训练和推理
  • Networking(NPU/NIC):网络处理
  • 密码学

2.2 密码学的硬件加速

当前密码学的硬件加速有:

  • 1)哈希运算:
    • SHA-NI
    • Bitcoin Miners
    • Altcoin Miners
  • 2)公钥密码学:
    • 加密(如 AES-NI)
    • 密钥交换(TLS Offload)
    • 数字签名(Intel Quick-Assist)
  • 3)全同态加密:
    • GPU
    • FPGA
  • 4)VDF(Verifiable Delay Functions)
  • 5)Zero Knowledge Proofs

2.3 为何需要硬件加速?

相比于直接计算,ZK(和non-ZK)proof生成具有很高的开销,这意味着:

  • 相比于直接做witness checking,总的Prover开销要高100万倍到1000万倍。在笔记本电脑上只需一秒运行的程序,对SNARK Prover来说,若以单线程运行,可能需要数十数百天。
  • zkEVM:
    • Scroll zkEVM:100万gas的链上Verifier,对应Prover在CPU上需要约40分钟来生成ZKP proof。比Polygon EVM的1000万+gas/second限制,开销要贵2.5万倍+。
  • zkVM:
    • Risc0 zkVM评估为约50kHz,而现代CPU为5GHz,开销要大10万倍+。

目的不同,硬件加速的设计也不同:

  • 1)吞吐量:增加单个系统处理的操作数。
  • 2)开销:降低操作开销。如Bitcoin mining rig设计为减少资金成本($/hash)和操作成本(watts/hash)。
  • 3)延迟:降低某个操作的延迟。如zkBridge通过降低proof生成时长来实现更快的finality。

2.4 ZKP中需加速的内容

每种证明系统及其关联实现,可能具有不同的计算需求。
尽管如此,最贵的3大计算操作主要为:

  • Multiscalar Multiplication(MSM)
  • Number Theoretic Transformation(NTT)
  • Arithmetic Hashes(如Poseidon)

在这里插入图片描述
不同证明系统生成proof所需的运算类型主要由所采用的承诺方案决定:

  • SNARKs:通常约65%的事件用于MSM和NTT运算。
  • STARKs:约65%的时间用于NTT和哈希运算。

3. ZKP的关键计算原语

3.1 MSM及其加速

Multiscalar Multiplication(MSM)为:

  • 对多个scalar multiplications求和的算法。
  • 可将其看成是elliptic curve points与scalars做‘dot product’的运算。
  • 基于该算法特性,很容易对每个或每组scalar multiplication进行并行化,可将其切分并在不同的硬件引擎上计算,最后再累加在一起。

可有多种优化方式来降低计算MSM所需的计算量,如:

  • 对于larger sized MSM,Pippenger算法可将计算开销由linear降低为约 O ( n / log ⁡ ( n ) ) O(n/\log(n)) O(n/log(n))
  • 更换point坐标表示(如Affine、Jacobian)以及更换曲线表示(如Edwards),也可降低单个曲线运算所需的field运算数。

MSM加速存在的问题为:

  • 当将MSM计算转移出host device时,scalars和points必须已送给加速器。可用的通讯带宽会限制加速器的最大可能性能。
    在这里插入图片描述

3.2 NTT及其加速

Number Theoretic Transformation(NTT)用于对两个多项式做乘法运算的算法:

  • 可将其看成是对有限域元素的FFT/DFT
  • 常用算法如Cooley-Tukey可将复杂度由 O ( N 2 ) O(N^2) O(N2)降低为 O ( N log ⁡ N ) O(N\log N) O(NlogN)

在这里插入图片描述
NTT加速存在的问题为:

  • 当将NTT运算自host device转移时,scalars也必须移送到加速器。可用的通讯带宽会限制加速器的最大可能性能。
  • 基于NTT的算法属性,NTT并不容易并行化,每个元素必须与多个其它元素交互,意味着不容易切分。
  • 此外,这些元素必须保存在内存中供操作,从而要求高内存。
    在这里插入图片描述

3.3 Arithmetic hash及其加速

需要Arithmetic hash的原因在于:

  • 许多ZKP用例中包含证明知道某哈希preimage,或使用哈希、Merkle roots 以及 Merkle inclusion paths来高效表示电路之外的数据。
  • 在ZKP证明系统中,Arithmetic hash函数(如Poseidon、Rescue Prime)常用于替换传统哈希函数(如SHA)。
  • 尽管Arithmetic hash原生计算更昂贵,但当用于电路中时,其效率更高,即Arithmetic hash具有更少的约束数。
  • 可选择多种算法参数来对系统中的Arithmetic hash进行实例化,不同的选择会影响计算开销(如field size、prime、round数、MDS矩阵结构等)。
  • Arithmetic hash的高效实现主要受模乘运算驱动。

4. 所需的硬件资源

4.1 模乘运算

不过,MSM、NTT、Hash等运算的底层原语为:

  • 有限域运算和曲线ECC运算
  • 有限域运算和曲线ECC运算 主要由 模乘运算(ModMul)支配
  • Naively模乘运算为 O ( N 2 ) O(N^2) O(N2),如384-bit曲线ECC运算,要比256-bit的贵约2.25倍。
    在这里插入图片描述
    高层运算的性能开销取决于不同的特性,如:
  • 运算数量
  • field size
  • curve point size
  • point表示方式(如Affine vs. Jacobian)
  • Prime/Modulus特性
  • 运算复杂度(如Poseidon的 x 5 x^5 x5 vs. x 7 x^7 x7
  • 等等

根据这些特性,通常可计算出高层运算 所需的ModMul运算总数。

4.2 选择合适的硬件

已知所有的计算开销都有模乘运算支配,因此,选择的硬件平台应可快速且便宜地执行大量模乘运算。

评估硬件性能时,主要看:

  • 硬件乘法器数量
  • 硬件乘法器size
  • 每个指令的速度/频率

如以下硬件资源示例:
在这里插入图片描述
其中Mul Power计算规则为:

  • 乘法器数量 * 乘法器size * 频率 / 1000

5. 加速的限制

硬件加速的2个关键元素为:

  • 1)算法:
    • 应选择“硬件友好”的算法。如现有硬件(COTS)GPU具有数千个核,适于可高度并行化的算法。
    • 此外,高效算法应致力于减少所需(如模乘)运算数量,来减少总的计算开销。
  • 2)高效代码实现:
    • 一旦找到了高效、“硬件友好”算法,该算法需调整为更好地适配硬件能力。
    • 为改进性能,实际代码实现应尽可能多的使用硬件资源。这通常需要利用底层汇编原语。

加速的限制为:

  • 乘法并不是唯一所需的资源
  • 其它一些非计算资源也可能成为瓶颈,如:
    • 内存:【如有时NTT会受限于内存访问速度。】
      • 内存容量(如12GB)
      • 快速内存(如DDR、HBM)
    • 高速数据传输通讯(如PCIe v4)【如当前的GPU和FPGA用于NTT加速时,不受限于计算资源,而取决于host与加速器之间的数据移动能力。】
    • 其它计算资源和算术单元

当前的加速陷阱主要为:

  • 1)通讯。过去数年来,数据移动越来越成为‘big data’系统的瓶颈。高度并行化的算法计算 通常比 数据移动 要更快。
  • 2)Amdahl’s Law(阿姆达尔定律):“当提升系统的一部分性能时,对整个系统性能的影响取决于:1、这一部分有多重要;2、这一部分性能提升了多少。”
    • 若MSM/NTT/Arithmetic Hash运算占约65%,则完全移除这些运算将把证明生成速度提升3倍。

6. 硬件加速的当前现状

一个生产级别的ZKP硬件加速举例:

  • 当前Filecoin为最大的生产级别的ZKP系统,每天处理100万+ ZKP。
  • Filecoin采用‘Proof-of-Replication’(PoRep)ZKP证明。
  • 每个PoRep中包含:
    • 470GB的Poseidon Hashing:在CPU上运行需要约100分钟,在GPU上需要1分钟。
    • 10个具有约1300万约束的Groth16 Proofs:
      • 需要约45亿次MSM运算(约42亿次在G1的MSM运算,以及约3亿次在G2的MSM运算)
      • 在CPU上运行需要约60分钟,而在GPU上需要3分钟。

目前网上有GPU和FPGA的不同种类的硬件加速库和试验。ZPrize.io是超赞的资源库,可找到代码并学习优化以及当前性能。
在这里插入图片描述

7. 硬件加速的未来方向

ZKP硬件加速的未来方向有:

  • 改进算法(如改进MSM算法)
  • 改进原语(如新的哈希函数)
  • 改进证明系统(如更少的总运算数)
  • 简化证明:
    • reduced函数和(或)通信
    • STARKs:无MSM
    • Nova:无NTT
  • 改进代码实现
  • 定制化硬件(如ASICs)

参考资料

[1] 2023年5月Kelly Olson在ZKP MOOC上的分享视频 ZKP MOOC Lecture 16: Hardware Acceleration of ZKP

ZKP加速系列博客

  • Multi-scalar multiplication: state of the art & new ideas
  • 采用特殊硬件指令对密码学算法加速
  • 零知识证明的硬件加速
  • STARK/SNARK加速小技巧
  • 借助FPGA硬件对Multi-Scalar Multiplication加速
  • 基础算法优化——Fast Modular Multiplication
  • Ingonyama团队的ZKP加速
  • ZKP加速 GPU/FPGA/ASIC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/92457.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ant-vue1.78版a-auto-complete表单自动搜索返回列表中的关键字标红

a-auto-complete表单自动搜索返回列表中的关键字标红 通常在做关键字标红的场景,都是后端返回html结构,前端直接渲染实现,但是如果需要前端处理的话,实现也是很简单的,接下来我直接上应用场景吧 应用场景就是通过关键…

Three.js实现模型,模型材质可拖拽效果 DragControls

Three.js提供了一个拖拽的API DragControls 用于实现模型材质拖拽效果 DragControls:是一个用于在Three.js中实现拖拽控制的辅助类。它简化了在Three.js中实现拖拽物体的过程。 DragControls的构造函数接受三个参数: objects:一个包含需要…

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像...

原文链接:http://tecdat.cn/?p24346 在今天产品高度同质化的品牌营销阶段,企业与企业之间的竞争集中地体现在对客户的争夺上(点击文末“阅读原文”获取完整代码数据)。 “用户就是上帝”促使众多的企业不惜代价去争夺尽可能多的客…

(笔记三)opencv图像基础操作

强调:本文只为学习记录做笔记 详细可参考opencv官网 :https://docs.opencv.org/4.1.1/d0/d86/tutorial_py_image_arithmetics.html (1)将cv2的BGR模式改为RGB模式 #!/usr/bin/env python # -*- coding:utf-8 -*- ""&q…

【Go 基础篇】Go语言数组内存分析:深入了解内部机制

在Go语言中,数组是一种基本的数据结构,用于存储一系列相同类型的元素。虽然数组在应用中非常常见,但了解其在内存中的存储方式和分配机制仍然是一个重要的课题。本文将深入探讨Go语言数组的内存分析,揭示数组在内存中的布局和分配…

微信小程序 - 2023年最新版手机号快捷登录详细教程

前言 最近开发公司手机快捷登录的功能&#xff0c;花费了不少时间&#xff0c;这里附上详细教程。 这里以海底捞小程序的图片为例&#xff0c;如有侵权请联系小编删除。 代码如下 <button open-type"getPhoneNumber" getphonenumber"getPhoneNumber"…

【事务】事务特性、隔离级别、传播属性、失效场景理解及场景模拟

文章目录 事务四大特性通过什么实现特性&#xff1f; 事务隔离级别为什么要设置隔离级别&#xff1f;如何设置隔离级别&#xff1f;事务并发问题模拟&#xff1f;读未提交1.脏读&#xff1a;2.不可重复读&#xff1a;3.幻读&#xff1a; 如何解决事务并发啊&#xff1f; 事务传…

驶向高效运营,StarRocks 助力蔚来汽车数据分析再升级

作者&#xff1a;蔚来汽车数字化业务发展部大数据团队 小编导读&#xff1a; 蔚来汽车是一家全球化的智能电动汽车公司&#xff0c;是高端智能汽车市场的先驱及领跑者。蔚来致力于通过提供高性能的智能电动汽车与极致用户体验&#xff0c;为用户创造愉悦的生活方式。 为了提升…

ClickHouse 使用

CREATE DATABASE test on cluster ck_00_1repl; DROP TABLE local_t_ordt_order on cluster ck_00_1repl; 创建本地 local 表 CREATE TABLE test.local_order_db_t_order on cluster ck_00_1repl ( forder_id_hash String, forder_id String, fuid Int32, forder_type Int32…

Git结合Gitee的企业开发模拟

本系列有两篇文章&#xff1a; 一是另外一篇《快速使用Git完整开发》&#xff0c;主要说明了关于Git工具的基础使用&#xff0c;包含三板斧&#xff08;git add、git commit、git push&#xff09;、Git基本配置、版本回退、分支管理、公钥与私钥、远端仓库和远端分支、忽略文…

25 Linux可视化-Webmin和bt运维工具

25 Linux可视化-Webmin和bt运维工具 文章目录 25 Linux可视化-Webmin和bt运维工具25.1 Web运行环境简介25.2 Webmin的安装及使用25.2.1 安装webmin25.2.2 Webmin使用演示 25.3 bt(宝塔)的安装及使用25.3.1 安装宝塔25.3.2 宝塔Web登录Linux服务器25.3.3 找回宝塔登录密码 学习视…

springboot实战(一)之项目搭建

环境准备 ideajdk1.8springboot版本 2.7.15 项目开始 1.打开idea&#xff0c;点击new project 2.选择spring initillizr 核对&#xff1a;Server Url是否是&#xff1a;start.spring.io&#xff0c;然后根据自己依次设置项目名称、存储位置和包名&#xff0c;如下&#xff…