StarkWare的Recursive STARKs

news2025/1/12 20:49:14

1. 引言

StarkWare的Recursive STARKs 为首个在以太坊主网上线的,针对通用计算的recursive stark proof方案:

  • 递归证明目前已在以太坊主网上线:
    • 扩容StarkEx app
    • 扩容StarkNet
    • 用于StarkWare的SaaS scaling engine
    • 用于permissionless rollup
  • 节约了gas开销并降低延迟(同时实现开销节约和延迟降低这2点,而不是在二者间取舍平衡)
  • 为未来L3做准备:向StarkNet提交证明,因以Cairo语言编写的Recursive Verifier statement 可作为StarkNet的一个智能合约。详细可参看L3 deployments on top of the public StarkNet。即将L3的单个聚合证明提交到L2上验证,从而实现超级扩容。

借助递归证明,当前STARK可将数万个甚至数十万笔交易“roll up”为单个证明,提交到以太坊上。

1.1 Cairo

2020年6月,首个基于STARK的扩容方案——StarkEx,部署在以太坊主网。StarkEx:

  • Prover:负责做大量链下计算,并为这些计算的正确性生成一个STARK-proof。
  • Verifier:在链上验证该proof。

首个部署的约束由StarkWare的工程师手写的,后续引入了Cairo编程语言来支持证明通用计算。Cairo全称为CPU Algebraic Intermediate Representation (AIR),包含了单个AIR来验证“CPU”的指令集。从而开创了以更快更安全方式为更复杂商业逻辑——任意计算statement——编写程序的先河。

1.2 SHARP

SHARP,为SHARed Prover,以源自多个不同apps的交易为输入,为这些交易生成单个STARK-proof。Apps会combine their batches of transactions,filling up the capacity of a STARK-proofs faster。交易处理的速度和延迟都得到了改善。
接下来需要的是:

  • 递归证明,不仅是对某些hard-coded logic的递归证明,而是对通用计算的递归证明。

在理解递归证明的所有优势之前,需先了解当前SHARP采用的非递归证明方案:
在这里插入图片描述
不断会有statement到来。当达到某特定容量(或某时间)阈值,会生成一个大的combined statement(又名Train)。仅当收到所有独立statement之后,才会为combined statement生成证明——生成证明的事件将很长(约为 为每个statement独立生成证明的时间之和)。
为特别大的statement生成证明将受限于可用的计算资源,如内存。在递归证明方案之前,这为限制STARK证明扩容的主要瓶颈。

2. 何为递归证明?

STARK方案中:

  • 证明某statement用时 与 执行该statement用时 约成线性关系。如证明用时为 T T T
  • 验证该证明用时约为 log ⁡ ( T ) \log (T) log(T),这通常称为“对数压缩”。

换句话说,验证某statement证明的用时 要远低于 直接计算该statement用时。

Cairo用于表示通用计算statement,可由Prover用于生成STARK证明,也可由Verifier用于验证STARK证明。

递归证明的点在于:

  • 可编写某Cairo程序,来证明数千笔交易的正确性
  • 再编写另一Cairo程序,来验证多个STARK证明
  • 然后为多个“up-stream” 证明的有效性 生成单个证明。

由于对数压缩和约为线性的证明时间,为验证某STARK证明 生成证明用时将相对较短(未来将仅需数分钟)。

当实现了递归证明之后,当statement到来,无需等待,SHARP即可开始为其生成证明,这些证明将以多种模式不断合并为递归证明,直到某个点,最终的证明将提交到链上verifier contract:
在这里插入图片描述
如上图中,(可能源自4个不同来源的)4个statement发送给SHARP:

  • 这些statement可并行证明
  • 然后每组proof经Recursive Verifier statement(为某验证STARK proof的Cairo程序)验证后,合并生成为一个证明。Recursive Verifier statement可确保其所验证的2个证明是正确的。
  • 证明再进一步由Recursive Verifier statement合并生成一个证明。该单个证明可确保4个原始statement的正确性,该证明将最终提交上链,由某Solidity verifier合约验证。

3. 递归证明的即时效益

