当前位置: 首页 > article >正文

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设计性能分析

http://www.kler.cn/a/106312.html

相关文章:

  • SOLIDWORKS Toolbox:一键自动化,让紧固件与零部件管理更高效
  • 基于opencv制作GUI界面
  • 消息中间件分类
  • 计算机网络WebSocket——针对实习面试
  • 深入理解Flutter生命周期函数之StatefulWidget(一)
  • 第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字
  • 【Linux】Linux+Nginx部署项目
  • Django viewsets 视图集与 router 路由实现评论接口开发
  • 大数据Flink(一百零四):SQL任务参数配置
  • 【ARM AMBA Q_Channel 详细介绍】
  • react-组件间的通讯
  • tftp服务的搭建
  • 京东(天猫)数据分析:2023下半年茶饮料市场高速增长,东方树叶一骑绝尘
  • pytorch 入门 (四)案例二:人脸表情识别-VGG16实现
  • 为什么虚拟dom会提高性能?
  • LSTM 与 GRU
  • 十九、类型信息(1)
  • 贪心区间类题目
  • 如何使用手机蓝牙设备作为电脑的解锁工具像动态锁那样,蓝牙接近了电脑,电脑自动解锁无需输入开机密码
  • 【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。
  • 竞赛 深度学习人脸表情识别算法 - opencv python 机器视觉
  • springboot的缓存和redis缓存,入门级别教程
  • JS初步了解闭包(含实践)
  • 带你深入了解队列(c/cpp双版本模拟实现)
  • 4. 寻找两个正序数组的中位数
  • 【C++初阶】类和对象——构造函数析构函数拷贝构造函数