解码Starknet Verifier:深入逆向工程之旅

2024-05-03 20:12

本文主要是介绍解码Starknet Verifier:深入逆向工程之旅,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 引言

Sandstorm为:

  • 能提交独立proof给StarkWare的Ethereum Verifier,的首个开源的STARK prover。

开源代码见:

  • https://github.com/andrewmilson/sandstorm(Rust)

L2Beat 提供了以太坊上Starknet的合约架构图:
在这里插入图片描述
主要分为2大部分:

  • Sequencer:用于管理状态。由状态A到状态B。
  • SHARP Prover 和 STARK Verifier:STARK Verifier验证STARK proof,以确认该state transition是正确的。本文重点关注的是本部分——生成一个STARK proof,然后提交到以太坊上Starknet的STARK Verifier solidity合约并验证通过。

STARK Verifier solidity合约:

  • 实际是验证某hard-coded program——即bootloader program。

在这里插入图片描述
bootloader program:

  • 负责booting其它programs。

从高层来看,Starknet的以太坊verifier合约有:

  • FriStatementVerifier.sol合约:验证FRI proof
  • MerkleStatementVerifier.sol合约:验证Merkle proofs
  • StarkVerifier.sol合约:验证STARK proof

2. 反向工程面临的挑战一:解码约束

Starknet很酷的点在于:

  • verifier:evaluates the constraints on a single row
  • prover:evaluates the constraints on every row

因此,约束在verifier内。
在这里插入图片描述
其中:

  • 首个约束为initial_pc,即initial program counter。

在这里插入图片描述

3. 反向工程面临的挑战二:Progress feedback loop

从以太坊下载合约,借助Foundary,支持:

  • running locally
  • incrementally tests progress
  • 支持打印调试

在这里插入图片描述

4. Sandstorm在Starknet生态中的角色

4.1 何为Sandstorm?

Sandstorm为:

  • Cairo assembly proof generator(Cairo0和Cairo1)
  • 所生成的proof可用于:
    • Cairo verifier(for recursive proofs)
    • Ethereum verifier
  • 提供了Rust语言编写的Cairo proof verifier

4.2 已经有Stone了,为何还需要Sandstorm?

已经有Stone了,为何还需要Sandstorm?原因在于:

  • Stone和Sandstorm二者是互补的
  • 有利于Starknet生态系统的去中心化

在这里插入图片描述
Sandstorm可定位为:

  • Verifying proofs in WASM
  • Parsing proofs for dispatch to Cairo and Ethereum verifiers
  • Rust > C++
    • Prover + Verifier experimentation

Sandstorm基于一些amazing rust库构建:

  • arkworks:为crypto primitives
  • rust-crypto:哈希函数
  • ruint:快速unsigned integers
  • serde:反序列化
  • starknet-rs:快速Pedersen哈希
  • rayon:并行化

4.3 Sandstorm用例

Sandstorm应用场景有:

  • recursive proving:曾将Sandstorm用于为headers chain生成面向Cairo Verifier的proof。
  • client side proving
  • WASM proof verification:可很方便的编译为webassembly。
  • Dispatching proofs to StarkWare verifiers

Andrew Milson致力于zerosync项目。zerosync的目标是:

  • 为Bitcoin同步创建stark proof。

Andrew Milson曾使用Sandstorm来为headers chain,生成面向Cairo Verifier的proof。

4.4 Sandstorm展望

  • 为Sandstor proofs添加Zero Knowledge属性
  • 改进整体性能
  • 模块化

参考资料

[1] 2023年9月11日Andrew Milson分享视频 Decoding the Starknet Verifier: A Deep Dive into the Reverse Engineering Journey | Andrew Milson

这篇关于解码Starknet Verifier:深入逆向工程之旅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java 中编码与解码的具体实现方法

《Java中编码与解码的具体实现方法》在Java中,字符编码与解码是处理数据的重要组成部分,正确的编码和解码可以确保字符数据在存储、传输、读取时不会出现乱码,本文将详细介绍Java中字符编码与解码的... 目录Java 中编码与解码的实现详解1. 什么是字符编码与解码?1.1 字符编码(Encoding)1

深入理解go中interface机制

《深入理解go中interface机制》本文主要介绍了深入理解go中interface机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前言interface使用类型判断总结前言go的interface是一组method的集合,不

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

MyBatisX逆向工程的实现示例

《MyBatisX逆向工程的实现示例》本文主要介绍了MyBatisX逆向工程的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录逆向工程准备好数据库、表安装MyBATisX插件项目连接数据库引入依赖pom.XML生成实体类、