zk-Bench:SNARKs性能对比评估工具

2023-10-28 04:30

本文主要是介绍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。

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性能对比评估工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/290690

相关文章

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom