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.rhkb.cn/news/115052.html

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

相关文章

2D-2D对极几何中的基本矩阵、本质矩阵和单应矩阵

本文主要参考高翔博士的视觉SLAM十四讲第二版中的7.3章节内容。文章目录 1 对极约束2 本质矩阵E3 单应矩阵 1 对极约束 现在,假设我们从两张图像中得到了一对配对好的特征点,如图7.9所示(假如后面我们有若干对这样的匹配点,根据这…

烟草企业物流管理信息系统的分析与设计(论文+源码)_kaic

摘要 在经济高速发展的今天,物流业已经成为支撑国民经济的基础性产业。作为一种新型服务业,物流业集仓储、运输、信息等为一体,发展成为复合型战略性产业。S烟草企业设计的物流管理信息系统利用B/S模式的三层结构,基于JSP技术和J…

Django(9)-表单处理

django支持使用类创建表单实例 polls/forms.py from django import forms class NameForm(forms.Form):your_nameforms.CharField(label"Your name",max_length100)这个类创建了一个属性,定义了一个文本域,和它的label和最大长度。 polls/vi…

go语言kafka入门

消息队列:一种基于异步通信的解耦机制,用于在应用程序或系统组件之间传递消息和数据 消息队列相关概念: 生产者(Producer):生成并发送消息到消息队列中的应用程序或系统组件。 消费者(Consumer&…

微服务事务管理(Dubbo)

Seata 是什么 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 一、示例架构说明 可在此查看本示例完整代码地址&#x…

【GO】LGTM_Grafana_Tempo(1)_架构

最近在尝试用 LGTM 来实现 Go 微服务的可观测性,就顺便整理一下文档。 Tempo 会分为 4 篇文章: Tempo 的架构官网测试实操跑通gin 框架发送 trace 数据到 tempogo-zero 微服务框架使用发送数据到 tempo 第一篇是关于,tempo 的架构&#xff…

0828|C++day6 菱形继承+虚继承+多态+抽象类+模板

一、思维导图 二、今日知识回顾 1&#xff09;多态 父类的指针或者引用&#xff0c;指向或初始化子类的对象&#xff0c;调用子类对父类重写的函数&#xff0c;进而展开子类的功能。 #include <iostream> using namespace std;class Zhou { private:string name;int age…

eclipse/STS(Spring Tool Suite)安装CDT环境(C/C++)

在线安装 help -> eclipse marketplace 可以发现&#xff0c;我所使用eclipse给我推荐安装的CDT是10.5版本 离线安装 下载离线安装包 下载地址&#xff1a;https://github.com/eclipse-cdt/cdt/blob/main/Downloads.md 可以看到利息安装包主要有如下四大类&#xff0c;…

【Kali Linux高级渗透测试】深入剖析Kali Linux:高级渗透测试技术与实践

&#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初阶、C…

(vue)Vue项目中使用jsPDF和html2canvas生成PDF

(vue)Vue项目中使用jsPDF和html2canvas生成PDF 效果&#xff1a; 安装与使用 1.&#xff1a;安装jsPDF和html2canvas npm install jspdf html2canvas2.在需要生成PDF文档的组件中引入jsPDF和html2canvas <template><div><el-button type"primary"…

Django(7)-项目实战-发布会签到管理系统

本文使用django实现一个简单的发布会签到管理系统 登录功能 模板页面 sign/templates/index.html <!DOCTYPE html> <html> <head><title>Login Page</title> </head> <body><h1>发布会管理</h1><form action=&qu…

视频融合平台EasyCVR视频汇聚平台关于小区高空坠物安全实施应用方案设计

近年来&#xff0c;随着我国城市化建设的推进&#xff0c;高楼大厦越来越多&#xff0c;高空坠物导致的伤害也屡见不鲜&#xff0c;严重的影响到人们的生命安全。像在日常生活中一些不起眼的小东西如烟头、鸡蛋、果核、易拉罐&#xff0c;看似伤害不大&#xff0c;但只要降落的…

无涯教程-Android - DatePicker函数

Android Date Picker允许您在自定义用户界面中选择由日,月和年组成的日期。为此功能,android提供了DatePicker和DatePickerDialog组件。 在本教程中,我们将通过DatePickerDialog演示日期选择器的用法, DatePickerDialog是一个包含DatePicker的简单对话框。 为了显示DatePicker…

RTSP/Onvif视频服务器EasyNVR安防视频平台服务器频繁重启的问题解决方案

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议&#xff0c;将前端接入设备的音视频资源进行采集&#xff0c;并转码成适合全平台、全终端分发的视频流格式&#xff0c;包括RTSP、RTMP、FLV、HLS、WebRTC等格式。平台可拓展性强、部署轻快&#xff0c;在安防监控领域有着广泛…

决策树(Decision Tree)

决策树的定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点&#xff08;node&#xff09;和有向边&#xff08;directed edge&#xff09;组成。结点有两种类型: 内部结点&#xff08;internal node&#xff09;和叶结点&#xff08;leaf node&#xff0…

Linux的内存理解

建议 Mysql机器 尽量不要硬swap,如果是ssd磁盘还好。Free命令 free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存 输出简介: Mem 行(第二行)是内存的使用情况。Swap 行(第三行)是交换空间的使用情况。total 列显示系统总的可用物理内存和交换…

curl通过webdav操作alist

创建目录: url202320230828;curl -v -u "admin":"这里是密码" -X MKCOL "http://127.0.0.1:5244/dav/my189tianyi/${url2023}/" 上传文件: curl -v -u "admin":"这里是密码" -T /tmp/aa.json "http://127.0.0.1:52…

Android Activity 启动流程 二:setContentView

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、概览二、setContentView&#xff08;&#xff09;三…

springboot集成es 插入和查询的简单使用

第一步&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.2.5.RELEASE</version></dependency>第二步&#xff1a;…

iTOP-RK3588开发板Android12 设置系统默认不休眠

修改文件&#xff1a; device/rockchip/rk3588/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults. xml 文件&#xff0c;如下图所示&#xff1a; - <integer name"def_screen_off_timeout">60000</integer> <integer name&q…