WebGPU助力客户端Crypto/ZK

news2024/11/19 14:27:03

1. 引言

前序博客:

  • CUDA入门
  • WebGPU+ZKP:客户端证明
  • WebGPU入门

正如Personae Labs团队2022年11月博客 Efficient ECDSA & the case for client-side proving 中所指出:

仅适用于高端笔记本电脑的5分钟证明生成时长,远不是可行的用户体验。为了完全隐私,不能将“生成证明的过程”直接转移到云上,这些证明必须在用户的设备上计算。否则,需要将用户的公钥明文发送到服务器来生成用户的证明,这样给了服务器巨大的能量——只要服务器愿意,就可以破坏用户的匿名性。

对于某些隐私应用来说,在客户端生成证明是必须的,但当前的现状为:

  • Client-side ZK is slow.

如以Groth16 browser benchmarks为例:

  • https://github.com/personaelabs/efficient-zk-ecdsa#run-benchmarks(JavaScript)中指出:ECDSA_verify电路对应163,239 个约束,在M1 Pro Macbook Pro电脑上运行,生成ECDSA_verify证明用时需39秒左右。
  • https://github.com/tornadocash/tornado-core#specs(JavaScript+Solidity)中指出:对于具有28271个约束的电路,其生成证明用时需10秒左右。

2. WebGPU: client-side GPU API

WebGPU为针对web的相对新的API:

  • 为WebGL(2011)的接班人
  • 由苹果在2017年通过W3C发起,目前Google和Mozilla也已参与。
  • 自2023年初,可用于Google Chrome、Safari和Firefox。
  • 采用名为WGSL的shader语言。Cuda和C++等为更底层的编程语言。
  • 当前使用时必须启用开发者模式,如:
    • chrome://flags/#enable-webgpu-developer-features
    • Firefox config flags:dom.webgpu.enabled, gfx.webgpu。

WebGPU:

  • 不仅支持图形:见https://threejs.org/examples/#webgpu_compute。
  • 还支持计算

GPU的加速性能,对Crypto/ZK的意义毋庸置疑:

  • Ingonyama指出:GPU提供了难以置信的性能,其在Crypto/ZK领域的存在将不可抹除。
  • ZPrize指出:通过将证明生成过程中的大多数耗时操作(MSM和FFT)移到GPU中执行,获奖团队的[PLONK-DIZK]证明时长提升了40%。
  • Henzinger等指出:借助硬件加速,改进了[Private Information Retrieval]的单服务器和多服务器的性能。通过硬件加速这种互补方式,可进一步提升新的PIR协议性能。

不过,以上都是对服务端GPU加速的探索,而客户端的GPU加速仍处于探索不足的阶段。

2.1 WebGPU API

WebGPU API文档可参看:

  • Mozilla开发者文档 WebGPU API

WebGPU基本架构为:
在这里插入图片描述
其主要包括:

  • GPUAdapter:为对WebGPU实现的抽象。
  • GPUDevice:为对底层视频卡的抽象。
  • GPUBuffer:包含了与GPU来回拷贝的数据。用于存储输入和输出数据。
  • Shader:为发送给GPU的代码。比C++和Cuda简单。
  • Compute pipeline:将shader和GPUBuffer(s) flow 封装给GPU,并等待结果。

WGSL shader代码示例:
在这里插入图片描述
相应的CPU和GPU性能对比为:
在这里插入图片描述

3. WebGPU for Crypto/ZK现状

现有的一些WebGPU Crypto相关基础算法库有:

  • https://github.com/geometryresearch/wgsl-poseidon(Rust+TypeScript+WGSL):基于BN254 Scalar域以WGSL实现了Poseidon哈希函数,可在浏览器内和命令行运行。
  • https://github.com/sampritipanda/msm-webgpu(WGSL+HTML+Python):实现了Vesta域的基于Pippenger算法MSM,以及其他一些关键椭圆曲线运算函数。【注意wgsl不支持u64运算,实现的是基于u32数组的modular运算。基于u32数组的modular运算也可参看https://github.com/filecoin-project/ec-gpu/中的FIELD_LIMB_BITS == 32场景。】
  • https://github.com/voidash/webgpu-examples(Rust+WGSL):实现了BLS12-381有限域运算。

4. 客户端WebGPU待研发空白

