sonobe:针对IVC的fold arithmetic电路实例

2024-06-03 16:52

本文主要是介绍sonobe:针对IVC的fold arithmetic电路实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 引言

近日,arnaucube发推宣称 在EVM链(Optimistic)上验证了首个Nova+CycleFold proof,对应开源代码实现见:

  • https://github.com/privacy-scaling-explorations/sonobe(Rust + Solidity)

sonobe为:

  • 0xPARC和PSE团队联合开发的folding schemes库
  • 采用模块化结构
  • 用于Incremental Verifiable computation (IVC) 场景
  • 支持多个folding schemes和decider setups,支持用户按需选择
  • 致力于将folding schemes推向实用化,并促进其proof在EVM链上的验证。

在这里插入图片描述

所谓folding scheme,是指高效证明:
z n = F ( ⋯ F ( F ( F ( F ( z 0 , w 0 ) , w 1 ) , w 2 ) , ⋯ ) , w n − 1 ) z_n=F(\cdots F(F(F(F(z_0,w_0),w_1),w_2),\cdots),w_{n-1}) zn=F(F(F(F(F(z0,w0),w1),w2),),wn1)
其中:

  • w i w_i wi为每个递归步骤中额外的witness。

在这里插入图片描述
Sonobe基本流程为:

  • 1)定义要折叠的电路,即前端,支持arkworks、Circom、Noir等。

  • 2)设置所使用的folding scheme方案,如Nova+CycleFold。CycleFold改进了Nova中的cycle of curves使用:
    在这里插入图片描述
    其中,Nova电路与CycleFold电路之间的组合方式为:
    在这里插入图片描述

  • 3)设置生成final proof的final decider,如基于Pasta curves的Spartan、基于BN254的Groth16等。分链上链下两大类:

    • 3.1)On-chain decider
      在这里插入图片描述
    • 3.2)Off-chain decider
  • 4)生成decider verifier。

当前已实现的Folding schemes有:

  • Abhiram Kothapalli、Srinath Setty 和 Ioanna Tzialla 2021年论文 Nova: Recursive Zero-Knowledge Arguments from Folding Schemes
  • Abhiram Kothapalli 和 Srinath Setty 2023年论文 CycleFold: Folding-scheme-based recursive arguments over a cycle of elliptic curves

正在实现中的Folding schemes有:

  • Abhiram Kothapalli 和 Srinath Setty 2023年论文 HyperNova: Recursive arguments for customizable constraint systems
  • Liam Eagen 和 Ariel Gabizon 2023年论文 ProtoGalaxy: Efficient ProtoStar-style folding of multiple instances

2. Sonobe用例

2.1 sonobe-btc:链上Bitcoin light client

sonobe-btc 为利用Sonobe实现的链上Bitcoin light client:

  • 使用Nova来验证比特币上前10万个区块的proof of work
  • 在Optimistic L2链上以Groth16来做该zkSNARK IVC proof验证

开源代码见:

  • https://github.com/dmpierre/sonobe-btc(Solidity+Rust)

运行该light client的开销有:

  • 33h of compute on an aws ec2 c6i.4xlarge instance (16 cores, 32gb RAM) = 26.64 USD
  • Contract deployment + verification on Optimism = 0.91 USD,交易详情见:https://optimistic.etherscan.io/address/0x83c2acbbcc5e223be030288b5e5afb0b80e96f3f

参考资料

[1] 2024年4月19日arnaucube twitter 在EVM链上验证了首个Nova+CycleFold proof
[2] sonobe docs

这篇关于sonobe:针对IVC的fold arithmetic电路实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027566

相关文章

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss