Boojum:zkSync的高性能去中心化STARK证明系统

news2024/10/5 16:21:55

1. 引言

2023年7月17日zkSync官方twitter Say hello to Boojum宣称在不regenesis的情况下,将zkSync Era迁移至Boojum证明系统。

Boojum为STARK证明系统(Plonk+FRI),开源代码见:

  • https://github.com/matter-labs/era-boojum/tree/main(Rust)

其特点为:

  • 采用PLONK形式的算术表示:使得ZK电路相对易于开发、审计、维护和升级。
  • 采用FRI多项式承诺方案:基于Goldilocks域 p = 2 64 − 2 32 + 1 p=2^{64}-2^{32}+1 p=264232+1
  • 提供了自动并行化witness generation,且witness generation函数定义简洁,如|(a, b)| a + b。witness generation用时在考虑Prover性能时不可忽略。
  • 易于扩展:用户可 以多种方式添加自定义门类型,如如增加一些特别的多项式,或复用某些“通用列”。根据自定义电路的扩展接口,可自动化生成prover、verifier、recursive verifier。从而提供高效的开发流程。
  • 单一技术栈:以Rust语言来表示。对于GPU prover的重计算部分,采用CUDA C++编写,但提供了Rust bindings。
  • 性能卓越,Prover仅要求16GB RAM,从而促进未来Prover的去中心化。

Celer Network的https://github.com/celer-network/zk-benchmark中,专门对SHA256做了benchmark,具体场景为:

  • 定义一个电路,用于计算 N = 2 k N=2^k N=2k个字节数据的sha256,其中:
    • 一个隐私输入 x x x:其中 len ( x ) = N = 2 k \text{len}(x)=N=2^k len(x)=N=2k
    • 一个公开输入: h = sha256 ( x ) h=\text{sha256}(x) h=sha256(x)
func benchmark(x, h):
    assert(sha256(x) == h)

在测试报告中,对如下方案进行了对比:【本轮测试未启用GPU加速】

  • 1)Circom + snarkjs/rapicsnark:
  • 2)gnark:
  • 3)arkwroks:
  • 4)Halo2(KZG):
  • 5)Plonky2
  • 6)Starky
  • 7)Boojum

其中不同方案的参数为:

框架算术表示承诺方案其它配置
Circom + snarkjs/rapicsnarkR1CSGroth16BN254 Scalar域
gnarkR1CSGroth16BN254 Scalar域
arkworksR1CSGroth16BN254 Scalar域
Halo2(KZG)PlonkishKZGBN254 Scalar域
Plonky2PlonkFRIGoldilocks域blowup factor = 8proof of work bits = 16query rounds = 28num_of_wires = 60 num_routed_wires = 60
StarkyAIRFRIGoldilocks域blowup factor = 2proof of work bits = 10query rounds = 90
BoojumPlonkFRIGoldilocks域

当取N=64KB时,各方案的约束数为:

证明系统约束数(64KB输入的SHA256)
Circom3200万
gnark4500万
arkworks4300万
Halo2400万行(K=22)
Plonky2800万行(K=23)
Starky 2 16 2^{16} 216个transition steps
Boojum50万行(K=19)

测试机器有2种:

  • Linux Server: 20 Cores @2.3 GHz, 384GB memory:模拟具有多CPU核和富裕内存的服务器。
  • Macbook M1 Pro: 10 Cores @3.2Ghz, 16GB memory:模拟开发机

对比结果为:

  • 1)证明时长对比情况为:
    在这里插入图片描述
    在这里插入图片描述
  • 2)内存高峰情况对比为:
    在这里插入图片描述
    在这里插入图片描述
  • 3)CPU使用率对比为:
证明系统CPU使用率(平均每核使用率)(Linux服务器)CPU使用率(平均每核使用率)(Mac开发机)
snarkjs557% (27.85%)486% (48.6%)
rapidsnark1542% (77.1%)N/A
gnark1624% (81.2%)720% (72%)
arkworks935% (46.75%)504% (50.4%)
Halo2(KZG)1227% (61.35%)588% (58.8%)
Plonky2892% (44.6%)429% (42.9%)
Starky849% (42.45%)335% (33.5%)

参考资料

[1] 2023年7月17日zkSync官方twitter Say hello to Boojum
[2] Boojum Upgrade: zkSync Era’s New High-performance Proof System for Radical Decentralization
[3] Celer Network 2023年7月14日博客The Pantheon of Zero Knowledge Proof Development Frameworks (Updated!)

zkSync系列博客

  • zkSync 概览
  • zkSync 基本原理
  • zkSync 代码解析
  • zkSync的ZK Stack:Hyperchains和Hyperbridges

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【kubernetes系列】Kubernetes之调度器和调度过程

Kubernetes之调度器和调度过程 概述 当用户请求向API server创建新的Pod时,API server检查授权、权限等没有任何问题的话,他会把这个请求交由Scheduler,由Scheduler检查所有符合该Pod要求的列表,开始执行Pod调度逻辑&#xff0c…

mongdb基本操作

如果要查看刚刚创建的数据库 创建集合class 将数据插入 进行查找练习 查看班级所有人信息 db.class.find()查看班级中年龄为10岁的学生信息 db.class.find({age:10})查看年龄大于10岁的学生信息 用到范围条件查询 db.class.find({age:{$gt:10}})查看年龄在 4—8岁之间的学…

Jetpack入门:DataBinding

目录 一、DataBinding简介 设置 Data Binding 数据绑定表达式 双向绑定 二、例子 例1:DataBinding实现文本绑定和点击事件 MainActivity : CountStart : Food: OnClickListener : activity_main: build.gradle: 运行结果…

用vscode远程连接Linux服务器后,如何创建自己的账号

