SuperNova论文赏析

news2024/11/17 21:18:31

1. 引言

前序博客有:

  • Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记

卡内基梅隆大学 Abhiram Kothapalli 和 微软研究中心 Srinath Setty 2022年论文《SuperNova: Proving universal machine executions without universal circuits》,为Nova的扩展版,开源代码见:

  • https://github.com/jules/supernova(Rust)
  • https://github.com/hero78119/SuperNova(Rust)【活跃开发中】

本文主要参考:

  • 2023年3月视频分享 SuperNova with Srinath and Abhiram
  • 2022年8月在Session at Crypto 2022上分享 Nova: Recursive Zero-Knowledge Arguments from Folding Schemes - Abhiram Kothapalli
  • 2023年4月视频分享 zkStudyClub: Supernova (Srinath Setty - MS Research)

2. Nova回顾

2.1 IVC计算模型

所谓IVC(Incremental Verifiable Computation)计算模型,是指:

  • 对于(非确定性)函数 F F F 和 statement ( n , z 0 , z n ) (n, z_0, z_n) (n,z0,zn),证明存在 z 0 = z 0 ′ z_0=z_0' z0=z0 z i + 1 ′ ← F ( z i ′ , w i ) z_{i+1}'\leftarrow F(z_i', w_i) zi+1F(zi,wi),使得 z n = z n ′ z_n=z_n' zn=zn
    在这里插入图片描述

IVC(Incremental Verifiable Computation)最早由Valiant在其2008年论文[Val08] Incrementally verifiable computation or proofs of knowledge imply time/space efficiency 中首次提出,其核心思想为:
在这里插入图片描述
IVC的关键在于,随着迭代次数的增加,其proof size并不会增加。具体为:
在这里插入图片描述
不过,其中存在的问题在于:

  • 实际实现时,在电路中验证SNARK proof是昂贵的。

2.2 Nova(本文称为NIVC):为针对单个指令的IVC

从SuperNova的角度来看Nova(本文称为NIVC):

  • Nova为针对单个指令的IVC。

Nova通过引入Folding scheme,在 F ′ F' F中不再做任何proof验证工作:
在这里插入图片描述

2.3 Folding Schemes

交互式folding scheme是指Prover P P P和Verifier V V V交互式地将"2个claim ( u 1 , w 1 ) , ( u 2 , w 2 ) ∈ R (u_1,w_1),(u_2,w_2)\in R (u1,w1),(u2,w2)R" reduce为 “1个claim ( u , w ) ∈ R (u,w)\in R (u,w)R”。
Folding scheme需满足如下属性:

  • Completeness完备性:若 u 1 , u 2 u_1,u_2 u1,u2为satisfiable的,则 u u u也是satisfiable的。
  • Knowledge Soundness可靠性:若Prover可输出satisfying w w w,则Prover必然知道satisfying w 1 , w 2 w_1,w_2 w1,w2
  • Efficiency高效性:Verifier “做Folding操作”,必须比, “对某instance做check操作(即验证proof)” ,要便宜很多。

在这里插入图片描述
以上交互式folding scheme可通过Fiat-Shamir Transformation 来实现非交互式folding scheme。
已知某NP的非交互式folding scheme,通过运行folding Verifier, F ′ F' Fverifiably fold u i u_i ui U i U_i Ui:【fold前后的3个instance具有相同的结构和相同的size。
在这里插入图片描述

2.4 针对R1CS约束系统的Folding Scheme

标准R1CS表示为:
在这里插入图片描述
其中:

  • Z = ( W , x , 1 ) Z=(W,x,1) Z=(W,x,1) W W W为witness vector, x x x为public input/output vector。

需在标准R1CS表示的基础之上,额外引入error vector E E E和scalar u u u,从而构建出Relaxed R1CS:
在这里插入图片描述
其中:

  • Z = ( W , x , u ) Z=(W,x,u) Z=(W,x,u) W W W为witness vector, x x x为public input/output vector。
  • u = 1 , E = 0 ⃗ u=1,E=\vec{0} u=1,E=0 ,则为标准R1CS。即可将标准R1CS看成是Relaxed R1CS的特例情况。

然后是结合具有加法同态属性的承诺方案,来实现对Relaxed R1CS的Folding Scheme:【为避免Prover作弊,并 实现Verifier succinctness,需将 ( E , W ) (E,W) (E,W)一起作为witness,并提前在statement中公开其承诺值 ( E ˉ , W ˉ ) (\bar{E},\bar{W}) (Eˉ,Wˉ)。】
在这里插入图片描述

3. SuperNova

3.1 NIVC计算模型

所谓NIVC(Non-uniform IVC)计算模型,是指:

  • 对于(非确定性)指令集 F 1 , ⋯   , F l F_1,\cdots, F_l F1,,Fl、控制函数 φ \varphi φ 和 statement ( n , z 0 , z n ) (n, z_0, z_n) (n,z0,zn),证明存在 z 0 = z 0 ′ z_0=z_0' z0=z0 z i + 1 ′ ← F φ ( z i ′ , w i ) ( z i ′ , w i ) z_{i+1}'\leftarrow F_{\varphi(z_i', w_i)}(z_i', w_i) zi+1Fφ(zi,wi)(zi,wi),使得 z n = z n ′ z_n=z_n' zn=zn
    在这里插入图片描述

以上为SuperNova核心思想,SuperNova为对Nova的扩展,理论上可将SuperNova用于实现虚拟机。在递归过程中,每个step可动态选择所执行的指令,不再需要在每个step实现 所有指令集 的电路,而是,在每个step只需实现 实际用到的指令 的电路。

SuperNova实现了"a la carte(按菜单点菜)" cost profile:

  • pay only for what is executed。

在这里插入图片描述

3.2 SuperNova的Folding Scheme

Nova中要求 fold前后的3个instance(claim)具有相同的结构和相同的size。
而SuperNova中,针对所支持的每个指令,构建了一个Running Claim(又名Running Instance):
在这里插入图片描述
其中:

  • 每个step的running instance集合 { U i , 1 , U i , 2 , ⋯   , U i , l } \{U_{i,1},U_{i,2}, \cdots, U_{i,l}\} {Ui,1,Ui,2,,Ui,l}可 以Merkle tree或multi-set hash等成熟技术来表示,因为实际在每个step仅使用该running instance集合中的一个,实际电路中没必要枚举所有的running instance。
  • p c i pc_i pci为program counter,用于:
    • 决定集合 { U i , 1 , U i , 2 , ⋯   , U i , l } \{U_{i,1},U_{i,2}, \cdots, U_{i,l}\} {Ui,1,Ui,2,,Ui,l} 中哪个running instance参与Fold。
    • 决定用Fold结果 来 更新集合 { U i + 1 , 1 , U i + 1 , 2 , ⋯   , U i + 1 , l } \{U_{i+1,1},U_{i+1,2}, \cdots, U_{i+1,l}\} {Ui+1,1,Ui+1,2,,Ui+1,l} 中哪个running instance。
  • 基于控制函数 φ \varphi φ w i , z i w_i,z_i wi,zi,来决定下一个step的program counter p c i + 1 pc_{i+1} pci+1

Nova系列博客

  • Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记
  • Nova 和 SuperNova:无需通用电路的通用机器执行证明系统
  • Sangria:类似Nova folding scheme的relaxed PLONK for PLONK
  • 基于Nova/SuperNova的zkVM
  • SuperNova:为多指令虚拟机执行提供递归证明
  • Lurk——Recursive zk-SNARKs编程语言
  • Research Day 2023:Succinct ZKP最新进展
  • 2023年 ZK Hack以及ZK Summit 亮点记
  • 基于cycle of curves的Nova证明系统(1)
  • 基于cycle of curves的Nova证明系统(2)
  • Nova代码解析
  • Nova中 Vitalik R1CS例子 的 folding scheme
  • 基于Nova的MinRoot VDF实现
  • 基于Nova的SHA256证明
  • Nova-Scotia代码解析

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

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

相关文章

36.利用解fgoalattain 有约束多元变量多目标规划问题求解(matlab程序)

1.简述 多目标规划的一种求解方法是加权系数法,即为每一个目标赋值一个权系数,把多目标模型转化为一个单目标模型。MATLAB的fgoalattain()函数可以用于求解多目标规划。 基本语法 fgoalattain()函数的用法: x fgoalattain(fun,x0,goal,weig…

计蒜客T1116——验证子串

C实现验证子串的功能:今天复习了一下数据结构的串部分的内容,突然想起来子串匹配的实现,于是计蒜客随便找一道题写一下,核心的代码为裁剪子串和字符串比较两个内容,建议理解背诵,考研大概率会考。 子串裁剪 string Sf…

让这款音频转文字免费软件帮你解放双手吧

嘿,朋友们!你是不是经常遇到这样的场景——你听到一段精彩的演讲、音乐或者语音笔记,却又不方便手动输入文字?别担心,音频转文字技术将解救你出困境!说到这,你是不是也对这项技术动心了呢?想知道…

dbfirst下让efcore生成的model继承于一个公共的类

)1 Make entities inherit from a base class in Entity Framework Core DB First https://davecallan.com/make-entities-inherit-base-class-in-entity-framework-core-db-first/ 通过EF Core Power Tools vs扩展插件实现 1.1)安装扩展Install the…

组织门户支持成员自主公开,快速搭建内容|ModelWhale 版本更新

大暑三秋近,林钟九夏移,ModelWhale 迎来新一轮的版本更新,期待为你带来更好的使用体验。 本次更新中,ModelWhale 主要进行了以下功能迭代: • 新增 门户内容支持成员自主公开(团队版✓ ) • …

uni、css——制作表格样式的模型

案例展示 这里以5列做展示&#xff08;可随意调节&#xff09; 案例代码 <view class"list"><view class"item" v-for"(item,index) in list" :key"index">1</view> <!-- 有内容 --><view clas…

Git 主要命令和操作流程(来自B站黑马)

其中 git 查看日志有好些参数&#xff0c;黑马总结了下&#xff0c;这里记录一下 git 1og--prettyoneline --a11 --graph --abbrev-commit oneline 就是在同一行显示&#xff0c;graph 是以层次关系显示, --abbrev-commit 是查看唯一标识符。那么这么长的命令&#xff0c;每次…

spring-boot-maven-plugin使用

spring-boot-maven-plugin这个插件有7个目标&#xff1a; spring-boot:build-image 使用构建包将应用程序打包到OCI映像中。 spring-boot:build-info 根据当前MavenProject spring-boot:help 显示有关spring-boot-maven插件的帮助信息。 调用mvn-spring-boot:help-Ddetailtr…

Spark写PGSQL分区表

这里写目录标题 需求碰到的问题格式问题分区问题&#xff08;重点&#xff09; 解决完整代码效果 需求 spark程序计算后的数据需要往PGSQL中的分区表进行写入。 碰到的问题 格式问题 使用了字符串格式&#xff0c;导致插入报错。 val frame df.withColumn("insert_t…

一语道破 python 迭代器和生成器

简而言之&#xff1a;迭代器是一个抽象化的概念&#xff0c;在python中表示访问数据集合中元素的一种方式&#xff1b;生成器也是一个抽象化的概念&#xff0c;在python 中&#xff0c;边循环边生成所需数据&#xff0c;是一种时间换空间的方法。从访问数据方式上来看&#xff…

应急响应-主机后门webshell的排查思路(webshell,启动项,隐藏账户,映像劫持,rootkit后门)

0x00 windows主机后门排查思路 针对主机后门windows&#xff0c;linux&#xff0c;在对方植入webshell后&#xff0c;需要立即响应&#xff0c;排查出后门位置&#xff0c;以及排查对外连接&#xff0c;端口使用情况等等 排查对外连接状态&#xff1a; 借助工具&#xff1a;p…

T31开发笔记:librtmp拉流测试

若该文为原创文章&#xff0c;转载请注明原文出处。 T31使用librtmp拉流并保存成FLV文件或H264和AAC文件。 librtmp编译在前面有教程&#xff0c;自行编译。 实现的目的是想要获取获取rtmp的AAC流并播放&#xff0c;实时双向对讲功能。 一、硬件和开发环境 1、硬件&#xff1…

Linux6.31 Kubernetes 二进制部署

文章目录 计算机系统5G云计算第二章 LINUX Kubernetes 部署一、二进制搭建 Kubernetes v1.201.操作系统初始化配置2.部署 etcd 集群3.Kubernetes 集群架构与组件4.部署 Master 组件5.部署 Worker Node 组件6.部署 CNI 网络组件——部署 flannel1&#xff09;K8S 中 Pod 网络通信…

Android 版本 对应的 API版本

Android 14&#xff08;开发者预览版&#xff09; 如需详细了解平台变更&#xff0c;请参阅 Android 14 文档。 Android 13&#xff08;API 级别 33&#xff09; 如需详细了解平台变更&#xff0c;请参阅 Android 13 文档。 Android 12&#xff08;API 级别 31、32&#xf…

《每天5分钟玩转kubernetes》读书笔记

笔记 概念 Pod是脆弱的&#xff0c;但应用是健壮的。 kubelet运行在Cluster所有节点上&#xff0c;负责启动Pod和容器。kubeadm用于初始化Cluster。kubectl是k8s命令行工具。通过kubectl可以部署和管理应用&#xff0c;查看各种资源&#xff0c;创建、删除和更新各种组件。 …

推荐一款非常简单实用的数据库连接工具Navicat Premium

Navicat Premium是一款非常实用的数据库连接工具&#xff0c;别再用HeidiSQL和idea自带的数据库连接了&#xff0c;看完这篇文章&#xff0c;赶紧把Navicat Premium用起来吧。 首先&#xff0c;需要获取Navicat Premium的安装包&#xff0c;可以通过以下网盘链接下载&#xff0…

谷歌联合CMU提出全新语义金字塔概念,无需额外训练使LLMs学会执行视觉任务

​ 论文链接&#xff1a;https://arxiv.org/abs/2306.17842 代码仓库&#xff1a;https://github.com/google-research/magvit/ 在目前的大模型社区中&#xff0c;发展较为成熟的当属以ChatGPT为代表的纯语言模型&#xff08;LLMs&#xff09;&#xff0c;以GPT-4为代表的多模态…

【大数据】ELK最简入门案例(带你进入ELK世界)

文章目录 1. 前言2. 安装3. 启动ELK启动Elasticsearch启动Kibana启动Logstash 4. 测试ELK环境 本文通过最简单纯正的案例带你入门ELK世界。 1. 前言 ELK是Elasticsearch、Logstash、Kibana的缩写&#xff0c;如果对Elasticsearch、Logstash、Kibana不是很了解&#xff0c;可以…

2023华数杯C题完整模型代码

华数杯C题完整论文模型代码已经完成&#xff0c;文末获取&#xff01; 母亲的心理健康状况对婴儿的成长和发展有重要的影响。本研究使用大数据分析方法&#xff0c;探索了母亲的心理健康状况、婴儿的行为特征以及婴儿的睡眠质量之间的相关性。我们采集了大量的数据&#xff0c;…

Python零基础入门(十一)——异常处理

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python入门专栏&#xff1a;《Python入门》欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; 码字不易&#xff0c;如果觉得文章不…