SuperNova论文赏析

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.rhkb.cn/news/75492.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

责任链模式

责任链模式 1、定义: 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求 ,如果能则处理; 如果不能则传递给链上的下一个对象 2、场景: 大学中奖学…

如何用python做自然语言处理

如何用python做自然语言处理 使用Python进行自然语言处理(NLP)是非常常见和强大的。以下是一些基本步骤: 安装所需的库: 首先,您需要安装一些用于自然语言处理的Python库,如NLTK(自然语言工具包…

二十三种设计模式第十九篇--命令模式

命令模式是一种行为设计模式,它将请求封装成一个独立的对象,从而允许您以参数化的方式将客户端代码与具体实现解耦。在命令模式中,命令对象充当调用者和接收者之间的中介。这使您能够根据需要将请求排队、记录请求日志、撤销操作等。 命令模…

(具体解决方案)训练GAN深度学习的时候出现生成器loss一直上升但判别器loss趋于0

今天小陶在训练CGAN的时候出现了绷不住的情况,那就是G_loss(生成器的loss值)一路狂飙,一直上升到了6才逐渐平稳。而D_loss(判别器的loss值)却越来越小,具体的情况就看下面的图片吧。其实这在GAN…

arcgis字段计算器

1、两字段叠加。要求待叠加的字段类型为文本或字符串类型。如下: 2、字符串部分提取。

为Win12做准备?微软Win11 23H2将集成AI助手:GPT4免费用

微软日前确认今年4季度推出Win11 23H2,这是Win11第二个年度更新。 Win11 23H2具体有哪些功能升级,现在还不好说,但它会集成微软的Copilot,它很容易让人想到多年前的“曲别针”助手,但这次是AI技术加持的,Co…

编写SPI_Master驱动程序_新方法

编写SPI_Master驱动程序_新方法 文章目录 编写SPI_Master驱动程序_新方法一. SPI驱动框架1.1 总体框架1.2 怎么编写SPI_Master驱动1.2.1 编写设备树1.2.2 编写驱动程序 二、 编写程序2.1 数据传输流程2.2 写代码 致谢 参考资料: 内核头文件:include\lin…

Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】

文章目录 Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】前言探究隐藏网络端口netstat分析隐藏网络端口的原理关键数据结构隐藏网络端口源码 效果演示 Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】 前言 Rookit是个老生常谈的话…

python中*与**的使用

文章目录 前言一、*与**在函数定义时二、*与**在函数调用时 前言 在python中*与**的使用要区分是在函数定义时还是在函数调用时。 一、*与**在函数定义时 def deng(*args,**kwargs):print(args)print(kwargs)deng(1,2,3,a 4,b 5)在函数定义时参数前面使用*,代表…

vue echart3个饼图

概览:根据UI设计需要做3个饼图且之间有关联,并且处理后端返回的数据。 参考链接: echart 官网的一个案例,3个饼图 实现思路: 根据案例,把数据处理成对应的。 参考代码: 1.处理后端数据&am…

Android Tencent Shadow 插件接入指南

Android Tencent Shadow 插件接入指南 插件化简述一、clone 仓库二、编译运行官方demo三、发布Shadow到我们本地仓库3.1、安装Nexus 3.x版本3.2、修改发布配置3.3、发布仓库3.4、引用仓库包 四、编写我们自己的代码4.1、新建项目导入maven等共同配置4.1.1、导入buildScript4.1.…

DoIP学习笔记系列:(四)用CAPL脚本读取DID的关键点

文章目录 1. 如何在CAPL中读取DID?1.1 避坑如何新建CAPL工程,在此不再赘述,本章主要分享一下如何在CAPL中调用DoIP接口、diag接口进行DoIP和诊断的测试。 1. 如何在CAPL中读取DID? 通常在实际项目中,会有很多DID,各种版本号、各种观测量,如果手动点,显然很麻烦,如果要…

PHP实现首字母头像

<?php $name"哈哈"; $logoletter_avatar($name);echo <img src".$logo." style" border-radius: 50%;">;function letter_avatar($text) {$total unpack(L, hash(adler32, $text, true))[1];$hue $total % 360;list($r, $g, $b) hs…

【网络基础进阶之路】设计网络划分的实战详解

PS&#xff1a;本要求基于华为的eNSP模拟软件进行 具体要求&#xff1a; 完成步骤&#xff1a; 1、对192.168.1.0/24进行子网划分 2、对每一个路由器进行IP的配置 3、开始静态路由的书写&#xff0c;在写之前&#xff0c;我们可以先对每一个路由器写一条通向右边的缺省路由&…

最不透明的211!大幅度扩招!但数据分析太难做了!

一、学校及专业介绍 中国传媒大学&#xff08;Communication University of China&#xff09;&#xff0c;简称“中传”&#xff0c;位于首都北京市&#xff0c;是中华人民共和国教育部直属的信息传播领域行业特色大学&#xff0c;国家“双一流”建设高校&#xff0c;国家“21…

【新版系统架构补充】-七层模型

网络功能和分类 计算网络的功能 &#xff1a;数据通信、资源共享、管理集中化、实现分布式处理、负载均衡 网络性能指标&#xff1a;速率、带宽&#xff08;频带宽度或传送线路速率&#xff09;、吞吐量、时延、往返时间、利用率 网络非性能指标&#xff1a;费用、质量、标准化…

组合总和 II——力扣40

文章目录 题目描述法一 回溯 题目描述 法一 回溯 class Solution{ public:vector<pair<int, int>>freq;vector<vector<int>> res;vector<int> seq;void dfs(int pos, int rest){//如果目标值为0&#xff0c;说明可能有一个组合或者rest本身为0 …

flask处理表单数据

flask处理表单数据 处理表单数据在任何 web 应用开发中都是一个常见的需求。在 Flask 中&#xff0c;你可以使用 request 对象来获取通过 HTTP 请求发送的数据。对于 POST 请求&#xff0c;可以通过 request.form 访问表单数据。例如&#xff1a; from flask import Flask, r…

Kafka的配置和使用

目录 1.服务器用docker安装kafka 2.springboot集成kafka实现生产者和消费者 1.服务器用docker安装kafka ①、安装docker&#xff08;docker类似于linux的软件商店&#xff0c;下载所有应用都能从docker去下载&#xff09; a、自动安装 curl -fsSL https://get.docker.com | b…

DeepVO 论文阅读

论文信息 题目&#xff1a;DeepVO Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks 作者&#xff1a;Sen Wang, Ronald Clark, Hongkai Wen and Niki Trigoni 代码地址&#xff1a;http://senwang.gitlab.io/DeepVO/ (原作者并没有开源…