zkVM选型要点

1. 引言

当选择ZK工具,来做可验证链下计算来扩容区块链时,需考虑:

  • 1)为何应选择zkVM?
  • 2)zkVM有哪些基本功能?
  • 3)哪些zkVM可提供这些基本功能?

2. 为何应选择zkVM?

2年前,主流的ZK软件开发是:

  • 使用circom来手写电路

这种手写电路的方式是劳动密集型的:

  • 电路难以编写、更新、审计和维护

将基于电路的ZK项目上市所需的时间约为2年,成本约为1亿美金。

过去2年来,RISC Zero已证明,相比于直接编写电路,为zkVM编写应用程序能更快、更便宜地让项目上市。zkVM使得ZK技术对普通开发者可用,使得可在一个周末即可实现复杂应用。

早在2022年,RISC Zero团队就解锁了证明常规Rust代码正确执行的能力,如证明最受欢迎的Rust库等。使得ZK builders可专注于构建实际的应用程序,利用所有Rust生态的成熟工具。

3. zkVM有哪些基本功能?

当今有很多zkVM可供选择,实际应用时,应考虑如下4大基本功能:

  • 1)支持导入crates/packages。
  • 2)支持链上proof验证。
  • 3)支持unbounded计算,而不会让验证开销膨胀。即支持unbounded计算,但有constant proof size,从而具有constant验证开销。
  • 4)支持proof composition。

为了实现ZK的未来,以上四大功能是必需的。

4. 哪些zkVM可提供这些基本功能?

截止到2024年4月24日,当前市场上已有的zkVM有:

在这里插入图片描述

4.1 支持库导入

原因在于:

  • 若不支持库导入,软件开发将是噩梦。允许开发者导入库是任何复杂应用的基本诉求。

为何难以实现:

  • 数年前,ZK系统是效率低下的、难以构建的,以至于让ZK系统支持像Rust或C++这样的成熟语言,在技术上似乎遥不可及。如今,zkVM开发的趋势已经从定制指令集转向RISC-V、MIPS和WASM等标准指令集。

RISC Zero的方案:

  • 2022年4月,RISC Zero发布了首个zkVM,支持对像Rust或C++这样的高级语言生成proofs。如今,RISC Zero团队每晚都会进行测试,以检查前1000个Rust库与RISC ZerozkVM的兼容性:当前70%的库都是开箱即用。

4.2 支持链上proof验证

原因在于:

  • 链上验证是区块链领域ZK应用的基本要求:
    • 链下证明计算
    • 链上验证计算

为何难以实现:

  • 证明系统设计涉及Prover复杂度和Verifier复杂度之间的基本权衡。目前的趋势是,基于哈希和纠错码的SNARK(又名STARK)为zkVM提供了最好的prover开销,而基于椭圆曲线的SNARKs提供了更好的链上验证开销。如今的zkVM通常包括多个证明系统的合并,以便两全其美。

RISC Zero的方案:

  • RISC Zero使用STARK进行有效证明,然后在SNARK电路内验证STARK证明,以便将STARK“翻译”为SNARK。2023年8月,RISC Zero团队在Sepolia上发布并验证了首个proof。如今,RISC Zero支持适用于任何zkVM应用程序的链上verifier合约。

4.3 支持unbounded计算,但验证开销为constant

原因在于:

  • 若想要证明某以太坊区块或某OP区块 构建正确,对应的是需对a very large computation的证明。

为何难以实现:

  • 对large computations直接证明,并不能很好的扩展——增加2倍的computation size,对应的计算复杂度将增加超过2倍。为解锁unbounded computation size(而不妨碍链上验证),有2大技术难点:
    • 将large computation切分为chunks的能力,并对各chunks独立证明
    • 将“segment proofs”聚合为单个succinct proof的能力。

RISC Zero的方案:

  • RISC Zero引入了continuations来解决为unbounded sized computation生成proof的难题——可独立证明每个segment,然后使用recursion递归来聚合segment proofs。这样,RISC Zero可实现linear-time proving with constant verification costs。

4.4 支持proof composition

