nil Foundation的Placeholder证明系统(2)
前序博客:
- nil Foundation的Placeholder证明系统(1)
=nil; Foundation团队2022年11月论文《Placeholder证明系统》。[2022年11月29日版本]
8. 优化
8.1 Batched FRI
不同于单独检查每个commitment,可对其进行FRI聚合。如对多项式f0,⋯,fkf_0,\cdots,f_kf0,⋯,fk:
- 1)从transcript中获取θ\thetaθ。
- 2)计算f=f0⋅θk−1+⋯+fkf=f_0\cdot \theta^{k-1}+\cdots+f_kf=f0⋅θk−1+⋯+fk。
- 3)基于fff运行FRI,using oracles to f0,⋯,fkf_0,\cdots,f_kf0,⋯,fk。
从而可对所有committed polynomials只允许依次FRI实例。详细参看RedShift论文。
8.2 Hash By Column
不同于对每个多项式都进行commit,可对多个多项式采用相同的Merkle tree,这样可降低Prover所需提供的Merkle tree paths数量。
详细参看RedShift论文。
8.3 Hash By Subset
每个i+1i+1i+1 FRI round假定Prover发送all elements from a coset H∈D(i)H\in D^{(i)}H∈D(i)。每个Merkle leaf可包含the whole coset instead of separate values。
详细参看RedShift论文。不过RedShift作者在每个leaf中使用了更多的values,从而具有更好的性能。
8.4 FRI PoW
待续。。。。
9. Placeholder参数
本节重点讨论Placeholder参数 及其对协议安全和性能的影响。
9.1 FRI参数
令RS[F,D,ρ]\mathbf{RS}[\mathbb{F},D,\rho]RS[F,D,ρ]为Reed-Solomon code family。此处有∣D∣=n=2k,ρ=2−R(k,RN)|D|=n=2^k,\rho=2^{-R}(k,R\mathbb{N})∣D∣=n=2k,ρ=2−R(k,RN)。这意味着committing polynomials的degree bound为d=2k−Rd=2^{k-R}d=2k−R。
令r∈[1,logd=n^]r\in [1,\log d=\hat{n}]r∈[1,logd=n^]为FRI inner rounds数,lll为repetition参数。
相应的:
- Prover:O(n)\mathcal{O}(n)O(n)
- Verifier:O(logn)\mathcal{O}(\log n)O(logn)
对于每个ϵ∈(0,1]\epsilon\in (0,1]ϵ∈(0,1],令Jϵ:[0,1]→[0,1]J_{\epsilon}:[0,1]\rightarrow [0,1]Jϵ:[0,1]→[0,1]函数为:
Jϵ(X)=1−1−X(1−ϵ)J_{\epsilon}(X)=1-\sqrt{1-X(1-\epsilon)}Jϵ(X)=1−1−X(1−ϵ)
假设Δ(f,RS)=δ>0\Delta(f,\mathbf{RS})=\delta>0Δ(f,RS)=δ>0,则根据Eli Ben-Sasson 2019年论文 DEEP-FRI: Sampling Outside the Box Improves Soundness,相应的soundness error上限为:
err(δ)=2log∣D∣ϵ3∣F∣+(1−min{δ0,Jϵ(1−ρ)}+ϵlog∣D∣)l\mathbf{err}(\delta)=\frac{2\log |D|}{\epsilon^3|\mathbb{F}|}+(1-\min\{\delta_0,J_{\epsilon}(1-\rho)\}+\epsilon \log |D|)^lerr(δ)=ϵ3∣F∣2log∣D∣+(1−min{δ0,Jϵ(1−ρ)}+ϵlog∣D∣)l
9.2 Placeholder参数
当前可将circuit parameters用于FRI commitments。
令ddd为the smallest power of two,使得d≥Nrowsd\geq N_{rows}d≥Nrows。在Placeholder中,ddd定义为the highest degree of polynomials that can be committed by FRI instance。
令www为ddd-th root of unity。有d=2n^d=2^{\hat{n}}d=2n^,且n^≥Nrows\hat{n}\geq N_{rows}n^≥Nrows。
用RS[F,D,ρ]\mathbf{RS}[\mathbb{F},D,\rho]RS[F,D,ρ]来表示FRI commitments,其中:
- F\mathbb{F}F:与PLONK arithmetization中的field相同。
- DDD:为domain of n=2k=2n^+Rn=2^k=2^{\hat{n}+R}n=2k=2n^+R root of unity。
- ρ=2−R\rho=2^{-R}ρ=2−R:为可调整的参数。
Soundness error定义为:
ϵπ(δ)≤max(ϵFRI(δ),ϵIOPN,1F)\epsilon_{\pi}(\delta)\leq\max(\epsilon_{FRI}(\delta),\epsilon_{IOP}^N, \frac{1}{\mathbb{F}})ϵπ(δ)≤max(ϵFRI(δ),ϵIOPN,F1)
其中,ϵIOPN=(Jp,ν)8⋅4nF/D\epsilon_{IOP}^N=(J_{p,\nu })^8\cdot \frac{4n}{\mathbb{F}/D}ϵIOPN=(Jp,ν)8⋅F/D4n
令log∣F∣=255,ν=∣F∣−1/20,D=228\log |\mathbb{F}|=255,\nu=|\mathbb{F}|^{-1/20},D=2^{28}log∣F∣=255,ν=∣F∣−1/20,D=228,其对ϵIOPN\epsilon_{IOP}^NϵIOPN的error contribution量级为2−1282^{-128}2−128。
令ρ=1/16\rho=1/16ρ=1/16,根据上面的FRI error公式,为达到80 bits security ,需要40个verifier queries(λ\lambdaλ)。
【注意,以上参数并未考虑借助”grinding“技术,可进一步降低queries数量。】
10. Circuit性能评估
关键标识有:
标识 | 含义 |
---|---|
nnn(对应之前NrowsN_{rows}Nrows) | Rows的数量 |
NwitnessN_{witness}Nwitness | Witness Columns(又名”Advice Columns“)的数量 |
NpermN_{perm}Nperm | 包含在Permutation Argument中的Witness Columns数量 |
NselN_{sel}Nsel | Circuit中所使用的Selectors数量 |
NlookupN_{lookup}Nlookup | |
NcN_cNc | |
NPIN_{PI}NPI | |
wiw_iwi | |
cj(i)c_j^{(i)}cj(i) | |
gatei\mathbf{gate}_igatei | Gate Polynomials,0≤i<Nsel0\leq i<N_{sel}0≤i<Nsel。 |
PIiPI_iPIi | |
σ(col:i,row:j)=(col:i′,row:j′)\sigma(col:\ i, row:\ j)=(col:\ i', row:\ j')σ(col: i,row: j)=(col: i′,row: j′) | Permutation over the Table |
o\mathbf{o}o | |
fi\mathbf{f}_ifi | Witness polynomials,0≤i<Nwitness0\leq i < N_{witness}0≤i<Nwitness |
fci\mathbf{f}_{c_i}fci | Constant-related polynomials,0≤i<Nconst0\leq i < N_{const}0≤i<Nconst |
HcH_cHc | Commitment hash |
HrH_rHr | Random Oracle hash |
lHcl_{H_c}lHc | Number of bits in commitment hash |
lHrl_{H_r}lHr | Number of bits in random oracle hash |
10.1 Proof Size
Proof中包含:
- f0,comm,⋯,fNwitness−1,commf_{0,comm},\cdots,f_{N_{witness}-1,comm}f0,comm,⋯,fNwitness−1,comm:对witness多项式的承诺值。
- Acomm′,Scomm′A'_{comm},S'_{comm}Acomm′,Scomm′:为lookup承诺值。
- Pcomm,QcommP_{comm},Q_{comm}Pcomm,Qcomm
- VcommV_{comm}Vcomm:lookup相关
- T0,comm,⋯,TNperm−1,commT_{0,comm},\cdots,T_{N_{perm}-1,comm}T0,comm,⋯,TNperm−1,comm
- Values and paths with size logn\log nlogn:
- fi(y)f_i(y)fi(y) for i∈[0,Nwitness−1]i\in [0, N_{witness}-1]i∈[0,Nwitness−1]
- P(y),P(yw),Q(y),Q(yw)P(y), P(yw),Q(y), Q(yw)P(y),P(yw),Q(y),Q(yw)
- Tj(y)T_j(y)Tj(y) for j∈[0,Nperm−1]j\in [0, N_{perm}-1]j∈[0,Nperm−1]
- A′(y),S′(y),V(y),A′(yw−1),V(yw)A'(y),S'(y), V(y), A'(yw^{-1}),V(yw)A′(y),S′(y),V(y),A′(yw−1),V(yw)
- Gate-depending fi(ywμ)f_i(yw^{\mu})fi(ywμ)
- For circuit polynomials:区分point values
- Evaluation proof for the values above(lll次):
附录 nil Foundation系列博客
- nil Foundation的Solana-Ethereum Bridge Based on Light-Client State Proof Verification
- nil Foundation的基于Solana light client实现的zk-bridge方案
- nil Foundation的Mina->以太坊 bridge原型已完成
- nil Foundation的Mina-Ethereum State Proof Verification Applications
- nil Foundation的in-EVM Full Mina State Verification
- nil Foundation的Placeholder证明系统(1)
- zkLLVM:nil Foundation开发的电路编译器
参考资料
[1] ZCash Halo2 Lookup argument
[2] ZCash Halo2 Permutation argument
相关文章:
nil Foundation的Placeholder证明系统(2)
前序博客: nil Foundation的Placeholder证明系统(1) nil; Foundation团队2022年11月论文《Placeholder证明系统》。[2022年11月29日版本] 8. 优化 8.1 Batched FRI 不同于单独检查每个commitment,可对其进行FRI聚合。如对多项…...

