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…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
