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 问题描述:…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
Spring Boot SQL数据库功能详解
Spring Boot自动配置与数据源管理 数据源自动配置机制 当在Spring Boot项目中添加数据库驱动依赖(如org.postgresql:postgresql)后,应用启动时自动配置系统会尝试创建DataSource实现。开发者只需提供基础连接信息: 数据库URL格…...
