zk-Bench:SNARKs性能对比评估工具
1. 引言
JENS ERNSTBERGER等人2023年论文《zk-Bench: A Toolset for Comparative Evaluation and Performance Benchmarking of SNARKs》。
zk-Bench,定位为:
- 定位为首个公钥密码学性能评估基准测试框架和工具,重点关注通用ZKP系统的实测评估。
现有其它性能评估工具:
- 1)https://github.com/anoma/zkp-compiler-shootout:评估了RISC0、Miden、Triton、Plonk、Halo2等。
- 2)https://github.com/delendum-xyz/zk-benchmarking:评估了RISC0和Miden。
当前,使用zk-Bench:
- 1)收集了9个库所实现的13条不同椭圆曲线数据
- 2)评估了ZKP开发的5个工具
- 3)提供了Plonk证明系统驱动的密码学协议的评估工具,对达百万级电路的精度为6%-32%

zk-Bench架构中包含3大部分:
- 1)arithmetic backend:算术化后端,覆盖了有限域运算和椭圆曲线运算。
- 2)circuit backend:电路后端
- 3)dual frontend:双前端:
- 3.1)Zkalc:为JavaScript库和公开网站:用于:
- 评估密码学运算的执行时间
- 不同库和编程语言的性能对比,并图示
- 3.2) zk-Harness:为web应用。以展示每种ZKP开发工具或库,在不同负载下的计算时长、内存、proof size。
- 3.1)Zkalc:为JavaScript库和公开网站:用于:
ZKP系统中包含3大类算法:
- 1) S e t u p ( p p ) − > ( p k , v k ) Setup(pp)->(pk,vk) Setup(pp)−>(pk,vk):以公共参数 p p pp pp为输入,计算并输出证明密钥 p k pk pk和验证密钥 v k vk vk。
- 2) P r o v e ( p k , x , w ) − > π Prove(pk,x,w)->\pi Prove(pk,x,w)−>π:以证明密钥 p k pk pk、instance x x x、witness w w w为输入,有 ( x , w ) ∈ R (x,w)\in\mathcal{R} (x,w)∈R,计算并输出proof π \pi π。
- 3) V e r i f y ( v k , x , π ) − > 0 / 1 Verify(vk,x,\pi)->0/1 Verify(vk,x,π)−>0/1:以验证密钥 v k vk vk、instance x x x、proof π \pi π为输入,若该proof有效,则输出1,否则输出0。

其中:
- 绿色边框:表示前端。前端操作有:
- Circuit
- Constraint System
- Witness Generation
- 红色边框:表示后端。后端操作有:
- Setup
- Prover
- Verifier
- 灰色背景:表示公开输入
- 蓝色背景:表示秘密输入
- 实线边框:表示链下操作
- 虚线边框:表示链上操作
ZKP系统中,相同的运算,可具有不同的表示形式:
- R1CS
- Plonkish

不同算术库和椭圆曲线的性能对比为:

所用的各种测试机器配置情况为:

不同库的BN254和BLS12-381基础运算(Field Addition和Field Multiplication)性能对比为:

ZKP bench系列博客
- 为何需关注各ZKP方案的benchmarks?
- zkVM设计性能分析
相关文章:
zk-Bench:SNARKs性能对比评估工具
1. 引言 JENS ERNSTBERGER等人2023年论文《zk-Bench: A Toolset for Comparative Evaluation and Performance Benchmarking of SNARKs》。 zk-Bench,定位为: 定位为首个公钥密码学性能评估基准测试框架和工具,重点关注通用ZKP系统的实测评…...
【Linux】NTP服务器配置、时间修改
查看当前系统时间date修改当前系统时间date -s "2018-2-22 19:10:30"查看硬件时间hwclock --show修改硬件时间hwclock --set --date "2018-2-22 19:10:30"同步系统时间和硬件时间hwclock --hctosys保存时钟clock –w1.设置NTP Server服务检查系统是否安装n…...
毕业设计基于SpringMVC+Mybatis+Bootstrap的电影院管理系统源码+数据库
<<电影院管理系统>> 电影院管理系统:SpringMVCJSPTomcatMybatisBootstrapJqueryAnimateCSSLayerJS 项目部署:该项目是IDEA版本,Maven项目 前端依赖: Bootstrap-3.4.1Animate.css- 4.1.1Jquery-3.6.0Layer-v3.5.1B…...
vantUI(Tabbar标签页)浏览器返回上一页的失效问题
在开发中遇到这样一个问题,由页面1切换到页面2,再点击浏览器的回退,无法回退到页面1。 开始以为是路由配置的有问题,但是子页面可以正常回退,因为replace只是替换路由,而不会往history栈中记录路由&#x…...
【算法】Prim算法(求最小生成树)
题目 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E),其中 V 表示图中点的集合,E…...
go语言,yaml实现简单的workflow工作流
目录 1.创建一个yaml文件,名字可以是student.yaml 2.创建go文件测试 3.执行结果 本文章内容,只是一个简单的案例,但足够映射到一个大的项目中。 工作流作用:工作流的作用就是通过yaml配置文件,将关于本工作流的一个…...
BaiduMallServcie
说明 本文档指导业务开发步骤 BaiduMallServcie 说明一. 登录业务1.1 数据库设计1.1.1 管理员表1.1.2 角色表1.1.3 关联表 管理员表与角色表关联1.1.4 权限表1.1.5 关联表 角色表与权限表关联1.1.6 管理员登录日志表1.1.7 查询权限示例1.2 添加用户一. 登录业务 1.1 数据库设…...
vue3+jsx+antd的插槽写法之一
如果在jsx里面直接这样按照官方的写法是会报错的 正确写法是:...
Shell 学习之 if 命令
1. 执行流程 在 Shell 脚本中,if 是一个 控制流语句,用于进行条件判断,根据条件的结果执行相应的操作。 # 首先,Shell 会检查表达式 condition 返回的 boolean 值。 # 如果 condition 的值为真,则执行 then 代码块&a…...
android 同步 服务器 时间
要将 Android 设备与服务器同步时间,可以通过以下两种方式实现: NTP 协议同步时间 NTP(Network Time Protocol)是一种网络协议,用于同步计算机的时间。Android 设备可以使用 NTP 协议来同步服务器时间。 Android 应…...
10、电路综合-基于简化实频的宽带匹配电路设计方法
10、电路综合-基于简化实频的宽带匹配电路设计方法 网络综合和简化实频理论学习概述中的1-9介绍了SRFT的一些基本概念和实验方法,终于走到了SRFT的另一个究极用途,宽带匹配电路的设计。 1、之前的一些回顾与总结 之前也给出了一些电路综合的案例&…...
N-130基于springboot,vue校园社团管理系统
开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本系…...
Syntax Error: TypeError: this.getOptions is not a function的解决(Vue)
报错信息: TypeError: this.getOptions is not a function 这个是在运行项目是遇到的问题 这个报错是类型错误,this.getOptions 不是一个函数 。这个错误一般就是less-loader库里的错误。 主要是less-loader版本太高,不兼容this.getOptions…...
使用 kube-downscaler 降低Kubernetes集群成本
新钛云服已累计为您分享772篇技术干货 介绍 Kube-downscaler 是一款开源工具,允许用户定义 Kubernetes 中 pod 资源自动缩减的时间。这有助于通过减少非高峰时段的资源使用量来降低基础设施成本。 在本文中,我们将详细介绍 kube-downscaler 的功能、安装…...
LeetCode热题100——哈希表
哈希表 1.两数之和2.字母异位词分组3.最长连续序列 1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。可以按任意顺序返回答案。 // 题解思路:使用哈…...
Kubeadm
目录 绪论:实验步骤 1、环境准备 2、所有节点安装docker 3、所有节点安装kubeadm,kubelet和kubectl 4、部署K8S集群 5、部署 Dashboard 6、安装Harbor私有仓库 master(2C/4G,cpu核心数要求大于2) 192.168.…...
【Overload游戏引擎细节分析】PBR材质Shader---完结篇
PBR基于物理的渲染可以实现更加真实的效果,其Shader值得分析一下。但PBR需要较多的基础知识,不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染,其理论较多,需要的基础知识也较多,我在这就不再写一遍了&…...
C++设计模式_18_State 状态模式
State和Memento被归为“状态变化”模式。 文章目录 1. “状态变化”模式1.1 典型模式 2. 动机 (Motivation)3. 代码演示State 状态模式3.1 常规方式3.2 State 状态模式 4. 模式定义5. 结构( Structure )6. 要点总结7. 其他参考 1. “状态变化”模式 在组件构建过程中…...
详解final, abstract, interface关键字
一.final关键字 1.final关键字介绍 ——final关键字可以去修饰类、方法、属性和局部变量 2.final关键字的作用 1)final修饰类,这个类不能被其他类继承 2)final修饰方法,方法不能被重写 3)final修饰属性,属…...
统计特殊四元组
题记: 给你一个 下标从 0 开始 的整数数组 nums ,返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 : nums[a] nums[b] nums[c] nums[d] ,且a < b < c < d 示例 1: 输入: nums [1,2,3…...
JekyllNet .Net 版本的Jekyll , 你博客 文档的静态生成利器 。
若君只欲一篇而尽知 JekyllNet 今可如何用,此文即其总册。 项目入口 仓库地址:https://github.com/JekyllNet/JekyllNet文档网站:https://jekyllnet.helpGitHub Pages 站点入口(仓库 Pages):https://jekyllnet.github.io/JekyllNe…...
Cosmos-Reason1-7B部署教程:Docker镜像免配置+7860端口快速启用
Cosmos-Reason1-7B部署教程:Docker镜像免配置7860端口快速启用 1. 项目概述 Cosmos-Reason1-7B是NVIDIA推出的7B参数多模态视觉语言模型(VLM),专注于物理理解和思维链推理能力。作为Cosmos世界基础模型平台的核心组件,它能够处理图像和视频…...
Janus-Pro-7B效果展示:手写体/表格/多语言混合OCR识别准确率实测
Janus-Pro-7B效果展示:手写体/表格/多语言混合OCR识别准确率实测 1. 引言 你有没有遇到过这样的场景?翻出一张老照片,背面是长辈用钢笔写下的寄语,字迹有些潦草,想把它转成电子版保存,却一个字也认不出来…...
小觅相机‘凉了’之后,我们如何用它的SDK和开源工具链构建自己的SLAM数据集?
从废弃硬件到研究利器:小觅相机SDK与开源工具链的SLAM数据集构建指南 当一款硬件产品的厂商突然消失,官网关闭、技术支持中断,那些被遗弃的设备往往会被贴上"电子垃圾"的标签。但作为一名SLAM研究者或爱好者,你是否想过…...
Visio高效绘制神经网络卷积层:从基础到三维呈现
1. Visio绘制神经网络卷积层的入门指南 第一次用Visio画神经网络结构时,我盯着满屏的工具栏发懵——这玩意儿比Photoshop的图层还复杂。但摸索半天后发现,只要掌握几个核心功能,画卷积层其实比用PPT简单十倍。先说说最基础的形状选择…...
别再只加Mask了!手把手教你用FlashAttention实现真正的Sliding Window Attention(附代码)
突破传统误区:用FlashAttention实现高效滑动窗口注意力的实战指南 在Transformer模型优化领域,许多开发者对滑动窗口注意力(Sliding Window Attention, SWA)存在一个普遍误解——认为只需在注意力矩阵上添加滑动窗口掩码就能实现线性复杂度。这种错误认…...
避坑指南:lidar_align标定IMU外参时,loader.cpp源码修改与运动轨迹设计的那些关键细节
避坑指南:lidar_align标定IMU外参的核心细节与实战优化 在自动驾驶和机器人定位领域,激光雷达与IMU的联合标定是系统搭建的关键环节。许多开发者在初次使用lidar_align工具时会遇到各种问题——从源码适配的困惑到标定结果的不可靠。本文将深入剖析两个最…...
显卡驱动深度清理指南:用DDU解决驱动残留难题
显卡驱动深度清理指南:用DDU解决驱动残留难题 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller 你是…...
卷积计算常见误区解析:为什么你的结果和理论值对不上?
卷积计算常见误区解析:为什么你的结果和理论值对不上? 在图像处理和深度学习领域,卷积操作是基础中的基础。但令人惊讶的是,即使是经验丰富的开发者,在实际编码时也常常遇到计算结果与预期不符的情况。这就像做菜时严格…...
为什么头部AI工厂已全面切换PyTorch 3.0静态图训练?揭秘2024年Q2实测吞吐提升3.8倍、成本下降41%的关键配置
第一章:PyTorch 3.0静态图训练的企业级演进全景PyTorch 3.0标志着深度学习框架从动态优先范式向动静统一架构的关键跃迁。其核心突破在于TorchDynamo Inductor后端的深度融合,使torch.compile()不再仅是实验性优化器,而成为企业级生产训练流…...