将WebGPU用于客户端Crypto/ZK,目前存在如下待研发空白:

  • 算法层:
    • 实现Multi-scalar multiplication (MSM) 和 Number-theoretic transform (NTT)以及iNTT。

Luke Pearson和Cysic团队指出:

考虑到GPU的灵活性、易于部署以及卓越的性能,坚信GPU解决方案将比ASIC方案提前数月实现。

Georgios Konstantopoulos指出:

MSM需要大量的内存,即使高度并行化之后也仍然很慢。
FFT需要对内存随机访问,使得其对硬件并不友好。
为此,市场赢家有可能是那些专注于FPGA而不是ASIC或GPU的公司。

4.1 Circom vs. WebGPU

Circom当前的开发工具有:

  • zkREPL
  • hardhat-circom

Circom可用于extremely large circuits:

  • Circom-ecda

Circom目前有:

  • Dark Forest生态。
  • 开发者教育。
  • 大量的项目和毕业生参与circom创业。

对标Circom,WebGPU需关注:

  • 开发者工具:
    • 调试工具不成熟。目前没有?
    • 大多数WGSL开发者专注于图形,而不是计算
  • 领域编程语言:
    • WGSL不错,但有些怪异。是否可将更高层的语言编译为WGSL?
  • 对消费者GPU更好的抽象:
    • 不是所有GPU都一样的(如 手机GPU vs. 电脑GPU)。WGSL能否运行在某种GPU仿真层。
  • 安全性研究:
    • 恶意输入能否DOS客户端,或者提取出私有数据?
    • 是否会存在timing攻击或者side-channel攻击?

4.2 WebGPU应用展望

WebGPU应用展望:

  • 在移动设备上实现高效ZK Prover。
  • 在浏览器中加速witness generation。
  • 分布式证明网络,使得任何笔记本电脑用户也可参与。
  • 分布式Private Information Retrieval网络。

参考资料

[1] Geometry团队Koh Wei Jie 在2023年7月zkParis上的视频分享 ZK Paris: Koh Wei Jie - Deep Dive into WebGPU

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

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

相关文章

医院小程序如何在线搭建?实战解析

在当今数字化时代,移动应用程序成为我们生活中必不可少的一部分。特别是在医疗领域,移动应用程序的需求更为迫切。为了满足这一需求,开发一个医疗小程序成为了许多医疗机构的优先选择。 在本文中,我们将分享一个实战攻略&#xff…

Linux命令awk详细用法

简介 awk 是一种强大的文本处理工具,用于在命令行环境下对文件或数据流进行逐行处理和分析。它是由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 在 1977 年开发的,并以他们三人的姓氏命名。awk 在 Unix/Linux 系统中非常常见,也有 Win…

深入浅出:手把手教你实现顺序表

一、什么是顺序表 顺序表是一种数据结构,或者说,是数据在内存中存储和管理的一种方式。顺序表要求每个数据要从第一个位置开始,依次挨着放。这就很适合使用C语言中的数组来实现。 很多朋友可能会觉得,那有啥可以讲的?我…

Shell - 加固系统配置

文章目录 #! /bin/bash # Function:对账户的密码的一些加固 read -p "设置密码最多可多少天不修改:" A read -p "设置密码修改之间最小的天数:" B read -p "设置密码最短的长度:" C read -p "设置密码失效…

C语言memcpy与memmove

C语言memcpy与memmove memcpy memcpy函数原型 void* memcpy(void* dst,const void* src,size_t size);//const修饰src,表示不应该修改src指向的数据memcpy用于实现数据的拷贝操作,将src往后的size字节数据拷贝到dst指向的空间 memcpy的实现: void*…

头歌MYSQL——课后作业1 数据库和数据表的建立、修改和删除

第1关:建立数据库 任务描述 本关任务:建立数据库 为了完成本关任务,你需要掌握: 如何创建数据库,显示已经建立的数据库 相关知识 创建数据库 创建数据库是在系统磁盘上划分一块区域用于数据的存储和管理。 命令格…

Android片段

如果你希望应用根据不同的环境有不同的外观和行为,这种情况下就需要片段,片段是可以由不同活动重用的模块化代码组件。 片段(Fragment)是活动(Activity)的一种模块化部分,表示活动中的行为或界面…