QHash源码解读
QT版本 v5.12.10 元素 // 重点说明QHashData的函数,QHashData是QHash的基础 struct QHashData {struct Node {Node *next;uint h;};Node *fakeNext; // 永为nullNode **buckets; // Node *数组QtPrivate::RefCount ref;int size; // node个数int nodeSize; /…...

【Unity细节】RigidBody中Dynamic和Kinematic的区别
👨💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏:unity细节和bug ⭐Dynamic和Kinematic的区别⭐ 文章目录⭐Dynamic和Kinematic的区别⭐dz…...

【C++、数据结构】哈希 — 闭散列与哈希桶的模拟实现
文章目录📖 前言1. STL中哈希表的两个应用⚡1.1 🌟unordered_set1.2 🌟unordered_map2. 常见查找的性能对比💥3. 哈希表模拟实现🏁3.1 哈希的概念:3.2 哈希函数:3.3 哈希冲突:3.4 闭…...

vue 开发环境 卸载node 版本 切换新的 node 版本 mac电脑
注意:操作的机器当前是mac,先卸载,再安装 1.查看现有 node 版本 node -v2.卸载现有 node 版本, 1.卸载从node官网下载pkg安装的node sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node…...

在Linux和Windows上安装Nacos-2.1.1
记录:377场景:在CentOS 7.9操作系统安装Nacos-2.1.1。在Windows操作系统上安装Nacos-2.1.1。Nacos:Nacos: Dynamic Naming and Configuration Service。Nacos提供动态配置服务、服务发现及管理、动态DNS服务功能。版本:JDK 1.8 Na…...

