ZKP硬件加速

news2024/9/21 10:43:59

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.coloradmin.cn/o/959766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3学习源码笔记(小白入门系列)------ 组件更新流程

目录 说明例子processComponentcomponentUpdateFnupdateComponentupdateComponentPreRender 总结 说明 由于响应式相关内容太多,决定先接着上文组件挂载后,继续分析组件后续更新流程,先不分析组件是如何分析的。 例子 将这个 用例 使用 vi…

MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布

一、MQTT介绍 1.1 什么是MQTT? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于…

WhatsApp 时事通讯,又一个强大的营销功能

有兴趣通过时事通讯有效地接触您的受众吗?如果您的客户正在使用WhatsApp,使用WhatsApp商业通讯是理想的解决方案。在这篇文章中,我们将探讨使用 WhatsApp时事通讯进行客户沟通的优势。 什么是WhatsApp时事通讯? WhatsApp时事通讯…

vuex使用Cannot find module ‘./api/index.js‘

使用vuex中出现这个问题。我的vuex的配置。 import Vue from vue import Vuex from vuex import App from ./App.vue import store from "./store"; import router from ./router; import "/assets/css/base.css"; import VueRouter from vue-router; impo…

【LeetCode75】第四十二题 删除二叉搜索数中的节点

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一棵二叉搜索树,给我们一个目标值,让我们删除节点值等于目标值的节点,并且删除之后需要保持…

【原创】H3C路由器OSPF测试

网络拓扑图 路由器配置: 路由器1上接了4跟线,分别为这四个接口配置IP地址。 # interface GigabitEthernet0/0/0port link-mode routecombo enable copperip address 2.1.1.2 255.255.255.0 # interface GigabitEthernet0/0/1port link-mode routecombo…

独立站怎么做活动策划,独立站推广方式有哪些

独立站可以获得更多的用户关注和认可,进而实现业务增长和发展,因此活动策划至关重要,那么独立站怎么做活动策划,独立站推广方式有哪些? 独立站怎么做活动策划? 1、明确目标:在开始策划之前&am…

结构化日志记录增强网络安全性

日志是一种宝贵的资产,在监视和分析应用程序或组织的 IT 基础结构的整体安全状况和性能方面发挥着至关重要的作用。它们提供系统事件、用户活动、网络流量和应用程序行为的详细记录,从而深入了解潜在威胁或未经授权的访问尝试。虽然组织历来依赖于传统的…

ROS获取目标点导航完成状态(rospy)

文章目录 ROS获取目标点导航完成状态1. Action方式2. Topic方式3. 验证4. 状态码取值 ROS获取目标点导航完成状态 1. Action方式 在ROS中,导航框架默认使用move_base,所以对于导航状态的获取往往需要往move_base的交互状态组建上考虑。 一种常见的方法…

IP代理|一文看懂IPv4与IPv6

IP作为互联网的重要的桥梁,是计算机网络相互连接进行通信而设计的协议,正是因为有了P协议,因特网才得以迅速发展成为庞大的、开放的计算机通信网络。IP代理中常常可以看到IPv4与IPv6,今天就给各位跨境老板详细解释,他们…

手写Mybatis:第6章-数据源池化技术实现

文章目录 一、目标:数据源池化技术实现二、设计:数据源池化技术实现三、实现:数据源池化技术实现3.1 工程结构3.2 数据源池化技术关系图3.3 无池化链接实现3.4 有池化链接实现3.4.1 有连接的数据源3.4.2 池化链接的代理3.4.3 池状态定义3.4.4 pushConnec…

Viobot回环使用

Viobot回环是使用词袋匹配的方式,,当新的关键帧能够匹配词袋里面记录过的关键帧时,触发回环,将设备的当前位姿拉到历史位姿。 一.上位机操作 词袋使用方法 连接上设备,先停止算法。UI上点 设置 选到 loop 选项卡&…

【分布式搜索引擎elasticsearch】

文章目录 1.elasticsearch基础索引和映射索引库操作索引库操作总结 文档操作文档操作总结 RestAPIRestClient操作文档 1.elasticsearch基础 什么是elasticsearch? 一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能 什么是…

python“梦寻”京东商品评论数据接口(含代码示例)

要通过京东的API获取商品详情评论数据,您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例,展示如何通过京东开放平台API获取商品详情评论数据: 首先,确保您已注册成为京东开放平台的开发者&#xf…

微服务-gateway基本使用

文章目录 一、前言二、gateway网关1、什么是微服务网关?2、微服务架构下网关的重要性2.1、没有网关2.2、有网关 3、gateway的功能4、gateway实战4.1、依赖配置4.2、添加网关配置4.3、添加网关启动类4.4、查看项目是否启动成功4.5、验证路由配置是否正确 三、总结 一…

全网首发!大众宝来高尔夫polo领驭迈腾帕萨特奥迪A4A6B6B7等老车机增加带蓝牙控制的AUX解码模块,支持小程序原车按钮控制,支持外接高品质蓝牙模块

文章目录 前言1、设计指标2、PCB设计3、程序设计4、调试4.1蓝牙控制AUX解码板4.2自定义车机按钮控制其他高品质蓝牙音频模块4.3小程序使用 5、模块与车机连接方法6、结语 前言 ​ 之前写过四篇关于车机增加音频输入的方法。 1、07宝来经典车机CD收音机(RC668&…

11.Redis数据库管理命令

Redis数据库管理命令 数据库管理selectdbsizeflushall / flushdb 数据库管理 redis 中的 database 是现成的,咱们用户不能创建新的数据库,也不能删除已有的数据库~ 默认 redis 给我们提供了 16 个数据库,名字为 数字0 到数字15 这16个数据库…

【深度学习】ChatGPT

本文基于Andrej Karpathy(OpenAI 联合创始人,曾担任特斯拉的人工智能和自动驾驶视觉主管)在Microsoft Build 2023上的演讲整理而成(完整的视频在文末,直接拖到文章底部),主要分为2大部分: 1.如何训练GPT(可…

实战系列(一)| Dubbo和Spring Cloud的区别,包含代码详解

目录 1. 概述2. 核心功能3. 代码示例4. 适用场景 Dubbo 和 Spring Cloud 都是微服务架构中的重要框架,但它们的定位和关注点不同。Dubbo 是阿里巴巴开源的一个高性能、轻量级的 RPC 框架,主要用于构建微服务之间的服务治理。而 Spring Cloud 是基于 Spri…

3D开发工具HOOPS Publish如何快速创建交互式3D PDF文档?

HOOPS Publish是一款功能强大的SDK,可以创作丰富的工程数据并将模型文件导出为各种行业标准格式,包括PDF、STEP、JT和3MF。HOOPS Publish核心的3D数据模型是经过ISO认证的PRC格式(ISO 14739-1:2014),它为装配树、拓扑和几何、产品制造信息和视…