递归证明的即时效益有:

  • 1)降低链上开销:可将多个证明压缩为单个,意味着链上验证单笔交易的开销将降低(每个statement可包含多笔交易)。
    借助递归证明,计算资源瓶颈(如内存)将移除,因每个有限大小的statement可分开证明。因此,当使用递归证明时,Train size将几乎不受限,单笔交易的开销将以数量级降低。
    实际上,reduction取决于可接受的延迟(以及交易到达的速度)。此外,每个证明通常还伴随有某些作为on-chain data的output,这将限制伴随单个proof提交上链的数据量。
  • 2)降低延迟:递归证明模式的延迟 低于 为large Train statement生成证明的延迟,主要有2方面原因:
    • 输入的statement可并行证明(而不是为单个巨大的combined statement生成证明)
    • 无需等待Train中最后一个statement到达才开始生成证明。proof可与新到达的证明一起进行combine。这就意味着最后一个到达Train的statement的延迟,取决于证明该最后statement用时 + 为某(证明所有之前已在该Train中各statement有效性的)Recursive Verifier statement生成证明用时。

目前,StarkWare在积极开发和优化证明Recursive Verifier statement的延迟,未来几个月该延迟将降低为数分钟。
当前SHARP的延迟为数分钟到数小时,具体取决于单笔交易的链上开销。

参考资料

[1] StarkWare 2022年8月博客 Recursive STARKs
[3] 2020年视频 STARK@Home 16: Recursive STARKs

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

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

相关文章

javaScript浅谈----asyncawait

什么是 async ? async/await 是 ES7 的标准,Promise 是 ES6 标准,async/await 这套 API 也是用来帮助我们写异步代码的,它是构建在 Promise 之上的。 async的特点: async 一般不单独使用,而是和 await 一…

3. 无重复字符的最长子串(滑动窗口)

文章目录题目描述暴力破解滑动窗口优化知识积累待解决题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输…

python 操作符介绍

python操作符分类:算数操作符;比较操作符;逻辑操作符;成员操作符;身份操作符; 1 算数操作符: 常用的算数操作符:; python如何执行除法: 许多编程语言中整数除法执行的…

另一半人马座,孟庭苇