日本”闲鱼“Mercari煤炉是什么?如何做?

相信做跨境的小伙伴经常听到一个平台:日本煤炉。这是一个跨境电商平台,那么它是什么样的跨境电商平台呢?这个平台好做吗?如何卖货?带着这些问题,接下来小编为大家详细的讲解,帮助大家更好的更了…

开关电源传导发射

开关电源相较于传统的线性电源,具有工作效率高,体积小的优点,因此获得了广泛的应用。但是由于其内部开关管不停的通断,产生了大的du/dt,因此开关电源是产生传导发射的一个主要噪声源,并且由于与电源线直接连…

快速了解状态管理库Pinia及其使用方法

目录 1.pinia是什么 2.为什么要使用pinia 3.pinia的优点 4.pinia在项目中使用 ①创建一个使用pinia的Vue3项目 ②在页面使用store 1.pinia是什么 Pinia 起源于一次探索 Vuex 下一个迭代的实验,如果你学过Vue2,那么你一定使用过Vuex。Vuex在Vue2中主…

《让你的沟通结构化》考试试题及答案截图

中电金信新员工入职培训选修课《让你的沟通结构化》考试答案截图

基于STM32F103C8T6的系统板设计

针对兆易创新旗下型号GD32F103C8T6(兼容STM32F103C8T6)芯片设计的方案验证板,整板由micro USB供电通过1117稳压管稳压输出3.3V供电,中间配备唤醒按键和复位按键,两侧是从芯片引脚引出的IO口用于调试,其中有3.3V、5V电压选择,BOOT0模式选择,SWD调试接口,电源指示灯以及…

二、Mycat2 相关概念及读写分离

第三章 Mycat2 相关概念 3.1 概念描述 1、分库分表 按照一定规则把数据库中的表拆分为多个带有数据库实例,物理库,物理表访问路 径的分表。 解读:分库:一个电商项目,分为用户库、订单库等等。 分表:一张订单表数据数百万&#xff…

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测

时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测 目录 时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.时序预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU时间序列预测&a…

LoRA大模型加速微调和训练算法解读

理论 Lora( Low-Rank Adaotation),低秩自适应模型微调的方法,它冻结预训练模型的权重,并将可训练的秩分解矩阵注入到transformer架构的每一层,从而大大减少下游任务的可训练参数的数量, 怎么微调下游任务:利用LoRA对…

1.Python操作txt文本

文章目录 1.Python读取一个txt文件的内容并将其写入到另一个txt文件2.Python读取一个未知编码的文件并将其设置为指定编码格式3.Python实现txt文件中字符串的替换 1.Python读取一个txt文件的内容并将其写入到另一个txt文件 # -*- encoding:gb2312 -*- import chardetdef read_…

WebSocket 协议及其使用案例

文章目录 前言一、初识 WebSocket 协议1.1 什么是 WebSocket 协议1.2 WebSocket 与 HTTP 的关系1.3 WebSocket 握手的过程1.4 WebSocket 解决了什么问题 二、WebSocket 数据帧格式2.1 WebSocket 数据帧格式图示2.2 各字段的详细说明 三、SpringBoot 项目中引入 WebSocket3.1 创…

Meta语言模型LLaMA解读:模型的下载部署与运行代码

文章目录 llama2体验地址模型下载下载步骤准备工作什么是Git LFS下载huggingface模型 模型运行代码 llama2 Meta最新语言模型LLaMA解读,LLaMA是Facebook AI Research团队于2023年发布的一种语言模型,这是一个基础语言模型的集合。 体验地址 体验地址 …

分布式锁实现一. 利用Mysql数据库update锁

文章目录 分布式锁1、什么是分布式锁:2、分布式锁应该具备哪些条件: 基于数据库的分布式锁代码传送代码运行 分布式锁 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题…

hp惠普光影精灵5笔记本HP Pavilion Gaming-15-dk0135tx原装出厂Win10系统

原厂系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、惠普电脑管家等预装程序 适用型号: 15-dk0011tx,15-dk0018tx,15-dk0019tx,15-dk0020tx,15-dk0021tx,15-dk0038tx 15-dk0039tx,15-dk0040tx,15-dk0041tx,15-dk0125tx,15-dk0126tx,15-dk0127tx 15-dk012…