原因在于:

  • proof composition(又名proof of proof),解锁了大量不同应用,包括更复杂的隐私应用、更模块化的zkVM应用,以及proof聚合(所聚合的proof可源自RISC Zero,也可源自其它证明系统)。

为何难以实现:

  • 使proof composition高效是极具挑战的。解锁此功能不仅需要解决递归问题,还需要构建一个API,以允许开发人员从zkVM内部调用recursive prover。

RISC Zero的方案:

  • 用户可通过调用RISC Zero zkVM内的env::verify()函数来访问proof composition。该功能是2024年2月新加的。更多信息可参考:
    • 2024年2月视频 Proof Composition RISC Zero Study Club
    • 2024年2月博客 Proof Composition: Unlocking Recursion and Modularity for ZK Developers

5. 递归电路:ZK building的最难部分

zkVM四大功能中的3个(链上验证、unbounded computation、proof composition)都依赖于递归。在ZK世界,递归是指:

  • 证明,某proof正确验证,的能力。

换句话说,递归是指:

  • 在prover内运行verifier。

这听起来可能很直观,但构建递归电路是出了名的复杂。RISC Zero zkVM的设计尽可能易于使用,但在本质上,保持了三个相关但独立的ZK电路的兼容性。

  • 在RISC Zero中,实际上有两个基于STARK的zkVM:
    • 首先使用RISC-V电路来生成RISC-V执行的证明
    • 然后使用单独的递归电路来聚合这些证明。
  • 最后,将结果输入SNARK电路,以便进行链上验证。

为此,当前RISC Zero团队正在构建一种基于MLIR的语言,用于构建名为Zirgen的递归电路。更多Zirgen详情,可查看Julian Sutherland(Nethermind)的演讲:(Almost) effortless formal verification of ZK-circuits by Julian Sutherland (Nethermind Security)。

6. 如何对比现有zkVMs?

性能似乎是最自然的比较维度,但不幸的是,ZK项目的基准测试仍处于初级阶段。有很多基准项目,但事实证明,要为apples-to-apples的比较提供一个强大的框架是非常困难的。
在比较性能之前,需确保以上提及的4大功能的完整性。
当某个新加入者宣布其Zeth版本时,声称区块构造证明比RISC Zero快30倍。但不幸的是,其Zeth proof也比RISC Zero的大1000倍。若不能在链上验证proof,那能以多快的速度生成证明真的重要吗?

RISC Zero一直致力于为生产使用准备一个功能完整的zkVM。一旦RISC Zero完成了审计和可信的设置仪式,并在主网上部署了verifier,就可以指望得到一些重大的性能改进。目前,推荐使用唯一功能完整的zkVM:RISC Zero。

7. 其它重要功能?

除以上提及的4大功能之外,还有多个功能值得提及:

  • 1)Deterministic builds。zkVM原生支持某给定二进制文件的正确执行,但对于大多数应用场景,想要的是能证明某指定Rust(或其它高级语言)程序的正确执行。RISC Zero通过引入cargo-risczero工具来解决该问题。
  • 2)支持Accelerator电路。当识别某zkVM应用的性能瓶颈时,可修改zkVM来提供应用专用的acceleration。如,可添加Keccak accelerator来支持以太坊区块构建的高效证明。RISC Zero当前提供了大整数运算和SHA的accelerator。
  • 3)支持proof aggregation。proof aggregation是指将许多证明合并为单个证明的能力。这一功能对于使链上验证开销合理至关重要。proof composition启用了proof aggregation功能,但值得注意的是,其他系统可能会提供proof aggregation的解决方案,而不会完全解决proof composition的问题。

参考资料

[1] RISC Zero指令设计工程师Paul Gafni 2024年4月8日博客 The 4 Features of a zkVM: How to Choose your ZK Toolkit

