RISC-V与RISC Zero zkVM的关系

1. 引言

本文基本结构为:

  • 编程语言背景介绍
  • RISC-V虚拟机作为zkVM电路
  • 为何选择RISC-V?

2. 编程语言背景介绍

高级编程语言不专门针对某个架构,其便于人类编写。高级编程语言代码,经编译器编译后,会生成针对专门某架构的汇编代码,汇编代码是供机器使用的。
在这里插入图片描述

也可以直接编写汇编代码:
在这里插入图片描述
以上汇编代码示例中:

  • 蓝色框表示:所编码的数据和指令。
  • 黄色框:为对蓝色框的反汇编。
  • 黑色框:为这些op codes的位置信息。可将黑色框的内容看成是addresses。

直接写汇编代码的好处之一是:

  • 可对系统进行细粒度的控制。

但汇编代码存在如下问题:

  • 表达性有限
  • 专门针对特定机器
  • 难于维护

而借助编译器,使用高级编程语言,可解决以上问题,如:
在这里插入图片描述
各种高级编程语言,经相应的语言后端,可生成相应的LLVM bytecode,然后经LLVM编译出特定机器架构的汇编代码:
在这里插入图片描述

2.1 何为RISC-V?

何为RISC-V?:

  • RISC = Reduced Instruction Set Computer
  • V = This is UC Berkeley’s 5th RISC ISA(Instruction Set Architecture)

具体的RISC-V说明书见:

  • The RISC-V Instruction Set Manual
    在这里插入图片描述

RISC-V有如下模块:
在这里插入图片描述

  • 1)RV32I:Base整数指令集。每个寄存器为32位。有32个寄存器。【使用XLEN术语来表示x寄存器的宽度位数,如是32、64还是128。】

    • 有31个通用寄存器x1-x32来保存整数值,x0寄存器固定为常数值0。
      在这里插入图片描述
    • 没有固定子程序返回地址连接寄存器,但标准软件通常使用寄存器x1来保存返回地址。
    • 有一个额外的用户可见的寄存器:pc,为program counter,用于存储当前指令的地址。
    • 具有的指令集为:【其中ecall指令用于特殊功能】
      在这里插入图片描述
  • 2)RV32E:Base整数指令集。每个寄存器为32位。为RV32I的子集,只有16个寄存器。

  • 3)RV64I:Base整数指令集。每个寄存器为64位。

  • 4)RV128I:Base整数指令集。每个寄存器为128位。

  • 5)M:表示为对整数乘法和触发的标准扩展。以RV32M为例,其具有的指令集为:
    在这里插入图片描述

RISC-V可实现为:

  • 1)硬件芯片
  • 2)或 虚拟机:RISC Zero 将RISC-V用作虚拟机。
    在这里插入图片描述

当将RISC-V用作虚拟机时,其:

  • 以软件来实现RISC-V寄存器和内存
  • 运行RISC-V指令

相应的流程为:
在这里插入图片描述

  • 即,以程序代码编译后的RISC-V汇编代码(ELF二进制文件)作为RISC-V虚拟机的输入,经RISC-V执行,获得相应的程序结果。

3. RISC-V虚拟机作为zkVM电路

zkVM的目的为:

  • 为程序执行生成receipts

RISC Zero zkVM的目的为:

  • 为RISC-V程序执行生成receipts

为生成receipt,需:

  • 1)有RISC-V代码执行的execution trace
  • 2)有相应的一组约束,如:
    • 每个bit应为 0或1:x * (x-1) = 0。
    • 每个寄存器应包含32位数据。
    • 每个指令执行完后,program counter应变化。
  • 3)基于RISC-V虚拟机输出的程序结果 + execution trace + 约束,经某证明系统数学处理,生成相应的receipt。
    在这里插入图片描述

这样,完整的流程即为:
在这里插入图片描述

实际在实现RISC-V虚拟机时,如何区分zkVM中所执行的是哪个程序代码呢?

答案就是Image ID。所谓Image ID,是加载到内存的ELF二进制的Merkle root。会将Image ID写入到seal中。
在这里插入图片描述

