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

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.lryc.cn/news/212803.html

相关文章:

  • 【Linux】NTP服务器配置、时间修改
  • 毕业设计基于SpringMVC+Mybatis+Bootstrap的电影院管理系统源码+数据库
  • vantUI(Tabbar标签页)浏览器返回上一页的失效问题
  • 【算法】Prim算法(求最小生成树)
  • go语言,yaml实现简单的workflow工作流
  • BaiduMallServcie
  • vue3+jsx+antd的插槽写法之一
  • Shell 学习之 if 命令
  • android 同步 服务器 时间
  • 10、电路综合-基于简化实频的宽带匹配电路设计方法
  • N-130基于springboot,vue校园社团管理系统
  • Syntax Error: TypeError: this.getOptions is not a function的解决(Vue)
  • 使用 kube-downscaler 降低Kubernetes集群成本
  • LeetCode热题100——哈希表
  • Kubeadm
  • 【Overload游戏引擎细节分析】PBR材质Shader---完结篇
  • C++设计模式_18_State 状态模式
  • 详解final, abstract, interface关键字
  • 统计特殊四元组
  • 腾讯云轻量应用服务器“镜像”怎么选择合适?
  • Ruby模块和程序组织
  • 14、SpringCloud -- WebSocket 实时通知用户
  • 智能井盖传感器推荐,万宾科技助力城市信息化建设
  • 3D模型格式转换工具HOOPS Exchange对工业级3D产品HOOPS的支持与应用
  • table 表体滚动, 表头、表尾固定
  • 第57篇-某钩招聘网站加密参数分析【2023-10-31】
  • C语言数据结构之数据结构入门
  • 如何知道服务器的某个端口是否打开
  • 【ICCV‘23】One-shot Implicit Animatable Avatars with Model-based Priors
  • 关于息肉检测和识别项目的总结