RISC Zero系列博客

  • RISC0:Towards a Unified Compilation Framework for Zero Knowledge
  • Risc Zero ZKVM:zk-STARKs + RISC-V
  • 2023年 ZK Hack以及ZK Summit 9 亮点记
  • RISC Zero zkVM 白皮书
  • Risc0:使用Continunations来证明任意EVM交易
  • Zeth:首个Type 0 zkEVM
  • RISC Zero项目简介
  • RISC Zero zkVM性能指标
  • Continuations:扩展RISC Zero zkVM支持(无限)大计算
  • A summary on the FRI low degree test前2页导读
  • Reed-Solomon Codes及其与RISC Zero zkVM的关系
  • RISC Zero zkVM架构
  • RISC-V与RISC Zero zkVM的关系
  • 有限域的Fast Multiplication和Modular Reduction算法实现
  • RISC Zero的Bonsai证明服务
  • RISC Zero ZKP协议中的商多项式
  • FRI的Commit、Query以及FRI Batching内部机制
  • RISC Zero的手撕STARK
  • RISC Zero zkVM guest程序优化技巧 及其 与物理CPU的关键差异
  • ZK*FM:RISC Zero zkVM的形式化验证
  • Zirgen MLIR:RISC-Zero的ZK-circuits形式化验证
  • 以RISC Zero ZK Fraud Proof赋能Optimistic Rollups
  • zkSummit10 亮点记
  • 技术探秘:在RISC Zero中验证FHE——由隐藏到证明:FHE验证的ZK路径(1)
  • 技术探秘:在RISC Zero中验证FHE——RISC Zero应用的DevOps(2)
  • RISC Zero STARK证明系统时序图及规范
  • RISC Zero zkVM Host & Guest 101
  • RISC Zero zk-STARK证明系统代码解析
  • RISC Zero的Babybear域 及其 扩域
  • RISC Zero各功能模块代码解析
  • RISC Zero 的 cargo-risczero相关模块代码解析
  • RISC Zero v0.20升级:Proof Composition——为ZK开发者解锁递归和模块化
  • RISC Zero zkVM 2024年Q1、Q2路线图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV——图像分块局部阈值二值化

目录 一、算法原理1、算法概述2、参考文献 二、代码实现三、结果展示 OpenCV——图像分块局部阈值二值化由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、算法概述 针对目前局部阈值二值…

消息队列 Kafka 入门篇(二) -- 安装启动与可视化工具

一、Windows 10 环境安装 1、下载与解压 首先,访问Apache Kafka的官方下载地址: https://kafka.apache.org/downloads 在本教程中,我们将使用kafka_2.13-2.8.1版本作为示例。下载完成后,解压到您的工作目录的合适位置&#xff…

目标检测——YOLOv6算法解读

论文:YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications (2022.9.7) 作者:Chuyi Li, Lulu Li, Hongliang Jiang, Kaiheng Weng, Yifei Geng, Liang Li, Zaidan Ke, Qingyuan Li, Meng Cheng, Weiqiang Nie, Yiduo Li, Bo …

企业商业活动如何获得央级媒体的采访报道?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 企业想要获得央级媒体的采访报道,确实需要精心策划和准备: 一、如何巧妙给媒体报选题 精准定位:首先要明确企业的核心价值、创新点或行业影响力&…

【C++】手撕list(list的模拟实现)

目录 01.节点 02.迭代器 迭代器运算符重载 03.list类 (1)构造与析构 (2)迭代器相关 (3)容量相关 (4)访问操作 (5)插入删除 我们在学习数据结构的时候…

StartAI智能绘图软件出现“缺少Python运行库”怎么办?

StartAI做为一款国产AI界的新秀,是一款贴合AIGC新手的智能绘图软件。新手安装遇见“缺少Python运行库”怎么办”?小编一招搞定~ 解决方法:手动下载【resource文件】,将文件添加到安装目录下。 点击链接进行手动下载噢~ 确保 Star…

图像处理之模板匹配(C++)

图像处理之模板匹配(C) 文章目录 图像处理之模板匹配(C)前言一、基于灰度的模板匹配1.原理2.代码实现3.结果展示 总结 前言 模板匹配的算法包括基于灰度的匹配、基于特征的匹配、基于组件的匹配、基于相关性的匹配以及局部变形匹…

Spring-IOC之组件扫描