4. 为何选择RISC-V?

当前主流的机器芯片架构有:
在这里插入图片描述
选择RISC-V架构的原因在于:

  • 1)minimal:所有指令可在一页PPT内展示:
    在这里插入图片描述
  • 2)模块化:可仅使用所需要的模块。
  • 3)编程语言支持:现有的语言和工具均成熟。

参考资料

[1] RISC Zero团队2023年2月视频 What does RISC V have to do with RISC Zero’s zkVM【slide见What RISC-V has to do with RISC Zero’s zkVM】
[2] ARM新规,芯片行业震动丨X86、ARM、RISC-V和MIPS对比汇总
[3] The RISC-V Instruction Set Manual

RISC Zero系列博客

  • RISC0:Towards a Unified Compilation Framework for Zero Knowledge
  • Risc Zero ZKVM:zk-STARKs + RISC-V
  • 2023年 ZK Hack以及ZK Summit 亮点记
  • 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架构

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

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

相关文章

JAR 文件规范详解

介绍 JAR文件是基于ZIP文件格式的一种文件格式,用来将许多文件整合成一个文件。一个JAR文件本质上是包含可选目录META-INF的zip文件,可以通过命令行jar工具或者在Java平台上使用java.util.jar中的API来创建。JAR文件的命名没有严格的要求,可…

详解 SpringMVC 的 HttpMessageConverter

文章目录 前言参考资料内容1、[RequestBody ](/RequestBody )2、RequestEntity3、[ResponseBody ](/ResponseBody )4、SpringMVC处理json5、SpringMVC处理ajax6、RestController注解7、ResponseEntity 推荐读物 《Spring Boot微服务实战(第2版)》内容简介目录 前言 HttpMessag…

【Agent模型1】MemGPT: Towards LLMs as Operating Systems

论文标题:MemGPT: Towards LLMs as Operating Systems 论文作者:Charles Packer, Vivian Fang, Shishir G. Patil, Kevin Lin, Sarah Wooders, Joseph E. Gonzalez (UC Berkeley) 论文原文:https://arxiv.org/abs/2310.08560 论文出处&#x…

Android Studio报错:connect refused

参考链接: https://blog.csdn.net/qq_43213783/article/details/113936012 参考文章中说报错主要是由于代理导致的,在文件->设置->外观与行为->系统设置->HTTP代理。 方法一: 查看打开代理(前提是代理可以通网&#x…

Microsoft Dynamics 365 CE 扩展定制 - 8. DevOps

在本章中,我们将介绍以下内容: 使用PowerShell导出Dynamics 365解决方案使用PowerShell部署解决方案构建解决方案层次结构修补解决方案暂存解决方案使用SolutionPackager在源代码管理中保存解决方案使用PackageDeployer将您的解决方案与配置数据打包基于解决方案版本增量触发…

CSS 滚动捕获 Scroll Snap

CSS 滚动捕获 Scroll Snap CSS 滚动捕获允许开发者通过声明一些位置(或叫作捕获位置)来创建精准控制的滚动体验. 通常来说轮播图就是这种体验的例子, 在轮播图中, 用户只能停在图 A 或者图 B, 而不能停在 A 和 B 的中间. 比如平时用淘宝或小红书, 当你上滑到下一个推荐内容时…

Linux Crontab 定时任务

crond 服务 Linux 通过 crond 服务来支持 crontab。 查看 crond 服务是否已经安装 输入下面命令确认 crond 服务是否已安装。 systemctl list-unit-files | grep crond 如果为 enabled,表示服务正运行。 crontab 文件 crontab 要执行的定时任务都被保存在 /etc…

Vue3:解决基地址不同 数据交互http与https跨域问题