1. 打开终端(Terminal)窗口 2. 在终端中创建新的用户账号 (假设您要创建的用户名为 “newuser”),在命令执行期间,需要提供新用户的密码。按照提示进行操作。 先输入登录的管理员账号密码。 再输入创建的…

2.2 Entry Text输入,文本框

2.2 Entry & Text输入,文本框 窗口主体框架 每一个tkinter应用的主体框架都包含以下几部分: 主窗口: window,及主窗口的一些基本属性(标题、大小)让窗口活起来:window.mainloop() import tkinter as…

热插拔-udev机制

一、什么是udev? udev是一种设备管理工具,以“守护进程”的形式运行,通过侦听内核发出来的uevent来管理/dev目录下的设备文件。它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。使用ud…

线程池学习(二)execute() 和 submit() 的区别

转载&#xff1a;线程池 线程提交的两种方式 ExecutorService poll3 Executors.newCachedThreadPool();for (int i 0; i < 2; i) {poll3.execute(new TargetTask());poll3.submit(new TargetTask());}execute方法 void execute(Runnable command): Executor接口中的方法s…

【3-D深度学习:肺肿瘤分割】创建和训练 V-Net 神经网络,并从 3D 医学图像中对肺肿瘤进行语义分割研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Dubbo框架保姆级教学[手把手教会你]

文章目录 Dubbo框架Dubbo(RPC)概括Dubbo支持的协议Dubbo支持的注册中心dubbo的调用结构 配置服务项目- 依赖- application-local.yml配置类注解- provider(服务提供者): 远程调用的被调用的服务实例- consumer(服务消费者): 远程调用的调用发起的服务实例 远程调用原理 Dubbo负…

34.Vue自定义指令-对象式

33.Vue自定义指令&#xff08;函数式&#xff09;_vue自定义函数_未来音律的博客-CSDN博客还有一种就是&#xff0c;我们去定义指令的时候&#xff0c;也不要去写v-前缀&#xff0c;定义指令的时候需要给指令起名字&#xff0c;那么这个指令的名字直接就叫big,而用的时候还是要…

基于linux下的高并发服务器开发(第二章)- 2.7 进程退出、孤儿进程、僵尸进程

01 / 进程退出 exit.c /*#include <stdlib.h>void exit(int status);#include <unistd.h>void _exit(int status);status参数&#xff1a;是进程退出时的一个状态信息。父进程回收子进程资源的时候可以获取到。 */ #include <stdio.h> #include <stdlib.…

青翼科技自主研发4路AD子卡FMC137

FMC137是一款基于VITA57.4标准规范的JESD204B接口FMC子卡模块&#xff0c;该模块可以实现4路14-bit、2GSPS/2.6GSPS/3GSPS ADC采集功能。该板卡ADC器件采用ADI公司的AD9208芯片&#xff0c;&#xff0c;与ADI公司的AD9689可以实现PIN脚兼容。该ADC与FPGA的主机接口通过16通道的…

word文档删除顽固的双横线

1. 选中双横线 2. 开始 - 字体 - 隐藏(勾选) 3. 顽固的双横线已成功删除

微信小程序用户登录及头像昵称设置教程(前后端)

目录 1.背景分析 2.具体需求分析 3.前端设计 3.1 用户登录 3.2 头像昵称填写&#xff08;个人信息界面&#xff09; 4.后端设计 4.1项目架构分析 4.2 代码分析 实体类 dao层 service层 controller层 工具类 5.nginx部署 6.效果演示 1.背景分析 众所周知&#x…

【Distributed】分布式Ceph存储系统之相关应用

文章目录 一、创建 CephFS 文件系统 MDS 接口1. 服务端操作1.1 在管理节点创建 mds 服务1.2 查看各个节点的 mds 服务1.3 创建存储池&#xff0c;启用 ceph 文件系统1.4 查看mds状态1.5 创建用户 2. 客户端操作2.1 客户端要在 public 网络内2.2 在客户端创建工作目录2.3 在 cep…

相册搜索功能再升级?iOS17隐藏小细节曝光,关键字搜索视频声音

据博主Ryan McLeod的最新推文透露&#xff0c;iOS 17已经隐藏了一些小细节&#xff0c;其中包括相册搜索功能的改进。用户现在可以通过在iOS 17的相册中输入关键字来快速查找含有特定声音的视频片段&#xff0c;从而提供更便捷的用户体验。例如&#xff0c;输入动物叫声的关键字…

朴素贝叶斯与贝叶斯网络详解

文章目录 一、背景1.1 贝叶斯方法的提出1.2 频率派与贝叶斯派的区别 二、分类问题三、基础知识3.1 条件概率3.2 联合概率3.3 贝叶斯公式4.1 贝叶斯网络介绍4.2 贝叶斯网络的基本结构4.2.1 head-to-head&#xff08;共同作用&#xff09;4.2.2 tail-to-tail&#xff08;共同原因…

【北大是如何考DFS的】【我们一起60天准备考研算法面试(大全)-第十六天 16/60】【DFS】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

马斯克宣布成立xAI——引领开放人工智能时代的新纪元

马斯克宣布成立xAI——引领开放人工智能时代的新纪元 &#x1f7e2;一、前言&#x1f7e2;二、马斯克的背景与愿景&#x1f7e2;三、xAI的潜在研究方向&#x1f7e2;四、xAI面临的挑战&#x1f7e2;五、xAI的潜在影响&#x1f7e2;六、xAI与OpenAI的异同&#x1f7e2;七、对Ope…

人脸识别轻量版

github地址 https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB 下载后测试 前提是安装了pytorch环境&#xff0c;原始测试py文件是这个&#xff0c;是需要用命令行执行的 为了测试方便&#xff0c;我将它改成容易debug的 """ This c…