解决QML debugging is enabled.Only use this in a safe environment.警告
系列文章目录 文章目录系列文章目录前言一、警告原因二、解决办法参考前言 我试图运行一个非常简单的程序,当单击退出按钮时关闭窗口,但获取以下输出,前提是包含按钮的应用程序窗口不显示: 您已启用QML调试(实际上它默认启用)&…...
华为OD机试真题JAVA实现【N进制减法】真题+解题思路+代码(20222023)
🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出描述示例一输入输出说明解题思路Code代码运行结果版权说明<...

ACM第一周---周训---题目合集.
🚀write in front🚀 📝个人主页:认真写博客的夏目浅石.CSDN 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:ACM周训练题目合集.CSDN 💬总结:…...
SCI学术论文的基本架构,以及Results、Discussion、Conclusion这三者的区别
SCI论文七大部分,各自应包含哪些内容 SCI写作——论文的结构 一篇SCI论文的大致框架包括Title, Abstract, Introduction, Methods/Methodology, Results, Discussion, Conclusion。不同的学科会有细微的变化,但大体框架基本不变。 1、标题Title 标题用…...
二叉树性质
在二叉树的第i层上至多有2^(i-1)个结点(i≥1)深度为k的二叉树至多有2^k-1个结点(k≥1)对任何一颗二叉树T,如果其叶子数为n0,度为2的结点数位n2,则n0n21满二叉树ÿ…...
二维数组操作示例
给定一个二维字符串数组,求对其按每个一维数组升序排列并按矩阵输出 //创建 String[][] twoDimension {{"A1","A2","A3"},{"B1","B2","B3"}}; List<String> arrayToList null; List<St…...

Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)
Spring Boot邮件发送(powernode CD2207)(内含教训视频源代码) 教学视频源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87452056 目录Spring Boot邮件发送(powernode CD2207&…...

FortiTalk | “三英论安全”之OT安全热门话题解读
OT安全热门话题解读 在数字化转型时代,OT/IT融合已经成为主旋律,可能很多人还没有意识到“工厂”已经不是以前的“工厂”。从封闭走向互联、从现场走向远程、从手动走向自动,这种变革带来的不仅是便捷和效率,更潜藏着巨大的网络安…...

前端开发:关于diff算法详解
前言 前端开发中,关于JS原生的内容和前端算法相关的内容一直都是前端工作中的核心,不管是在实际的前端业务开发还是前端求职面试,都是非常重要且必备的内容。那么本篇博文来分享一个关于前端开发中必备内容:diff算法,d…...

如何为报表开发工具 FastReport .NET 设置 Apache 2 Web 服务器?
FastReport .NET是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。专业版和企业版包括Fast…...
华为OD机试真题JAVA实现【出租车计费】真题+解题思路+代码(20222023)
🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明示例二输入输出说明...
MySQL 查看版本的 5 种方法
MySQL 提供了几种用于查看服务器版本的方法,本文给大家做个简单的介绍。 方法一:登录 MySQL 每次通过 mysql 客户端连接服务器之后,都会显示一个欢迎信息,里面包含了服务器的版本: mysql -uroot Enter password: **…...

【软件测试】稳定性测试怎么做,这篇文章彻底讲透了~
稳定性对产品的重要性不言而喻。 而作为质量保障,在稳定性测试方面的探索也在不断演化。记得两年前我们做稳定性测试还是基于恒定的压力,7*24小时长时间运行,关注的指标无非是吞吐量TPS的抖动、响应时间的变化趋势,以及各种资源是…...

Leetcode:198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III(C++)
目录 198. 打家劫舍 问题描述: 实现代码与解析: 动态规划(版本一): 原理思路: 动态规划(版本二): 原理思路: 213. 打家劫舍 II 问题描述:…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...