版本 Spring Framework 6.0.9​ 1. 前言 通过自动扫描,Spring 会自动从扫描指定的包及其子包下的所有类,并根据类上的特定注解将该类装配到容器中,而无需在 XML 配置文件或 Java 配置类中逐一声明每一个 Bean。 支持的注解 Spring 支持一系…

Mysql索引详解(索引分类)

文章目录 概述索引对查询速度的影响索引的优缺点索引类型一级索引和二级索引的区别MySQL 回表联合索引(最左前缀原则主键索引和唯一索引的区别BTree索引和Hash索引的区别 覆盖索引索引下推加索引能够提升查询效率原因MySQL 索引结构采用 B树原因索引失效的场景MySQL…

JAVASE基础语法(异常、常用类)

一、异常 1.1 什么是异常 异常就是指不正常。是指代码在运行过程中可能发生错误,导致程序无法正常运行。 package com.atguigu.exception;public class TestException {public static void main(String[] args) {int[] arr {1,2,3,4,5};System.out.println(&quo…

前端css中filter(滤镜)的使用

前端css中filter的使用 一、前言二、补充内容说明三、模糊(一)、模糊效果,源码1(二)、源码1运行效果1.视频演示2.截图演示 四、阴影(一)、阴影效果,源码2(二)…

Linux文件系统与日志

一、inode和block 文件数据包括元信息与实际数据,文件存储在硬盘上,硬盘最小存储单位是扇区,每个扇区存储512字节 1.block(块):文件系统中用于存储文件实际数据的最小单位,由文件系统进行分配和管理,并通…

JavaSE内部类

内部类概述 1.内部类的基础 内部类的分类:实例化内部类,静态内部类,局部内部类和匿名内部类 public class OutClass {// 成员位置定义:未被static修饰 --->实例内部类public class InnerClass1{}// 成员位置定义:被…

01、创建型-单例模式--只有一个实例

文章目录 前言一、基本介绍1.1 什么是单例模式1.2 为什么要用单例模式1.3 应用场景1.4 单例优缺点 二、单例模式的实现方式2.1 饿汉式单例2.1.1 静态变量方式2.1.2 静态代码块 2.2 懒汉式单例2.2.1 懒汉式单例2.2.2 懒汉式优化①-线程安全2.2.2 懒汉式优化②-双重检查锁2.2.3 懒…

ROS1快速入门学习笔记 - 04创建工作环境与功能包

一、定义 工作空间(workspace)是一个存放工程开发相关文件的文件夹。 src:代码空间(Source Space)build: 编辑空间(Build Space)devel:开发空间(Development Space)install:安装空间(Install …

深入理解Linux文件系统于日志分析

目录 一.Inode 和 block 概述 ​编辑 1.inode 的内容 (1)Inode 包含文件的元信息 (2)用 stat 命令可以查看某个文件的 inode 信息 (3) Linux系统文件三个主要的时间属性 (4)目…

CentOS 系统的优缺点

CentOS (社区企业操作系统的缩写)是一个基于红帽企业 Linux (RHEL)的免费开源发行版, 旨在为服务器和工作站提供稳定、可靠和安全的平台。 不应将其与CentOS Stream 混淆,后者是即将发布的 RHEL 版本的上游开发平台。 CentOS Li…

第67天:APP攻防-Frida反证书抓包移动安全系统资产提取评估扫描

思维导图 案例一:内在-资产提取-AppinfoScanne AppinfoScanner 一款适用于以 HW 行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态 WEB …

机器学习之sklearn基础教程

ChatGPT Scikit-learn (简称sklearn) 是一个非常受欢迎的Python机器学习库。它包含了从数据预处理到训练模型的各种工具。下面是一个关于如何使用sklearn进行机器学习的基础教程。 1. 安装和导入sklearn库 首先,你需要安装sklearn库(如果你还没有安装的…

使用写入这类接口后,文件指针fp是否会偏移?

以fprintf为例: 在使用 fprintf 函数写入数据时,文件指针 fp 会自动进行偏移,以确保数据被写入到文件的正确位置。 每次调用 fprintf 函数都会将数据写入文件,并且文件指针会在写入完成后自动移动到写入的末尾,以便下…