Polygon zkEVM R1CS与Plonk电路转换

news2024/9/28 17:25:12

1. 引言

前序博客有:

  • Polygon zkEVM的pil-stark Fibonacci状态机初体验
  • Polygon zkEVM的pil-stark Fibonacci状态机代码解析
  • rank-1 constraint system R1CS

根据
由上图可知,zkEVM会借助SNARK来“验证((验证STARK证明)的SNARK证明)”:

  • 1)将 STARK proof的约束系统evm.pilpil2circom 转换为 evm.verifier.cricom格式。详细见 Polygon zkEVM的pil-stark Fibonacci状态机初体验 第2节第8步“fibonacci generate circom”。
  • 2)再借助 circom工具STARK约束系统 转换为 R1CS约束系统表示evm.verifier.r1cs。详细见 Polygon zkEVM的pil-stark Fibonacci状态机初体验 第2节第9步“”
  • 3)再经 Compressor12_setupR1CS约束系统表示evm.verifier.r1cs 转换为 Plonk约束表示,同时会生成与 Plonk约束表示 对应的 STARK约束evm.c12.pil,以及 constant多项式的execution trace evm.c12.constPlonk辅助信息 evm.c12.exec。详细见 Polygon zkEVM的pil-stark Fibonacci状态机初体验 第2节第10步“fibonacci C12 setup”。Plonk辅助信息 evm.c12.exec 会用于后续生成 commit多项式execution trace evm.c12.commit

2. 约束表达

约束表达:

  • 1)STARK:采用execution trace来表示约束,以表格形式来表示内部程序状态的变化。如:
    序号 x x x A \mathbf{A} A l 2 ( x ) l_2(x) l2(x)多项式) B \mathbf{B} B l 1 ( x ) l_1(x) l1(x)多项式) i s I n i t i a l \mathbf{isInitial} isInitial L 1 ( x ) L_1(x) L1(x)多项式) i s L a s t \mathbf{isLast} isLast L L A S T ( x ) LLAST(x) LLAST(x)多项式)
    0 ω 0 \omega^0 ω01210
    1 ω 1 \omega^1 ω12500
    2 ω 2 \omega^2 ω252900
    ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots
    1023 ω 1023 \omega^{1023} ω10237446956166008400401
  • 2)Groth16等SNARK方案:采用R1CS来表示约束,形如 < s ⃗ , a ⃗ > ∗ < s ⃗ , b ⃗ > − < s ⃗ , c ⃗ > = 0 <\vec{s},\vec{a}>*<\vec{s},\vec{b}>-<\vec{s},\vec{c}>=0 <s ,a ><s ,b ><s ,c >=0,其中 < s ⃗ , a ⃗ > = ∑ i = 1 n s i a i <\vec{s},\vec{a}>=\sum_{i=1}^{n}s_ia_i <s ,a >=i=1nsiai为dot product, a ⃗ , b ⃗ , c ⃗ \vec{a},\vec{b},\vec{c} a ,b ,c 为每步计算的系数, s ⃗ \vec{s} s 为相应的输入。
  • 3)Halo2等SNARK方案:采用Plonk来表示约束,形如 Q m ∗ x r ∗ x l + Q l ∗ x l + Q r ∗ x r + Q o ∗ x o + Q k = 0 Q_m*x_r*x_l+Q_l*x_l+Q_r*x_r+Q_o*x_o+Q_k=0 Qmxrxl+Qlxl+Qrxr+Qoxo+Qk=0,其中 Q m , Q l , Q r , Q o , Q k Q_m,Q_l,Q_r,Q_o,Q_k Qm,Ql,Qr,Qo,Qk均为selector, x l , x r , x o x_l,x_r,x_o xl,xr,xo为相应的输入。

以PIL-STARK 中的Fibonacci为例,在验证其STARK proof的Plonk表达中,除以上 Q m , Q l , Q r , Q o , Q k Q_m,Q_l,Q_r,Q_o,Q_k Qm,Ql,Qr,Qo,Qk selector之外,还额外引入了定制门 selector Q M D S , Q C M U L Q_{MDS},Q_{CMUL} QMDS,QCMUL

