Nova: 基于committed relaxed R1CS的IVC方案

news2024/10/5 15:33:10

Nova是INV的一种实现方案,所谓IVC是指Prover可以向Verifier证明 z i = F ( i ) ( z 0 ) z_i = F^{(i)}(z_0) zi=F(i)(z0)

最朴素的做法是直接进行i次迭代,每次迭代都进行一次zkSnark,但这样做有三个问题:

  • Prover所需内存大小为 Ω ( i ∗ ∣ F ∣ ) Ω(i∗∣F∣) Ω(iF)
  • 生成的proof不是incrementally updatable的
  • Verify时间跟 i i i有关

Nova 的整体思路是将原始的 R1CS 问题转化为一种更加灵活且支持Folding形式的relaxed R1CS,并在此基础上,进一步构造了 committed relaxed R1CS,committed relaxed R1CS主要保护了witness的机密性,然后基于 committed relaxed R1CS构建了IVC方案。

Folding Scheme是Nova构造IVC的核心,通过前面R1CS和relaxed R1CS两篇博文的讲解,相信大家对如何构造一个Folding Scheme已经有了初步了解。接下来本文将介绍如何通过Folding Scheme去构造IVC,主要包括两部分:

  • 简单回顾Folding Scheme
  • IVC讲解

1. Folding Scheme

在这里插入图片描述

上述过程可通过Fiat-Shamir Transform变为非交互,全称是non-interactive folding scheme(NIFS).

NIFS由(G,K,P,V)四个算法构成:

在这里插入图片描述

2. IVC

首先通过引入augmented function F’描述一个简单的IVC过程。令 U i 、 u i U_i、u_i Uiui为两个committed relaxed R1CS instances,其中 U i U_i Ui代表前 i − 1 i-1 i1次F’正确执行的输出(running), u i u_i ui代表前 i i i次F’正确执行的输出(incremental)。

在这里插入图片描述

F’主要干两件事:

  1. 执行incremental computation,也就是调用F输出 z i + 1 z_{i+1} zi+1
  2. 调用NIFS的verifier折叠输出 U i + 1 U_{i+1} Ui+1

需要注意的是F’并没有直接输出 U i + 1 U_{i+1} Ui+1,而是输出了 h i + 1 h_{i+1} hi+1,因为 U i + 1 U_{i+1} Ui+1包含在 u i + 1 . u_{i+1}. ui+1.x中,则在下一步折叠 u i + 1 . u_{i+1}. ui+1.x和 U i + 1 . U_{i+1}. Ui+1.x时会卡住,因此这里以定长的哈希结果作为输出。

然后IVC Prover计算一个新的instance u i + 1 u_{i+1} ui+1,用来证明第 i + 1 i+1 i+1次F’执行的正确性,即证明了以上两点。

( u ⊥ , w ⊥ ) (u_{⊥},w{⊥}) (u,w)是一对平凡的instance-witness对,其中E、W和x是相应的令向量, r E = 0 、 r w = 0 r_E=0、r_w=0 rE=0rw=0 E ‾ 、 W ‾ \overline{E}、\overline{W} EW分别是E、W对应的承诺。

在第 i + 1 i+1 i+1次迭代中,IVC Prover调用F’计算 ( ( U i + 1 , W i + 1 ) , ( u i + 1 , w i + 1 ) ) ((U_{i+1},W_{i+1}),(u_{i+1},w_{i+1})) ((Ui+1,Wi+1),(ui+1,wi+1)),则相应的IVC proof π i + 1 = ( ( U i + 1 , W i + 1 ) , ( u i + 1 , w i + 1 ) ) \pi_{i+1} =((U_{i+1},W_{i+1}),(u_{i+1},w_{i+1})) πi+1=((Ui+1,Wi+1),(ui+1,wi+1))。F’具体的定义如下:

在这里插入图片描述

