码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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架构
  • 相关阅读:
    Java实现自定义Hive认证账户密码
    JavaWeb-Filter和Listener
    2023 海外工具站 2 月复盘
    SpringBoot 3.0 新特性,内置声明式HTTP客户端
    LLVM学习笔记(62)
    【rust】cargo的概念和使用方法
    SQL Server实战四:查询数据库的数据
    Linux 基本语句_7_C语言_文件I/O文件复制操作
    JNDI 、C3P0 、DBCP、JDBC、ODBC的区别
    LLM大语言模型(十二):关于ChatGLM3-6B不兼容Langchain 的Function Call
  • 原文地址:https://blog.csdn.net/mutourend/article/details/134221038
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号