附录:Polygon Hermez 2.0 zkEVM系列博客

  • ZK-Rollups工作原理
  • Polygon zkEVM——Hermez 2.0简介
  • Polygon zkEVM网络节点
  • Polygon zkEVM 基本概念
  • Polygon zkEVM Prover
  • Polygon zkEVM工具——PIL和CIRCOM
  • Polygon zkEVM节点代码解析
  • Polygon zkEVM的pil-stark Fibonacci状态机初体验
  • Polygon zkEVM的pil-stark Fibonacci状态机代码解析
  • Polygon zkEVM PIL编译器——pilcom 代码解析
  • Polygon zkEVM Arithmetic状态机
  • Polygon zkEVM中的常量多项式
  • Polygon zkEVM Binary状态机
  • Polygon zkEVM Memory状态机
  • Polygon zkEVM Memory Align状态机
  • Polygon zkEVM zkASM编译器——zkasmcom
  • Polygon zkEVM哈希状态机——Keccak-256和Poseidon
  • Polygon zkEVM zkASM语法
  • Polygon zkEVM可验证计算简单状态机示例
  • Polygon zkEVM zkASM 与 以太坊虚拟机opcode 对应集合
  • Polygon zkEVM zkROM代码解析(1)
  • Polygon zkEVM zkASM中的函数集合
  • Polygon zkEVM zkROM代码解析(2)
  • Polygon zkEVM zkROM代码解析(3)
  • Polygon zkEVM公式梳理
  • Polygon zkEVM中的Merkle tree
  • Polygon zkEVM中Goldilocks域元素circom约束
  • Polygon zkEVM Merkle tree的circom约束
  • Polygon zkEVM FFT和多项式evaluate计算的circom约束

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

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

相关文章

博安生物再次冲刺港交所上市:负债规模高企,持续出现亏损

11月30日&#xff0c;山东博安生物技术股份有限公司&#xff08;下称“博安生物”&#xff09;再次向港交所递交招股书&#xff0c;准备在港交所主板上市。据贝多财经了解&#xff0c;博安生物曾于2022年5月13日递表&#xff0c;现已“失效”。 相较于此前招股书&#xff0c;博…