配置公共管理的api文件和vue.config.js可以解决跨域问题。一个项目对接不同的基地址和接口同理。 api export default {//接口基地址Millia: process.env.NODE_ENV development ? location.protocol // location.host /milliaApi : http://xx.xxx.xxxx/index.php/,Milli…

CSS 浮动

目标target✓ 能够说出来为什么需要浮动能够说出来浮动的排列特性能够说出来三种最常见的布局方式能够说出来为什么需要清除浮动,能够至少写出两种清楚浮动的方法能够利用Photoshop实现基本的切图能够利用Photoshop插件实现切图能够完成学成在线的页面布 传统网页布局的三种模…

视频增强和修复工具 Topaz Video AI mac中文版功能

Topaz Video AI mac是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频,包括低分辨率视频、老旧影片、手机录制的视频等。 使用Topaz Video AI非常简单&#xff0c…

03【保姆级】-GO语言变量和数据类型和相互转换

03【保姆级】-GO语言变量和数据类型 一、变量1.1 变量的定义:1.2 变量的声明、初始化、赋值1.3 变量使用的注意事项 插播-关于fmt.Printf格式打印%的作用二、 变量的数据类型2.1整数的基本类型2.1.1 有符号类型 int8/16/32/642.1.2 无符号类型 int8/16/32/642.1.3 整…

云安全—Dashboard 攻击面

0x00 前言 众所周知,如果只是一味的REST接口或者命令行话的操作方式,就会变相的提高操作门款,并且不会有很好的呈现方式,所以就有了web ui的方式,也就是Dashboar面板,本篇主要讨论一下关于Dashboar面板的概…

第八章认识Express框架

目录 Express模块化路由 基本概述 基本使用 基本构建 案例项目 Express接收请求参数 基本概述 基本类别 Express接收GET请求参数 Express接收POST请求参数 Express接收路由参数 Express模块化路由 基本概述 在Express中,路由是指确定应用程序如何响应对…

Python语言高级实战-内置函数super()的使用之类的单继承(附源码和实现效果)

实现功能 super()是一个内置函数,用于调用父类的方法。super() 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用&#xf…

Android Studio(项目收获)

取消按钮默认背景色 像按钮默认背景色为深蓝色&#xff0c;即使使用了background属性指定颜色也不能生效。 参考如下的解决方法&#xff1a; 修改/res/values/themes.xml中的指定内容如下&#xff1a; <style name"Theme.TianziBarbecue" parent"Theme.Mater…

服务号怎么改成订阅号

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;在推送频率上来看&#xff0c;服务号每月能推送四条消息&#xff0c;而订阅号可以每天&#xff08;24小时&#xff09;推送一条消息。如果企业开通公众号的目的是提供服务&#xff0c;例如售前资讯…

二叉树—相关计算题

目录 一、概念题 二、计算题 1、节点数 2、深度 3、遍历序列 一、概念题 1、在用树表示的目录结构中&#xff0c;从根目录到任何数据文件&#xff0c;有&#xff08; &#xff09;通道 答案&#xff1a;唯一一条&#xff0c;树的特点是不相交&#xff0c;所以不可能有多…

uniapp打包嵌入app,输入框被键盘遮挡的问题

问题描述&#xff1a;将uniapp开发的应用打包成wgt包放入app后&#xff0c;发现安卓手机的输入框会被手机输入法的键盘遮挡&#xff0c;导致看不到自己输入了什么内容&#xff1b;而在ios端是正常的&#xff0c;输入框会被键盘顶起&#xff0c;能清楚看到自己输入的内容。 在解…

数据库实验:SQL的数据视图

目录 视图概述视图的概念视图的作用 实验目的实验内容实验要求实验过程 视图概述 视图是由数据库中的一个表或多个表导出的虚拟表&#xff0c;其作用是方便用户对数据的操作 视图的概念 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一…

升级 MacOS 系统后,playCover 内游戏打不开了如何解决

我们有些小伙伴在升级了 macOS 系统后大概率会遇到之前能够正常使用的 playCover 突然游戏打不开了&#xff0c;最近 mac 刚刚正式推出了 MacOS 14.1 ,导致很多用户打开游戏会闪退&#xff0c;我们其实只需要更新一下 playCover 就可以解决 playCover 正式版更新会比较慢所以我…