由于F’是能够在多项式时间内计算的,可以用一个committed relaxed R1CS 结构来表示F’执行:
( u i + 1 , w i + 1 ) ← t r a c e ( F ′ , ( v k i , U i , u i , ( i , z 0 , z i ) , w i , T ‾ ) ) (u_{i+1},w_{i+1}) \leftarrow trace(F',(vk_i,U_i,u_i,(i,z_0,z_i),w_i,\overline{T})) (ui+1,wi+1)trace(F,(vki,Ui,ui,(i,z0,zi),wi,T))
现在,我们给出IVC的完整定义:

在这里插入图片描述

使用zkSnark压缩IVC proof

上述完整的介绍了IVC过程,但还有一个问题没解决,即Prover如何去证明一个IVC proof是有效的?

很明显Prover可以使用zkSnark来证明,但如果采用 zk­SNARK 构造证明的话,需要证明诸如向量的承诺等于特定的值等复杂问题,所以Nova使用Spartan变种来压缩Nova IVC proof,这里只介绍如何使用zkSnark去证明IVC proof是有效的,细节如下:

在这里插入图片描述

参考:
Nova: Recursive Zero-Knowledge Arguments from Folding Schemes

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

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

相关文章

软件安全测试流程与方法分享(中)

安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。安全是软件产品的一个重要特性,安全测试也是软件测试重的一个重要类别,本系列文章我们与…

趁规则改变之前,转变思维

在职场和生活中,我们常常强调了解和遵守规则的重要性。无论从事哪个行业、从事何种工作,赚取收入都需要理解并适应游戏规则。然而,规则并非永远不变,它会随着竞争环境、市场条件甚至社会文化的变迁而发生变化。 举个例子&#xff…

LeetCode 打卡day57--动态规划之回文串问题

一个人的朝圣 — LeetCode打卡第57天 知识总结 Leetcode 647. 回文子串题目说明代码说明 Leetcode 5. 最长回文子串题目说明代码说明 Leetcode 516. 最长回文子序列题目说明代码说明 知识总结 今天是动态规划的回文串问题系列 Leetcode 647. 回文子串 题目链接 题目说明 给…

nginx四层转发应用

默认使用yum安装的nginx是没有额外安装的动态模块的,需要自己额外安装 ls /usr/lib64/nginx/modules/ 若是不安装stream模块,直接在nginx的配置文件中调用stream模块,重载配置文件的时候会报错识别不到stream功能 安装stream模块 yum insta…

网际奇缘:计算机网络演进、概念探秘与通信魔法!

文章目录 计算机网络概述1.1🍁🍁计算机网络的基本定义和基本功能1.2 🪶🪶计算机网络的演进过程1.2.1 🦇主机互联🦇1.2.2 🦇局域网🦇1.2.3 🦇互联网🦇1.2.4 &a…

测试编排必要性

目录 前言: 测试编排定义 测试编排和自动化 测试编排的好处 自动化的测试编排策略 自动化/编排工具 测试编排和CI/CD 学点啥 前言: 编排是一种组织和安排信息的过程,它在各种情境中都是非常重要的。在撰写文章、演讲或其他形式的表达…

学校公寓管理系统/基于微信小程序的学校公寓管理系统

摘 要 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个学生的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作…

常用特殊函数的计算机处理

常用特殊函数的计算机处理 gamma 函数 契贝谢夫多项式 契贝谢夫多项式的展开系数 ja_j^{(10)}ja_j^{(10)}01.060.010973695810.42278433707-0.002466748020.411840251880.001539768130.08157821889-0.000344234240.0742379076100.00006771065-0.0002109075 Fortran 实现&…

【雕爷学编程】Arduino动手做(136)---0.91寸OLED液晶屏模块5

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

antd——a-tree组件拖拽节点功能——技能提升

之前写过一篇文章关于: antd——使用a-tree组件实现 检索自动展开自定义增删改查功能——技能提升:http://t.csdn.cn/13qT7 现在有个需求:就是要实现节点的拖拽功能。 tree组件节点的拖拽功能实现 tree组件是有拖拽功能的,通过…

flink-conf.yaml的参数

参数 ⚫jobmanager.memory.process.size:对 JobManager 进程可使用到的全部内存进行配置, 包括 JVM元空间和其他开销,默认为 1600M,可以根据集群规模进行适当调整。⚫ taskmanager.memory.process.size:对 TaskManage…

线性代数中基向量变换参照原理

经常需要用到,又记不住,所以这里记录下来方便以后翻阅。 很重要。 截图出自书为:

Spring Boot 中的 MyBatis 是什么,如何使用

Spring Boot 中的 MyBatis 是什么,如何使用 简介 MyBatis 是一种流行的 Java 持久化框架,可以将 SQL 查询映射到对象上,并提供了简单易用的 API 来执行 CRUD 操作。Spring Boot 可以与 MyBatis 集成,提供了简化配置和自动化配置…

基于单片机的智能台灯 灯光控制系统人体感应楼梯灯系统的设计与实现

功能介绍 以STM32单片机作为主控系统;主通过光敏采集当前光线强度;通过PMW灯光调节电路,我们可以根据不同的光线亮度,进行3挡调节;通过人体红外检测当前是否有人;通过不同光线情况下使用PWM脉冲电路进行调节…

Apifox 已上架至 TitanIDE

Apifox 目前已上架至 TitanIDE 模板,为 TitanIDE 用户提供快速使用接口调试工具的入口。 可以通过 TitanIDE 的「创建项目」快速新建 Apifox 模版,开箱即用。TitanIDE 的模板包括开发者常用的 IDE 及周边开发工具,如数据建模用的 PDmaner、数…

【STM32】GPIO

一、GPIO简介 1. 基本介绍 GPIO是通用输入输出端口的简称,STM32芯片通过GPIO与外设连接,从而实现与外设的数据收发。 最基本的输出功能是由STM32控制引脚输出高、低电平,实现开关控制。如把GPIO引脚接入到LED灯控制LED亮灭,或者…

中小企业的必然选择——构建高效、安全的企业网络

在当今技术驱动的商业环境中,可靠且高效的企业网络对中小型企业的成功是至关重要的。随着对数据密集型应用的需求不断增加,无线网络技术随之迅速发展,企业必须构建一个更快、更安全的网络以保证业务安全稳定开展。本文重点讲解中小型企业网络…

常用stream方法记录

目录 过滤filter()获取最大最小值根据条件统计数量list转mapkey值唯一key值不唯一 distinct去重groupingBy分组map遍历取list中某元素组成新的listlist转数组String基本数据类型数组转换 数组转listArrays.asList()Collections.addAll基本数据类型数组转list 源码和…

阿里云绑定域名

在阿里云安全组与宝塔安全放开8081端口 server {listen 8081;server_name www.whxyyds.top;charset utf-8;location / {root /home/ruoyi/projects/ruoyi-ui;try_files $uri $uri/ /index.html;index index.html index.htm;}location /prod-api/ {proxy_set_header …

途乐证券|A股自动驾驶概念“夏日躁动”

进入7月以后,A股智能汽车产业链——尤其是自动驾驶板块,开始逐渐收复去年失地。 香港途乐证券有限公司(191883.com)是香港最优秀的股票投资平台,平台致力于为投资者提供专业、安全、诚信的股票策略服务,通过…