【图像分割】基于神经气体网络的图像分割与量化(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

了解抖音小程序的评级。为什么我的抖音小程序申请不了某个功能?

目录前言评级评级运营规范评级周期查看评级评级对应的权益小程序评级审核驳回场景信用分常见问题为什么我的小程序不能挂载短视频&#xff1f;前言 小程序评级体系是衡量小程序整体质量的参照&#xff0c;也是小程序获取对应权益的指南&#xff0c;旨在推动、鼓励开发者提升小…

matlab如何从信号中去除60 Hz Hum电源线噪声

美国和其他几个国家的交流电流以60赫兹的频率振荡。这些振荡经常会破坏测量值并且必须减去。 最近我们被客户要求撰写关于信号去噪数据的研究报告&#xff0c;包括一些图形和统计输出。 在存在60 Hz电源线噪声的情况下研究模拟仪器输入端的开环电压。电压以1 kHz采样。 lo…

C/C++内存管理(malloc/calloc/realloc/free/new/delete/operator new/operator delete)

目录 C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free C内存管理方式:new/delete operator new与operator delete函数 new和delete的实现原理 malloc/free和new/delete的区别 (用法上和底层) 内存泄漏 C/C中程序内存区域划分&#xff1a; 1. 栈又叫堆栈…

Linux C简单服务器模型解析及完整代码

Linux C简单服务器模型解析及完整代码1.服务器端流程及解析2.服务器端代码3.客户端流程及解析4.客户端代码5.不足之处&#xff08;注&#xff1a;流程解析可结合相应代码处一起理解&#xff09;1.服务器端流程及解析 服务器端做的事情&#xff1a; 1.创建监听的套接字。 int s…

JAVA培训之数据库表关联关系

数据库表的关联关系有如下三种&#xff1a; 一对多 一对一 多对多 一对多的关系比较常见&#xff0c;我们在之前练习的都是一对多的关系操作&#xff0c;因此这里就不再重复介绍了。 1.一对一关系 在现实生活中&#xff0c;丈夫与妻子之间的关系就是一对一的关系&…

参数估计(1)-参数的点估计

为了考察总体X 的分布&#xff0c;我们将在2.4 节给出经验分布函数&#xff0c;并在总体X为连续型情形下绘制了频率直方图从中可大致看出总体的分布情况或分布形式&#xff0c;但总体分布中包含的参数往往不知&#xff0e;如何根据抽样对未知参数进行估计&#xff0c;就是本章讨…

pandas分组与聚合groupby()函数详解

一、groupby分组与聚合 分组与聚合通常是分析数据的一种方式&#xff0c;通常与一些统计函数一起使用&#xff0c;查看数据的分组情况 DataFrame.groupby(byNone, axis0, levelNone, as_indexTrue, sortTrue, group_keys_NoDefault.no_default, squeeze_NoDefault.no_default…

基于docker部署实现接口自动化持续集成

01 jenkins介绍及docker部署 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成 1、创建网络 2、下载并运行 docker:dind镜像…

思科路由器地址转换配置

思科路由器地址转换1.端口复用(PAT)2.配置PAT1.端口复用(PAT) 复用地址转换也称为端口地址转换&#xff08;Port Address Translation&#xff0c;PAT&#xff09;&#xff0c;首先是一种动态地址转换。路由器将通过记录地址、应用程序端口等唯一标识一个转换。通过这种转换&am…

Linux 负载均衡介绍

Linux 负载均衡介绍 LB LB&#xff1a;Load Balancing&#xff0c;负载均衡&#xff08;增加处理能力&#xff09;,有高可用能力&#xff0c;但不是高可用集群负载均衡集群&#xff0c;是以提高服务的并发处理能力为根本着眼点 负载均衡设备分类 1.软件负载均衡设备 (1)LVS&…

肝病患者关爱与病例管理

国内的肝病患者人数多达3亿人&#xff0c;并且还在逐年增多。 为慢性肝炎患者提供患者教育、病情自我管理、病友交流、医患交流等一系列的关怀行动&#xff0c;为医生提供病例数据管理系统平台推出了“肝病患者关爱与病例管理系统" 用户需求 平台覆盖用户群 中国肝病患者…

Thumbs.db文件取消自动生成及删除方法

一、背景 公司有一台centos服务器作为某个部门内部资料共享用,部署了samba服务。 每个用户具有自己的账户(账户不共用); 用户基本都是通过windows电脑访问samba共享文件; 最近有用户需要删除个别文件夹,发现不能删除Thumbs.db,导致文件夹也不能删除! 二、Thumbs.db是…

Java数据类型详细介绍

Java程序中要求参与的计算的数据&#xff0c;必须要保证数据类型的一致性&#xff0c;如果数据类型不一致将发生类型的转换。本文将通过示例详细说说Java中数据类型的转换&#xff0c;感兴趣的可以了解一下 1. Java数据类型 前面说到&#xff0c;程序运行时产生的临时数据我们…

继北极星项目后,又一款低成本AR眼镜开源方案:OpenAR

2018年的时候&#xff0c;Leap Motion&#xff08;Ultraleap前身&#xff09;曾开源了一款低成本、简易的AR头显方案&#xff1a;Project North Star&#xff08;北极星项目&#xff09;。该方案主要用来帮助爱好者、开发者们快速上手AR开发&#xff0c;而无需购买HoloLens等昂…

Python_文件操作

目录 一、文件编码 二、什么是文件 三、文件操作 1、打开文件 open()打开函数 2、读取文件 3、写入文件 f.write() 使用w模式 4、文件追加 类比文件写入&#xff0c;只是将‘w’-->‘a’ 5、文件操作综合案例 一、文件编码 Thinking: 计算机只能识别 0和1,那么文本文件 如何…

Delaunay三角网之逐点插入法(优化版本三)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 继续对三角网的研究,这一个版本的三角网构网思路很是巧妙,虽然仍是基于点的插入算法,但已经有些分治算法的影子,构网速度相较于前面两个版本要快很多,12万个点可以在1s内完成构网。具体的构网过程如下所述: 1…

查询运行在顶部的app包名及类名

android的ActivityManager会在logcat中打印出当前正在显示的app的包名以及类名&#xff0c;注&#xff0c;这是由ActivityManager打印&#xff0c;使用的日志TAG就是ActivityManager&#xff0c;所以我们在过虑信息时不能以自己程序的进程进行过滤&#xff0c;使用ActivityMana…

GBase 8s 产品功能-高可用和ER

GBase 8s 提供了业界领先的高可用集群技术 HAC&#xff0c; SSC&#xff0c; ER&#xff0c; 提供秒级故障 自动切换功能&#xff0c; 使数据库的可用性达到 99.999%&#xff0c; 具备如下特点&#xff1a; 通过不同方案组合&#xff0c; GBase 8s 具有搭建两地三中心、 同城双…