我写过生于12月25日的半人马座桂纶镁《半人马座,桂纶镁》。射手座是11月23日-12月21日。而摩羯座的开始恰恰是:12月22日。而孟庭苇,恰恰就生于12月22日。她更是半人马座啊。1989年,20岁的孟庭苇出演铃木机车广告出道(没…

分享一套响应式自适应公司网站官网源码,带文字搭建教程

分享一套响应式自适应公司网站官网源码,带文字搭建教程。需要源码学习可私信我。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTML cnetos7以上 宝塔面板 系统介绍 1、四网合一企业网站管理系统支持在线升级(支持跨版本)、插件在线安装、系…

跳表SkipList介绍与实现

目录 一.跳表介绍 二.实现思路 (一).结点结构 (二).检索 (三).插入 (四).删除 三.实现代码 一.跳表介绍 跳表是一种随机化数据结构,主要用于快速检索数据。实质上…

JavaScript 函数

文章目录JavaScript 函数JavaScript 函数语法调用带参数的函数带有返回值的函数局部 JavaScript 变量全局 JavaScript 变量JavaScript 变量的生存期向未声明的 JavaScript 变量分配值笔记列表JavaScript 函数 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。 实…

Go语言之容器总结

目录 1.值类型 1.1. 数组Array 数组遍历 数组初始化 值拷贝 内置函数len、cap 2. 引用数据类型 2.1. 切片slice 切片初始化 切片的内存布局 通过slice修改struct array值 用append内置函数操作切片(切片追加) slice自动扩容 slice中cap重新…

基于yolov5算法的安全帽头盔检测源码+模型,Pytorch开发,智能工地安全领域中头盔目标检测的应用

基于yolov5算法的安全帽头盔检测|Pytorch开发源码模型 本期给大家打开的是YOLOv5在智能工地安全领域中头盔目标检测的应用。 完整代码下载地址:基于yolov5算法的安全帽头盔检测源码模型 可视化界面演示: 💥💥💥新增…

opencv c++ Mat CUDA的编译与使用

Mat 构造函数 cv::Mat img ; //默认 定义了一个Mat img cv::imread("image.jpg");//除了直接读取,还有通过大小构造等cv::Mat img cv::imread("image.png", IMREAD_GRAYSCALE); cv::Mat img_novel img;转换 Mat::convertTo(Mat& m, in…

【自学Java】Java方法

Java方法 Java方法教程 在 Java 语言 中,方法就是一段可重复调用的代码段。在平时开发直接交流中,也有一些同学喜欢把方法叫做函数,这两个其实是一个概念。 Java语言方法详解 语法 public void fun(Object param1,...){//do something }…

多线程与高并发(四)

【Exchanger】&#xff1a; package Ten_Class.t04.no139;import java.util.concurrent.Exchanger;public class T12_TestExchanger {static Exchanger<String> exchanger new Exchanger<>();public static void main(String[] args) {new Thread(() -> {Stri…

实验二十四 策略路由配置

实验二十四 策略路由配置实验要求&#xff1a; 某企业通过路由器AR1连接互联网&#xff0c;由于业务儒要&#xff0c;与两家运营商ISPA和ISPB相连。 企业网内的数据流从业务类型上可以分为两类&#xff0c; 一类来自于网络172.16.0.0/16&#xff0c;另 一类 来自于网络172.17.0…

百趣代谢组学分享:黑木耳多糖对小鼠肠道微生物及代谢表型的影响

文章标题&#xff1a;Effects of Auricularia auricula Polysaccharides on Gut Microbiota and Metabolic Phenotype in Mice 发表期刊&#xff1a;Foods 影响因子&#xff1a;5.561 作者单位&#xff1a;西北大学 百趣提供服务&#xff1a;发现代谢组学Standard-亲水版、1…

dataCompare大数据对比之异源数据对比

在从0到1介绍一下开源大数据比对平台dataCompare 已经详细介绍了dataCompare 的功能&#xff0c;目前dataCompare 已经实现同源数据的对比 一、dataCompare 现有核心功能如下&#xff1a; (1)数量级对比 (2)一致性对比 (3)差异case 自动发现 (4)定时调度自动对比数据 二、…

【个人解答版】笔试题-2023禾赛-FPGA

题目背景 笔试时间&#xff1a;2022.06.22应聘岗位&#xff1a;FPGA开发工程师 题目评价 难易程度&#xff1a;★★☆☆☆知识覆盖&#xff1a;★☆☆☆☆超纲范围&#xff1a;☆☆☆☆☆值得一刷&#xff1a;★☆☆☆☆ 文章目录1. 使用最少的电路实现二分频&#xff0c;给出…

《机器学习实战》chap1 机器学习概览

《机器学习实战》chap1 机器学习概览 Chap1 The Machine Learning Landscape 这本书第三版也已经出版了:https://github.com/ageron/handson-ml3 Hands-on Machine Learning with Scikit-Learn,Keras & TensorFlow 引入 很早的应用&#xff1a;光学字符识别(OCR&#xff0…

远程办公之怎样在外网登录在线答题网站

很多学校或企业因为教学、测试需要&#xff0c;为学生或员工提供了在线答题平台网站&#xff0c;但弊端是这种在线答题平台只能在校内或在企业内网访问使用&#xff0c;在外网是无法登录访问的。在无公网Ip服务器上部署的web&#xff0c;默认情况下只能内网访问&#xff0c;公网…

TLE4943C/CH505C轮速传感器芯片的输出协议介绍

Infineon公司的TLE4943是一款集成式有源磁场传感器&#xff0c;适用于基于霍尔技术的车轮速度应用。它的基本功能是测量磁极轮或铁磁齿轮的速度。它具有使用AK协议进行通信的两线电流接口。该协议除了提供速度信号外&#xff0c;还提供其他信息&#xff0c;如车轮旋转方向和气隙…

java安装教程-windows

检查是否已经安装过jav打开cmd命令窗口 输入 java -v下载java安装包网址&#xff1a;https://www.oracle.com/java/technologies/downloads/安装java双击运行程序jdk-19_windows-x64_bin.exe&#xff0c;点击下一步进行安装可以更改安装路径&#xff0c;注意安装路径不能有中文…