当前位置: 首页 > news >正文

Polygon Miden VM架构总览

1. 计算类型

Programs程序有2种类型:

  • 1)Circuit电路:即,程序即电路。将程序转换为电路。
  • 2)Virtual machine虚拟机:即,程序为电路的输入。【Miden VM属于此类型】
    在这里插入图片描述

2. 何为ZK virtual machine?

常规虚拟机为:

  • 输入有:
    • 初始状态
    • 待执行程序
  • 输出有:
    • 基于初始状态,执行完该程序后的最终状态。
      在这里插入图片描述

Zero-Knowledge(ZK)虚拟机为:

  • 输入有:
    • 初始状态
    • 待执行程序:可为公开输入,也可为隐私输入。
    • witness(可选项,用作private input)
  • 输出有:
    • 基于初始状态,执行完该程序后的最终状态。
    • 相应的proof
      在这里插入图片描述

使用ZK虚拟机的好处在于:

  • 1)易于使用:无需学习密码学知识和ZKP系统知识。
  • 2)通用性:图灵完备的ZK虚拟机,可为任意计算生成proofs。
  • 3)简单性:单个(相对)简单约束集合,可描述整个虚拟机。
  • 4)递归性:proof验证流程,可看成是执行在虚拟机上的另一程序。

ZK虚拟机的缺点在于:

  • 1)特殊的计算结构:并非所有的ZKP证明系统都可用于构建ZK虚拟机。如具有很多重复的结构,对于R1CS证明系统来说并不容易死。
    • 但对STARKs(AIR算术化➕FRI)证明系统来说,这不是问题。
  • 2)性能:专门定制的特殊电路可能会更快,特别是对于简单计算。【虚拟机模式有很多额外的开销,如对程序解码、对内存的随机访问等。对于简单计算来说,这些额外开销可能会超过实际电路。】
    • 不过,可在ZK虚拟机内部使用这种专门定制的特殊电路。

3. Polygon Miden VM架构

Polygon Miden VM设计时,做了如下选择:

  • 1)ZKP系统:为 STARKs ➕ multiset checks:快速且完美匹配机器计算。
  • 2)Prover:为 Winterfell:为以Rust编写的通用STARK prover。
  • 3)Field:为 Goldilocks域 2 64 − 2 32 + 1 2^{64}-2^{32}+1 264232+1:快速且完美匹配32位整数运算。
  • 4)Instruction Set指令集:为 定制指令集架构:基于Stack的、针对ZK优化的指令集架构,基于MAST的programs。

3.1 Polygon Miden VM组件

Polygon Miden VM 关键组件有:

  • Stack
  • Memory
  • Bus
  • Chiplets:专门定制的特殊电路。
  • Advice provider
    在这里插入图片描述

Chiplets为专门定制的特殊电路,当前有如下类型的chiplets:

  • 1)Range checks:
    • 16-bit range checks:Miden VM的内存会大量使用16-bit range checks,用于做32位运算,如将某域元素分解为2个32位value等。
  • 2)Rescue hash:
    • 2-to-1 hashes
    • Linear hashes
    • Merkle paths
  • 3)Bitwise operations:
    • 基于32位值的bitwise AND、XOR。

3.2 Polygon Miden VM Execution Trace

Miden VM execution trace结构为:
在这里插入图片描述
以stack execution trace为例:
在这里插入图片描述
其中还引入了overflow table:【实际实现时使用multi-set checks】

  • 1)当items无法放入stack的top 16 slots时,会将这些items推入到overflow table中。
  • 2)当有items从stack中移除时,会将overflow table中的items移回到stack中。

以hash chiplets为例:【通过bus,区分了stack trace和hasher trace。仍然需使用multi-set checks。】
在这里插入图片描述

4. Polygon Miden VM程序执行

Polygon Miden VM中:

  • 输入的程序采用Miden Assembly汇编语言编写。
  • 然后将用Miden Assembly汇编语言程序,编译为Program MAST。
  • 最终,在Miden VM中实际执行的是Program MAST。
    在这里插入图片描述

准确来说,Miden VM程序为VM指令的Merklized abstract syntax trees(MAST)。其具有如下关键属性:

  • 1)所有程序可被reduce为单个哈希(其MAST的root)。
  • 2)每个内部节点自身为某更小程序的MAST。
  • 3)program MAST的叶子节点,为(无control flow的)linear programs。

具体示例为:【join表示依次执行其左右子节点;split表示要么执行其左子节点,要么执行其右子节点。】
在这里插入图片描述

4.1 选择MAST的原因

选择MAST的原因在于:

  • 1)效率:在VM中仅需对所执行的代码进行哈希。
  • 2)安全性:所有已执行代码是静态已知的(无自修改代码 或 动态跳转)
  • 3)隐私:可支持隐私程序输入,该隐私程序具有公开的前置条件或后置条件。

参考资料

[1] 2022年9月Bobbin Threadbare分享视频 09 Miden VM architecture overview

Miden系列博客

  • zk、zkVM、zkEVM及其未来
  • Polygon L2扩容方案揭秘
  • STARKs and STARK VM: Proofs of Computational Integrity
  • Feeding Program Source Code to ZK VMs
  • 混合Rollup:探秘 Metis、Fraxchain、Aztec、Miden和Ola
  • Polygon Miden:扩展以太坊功能集的ZK-optimized rollup
  • Polygon Miden zkRollup中的UTXO+账户混合状态模型
  • Polygon Miden交易模型:Actor模式 + ZKP => 并行 + 隐私
  • Polygon Miden状态模型:解决状态膨胀,而不牺牲隐私和去中心化
  • Polygon Miden中的nullifier sets设计
  • Polygon Miden VM中的哈希函数对比
  • Polygon MidenVM中的recursive STARK verification优化
http://www.lryc.cn/news/240484.html

相关文章:

  • ultralytics yolov8 实例分割 训练自有数据集
  • linux之进程地址空间
  • Cloud微服务
  • BLIP-2:冻结现有视觉模型和大语言模型的预训练模型
  • PyQt(学习笔记)
  • 策略模式应用(内窥镜项目播放不同种类的视频)
  • 【操作系统】Bochs安装和配置
  • 【Vue】Node.js的下载安装与配置
  • C语言从入门到实战——数组和指针的强化练习题
  • 经典滑动窗口试题(一)
  • 【paddlepaddle】
  • String 、StringBuffer 和 StringBuilder 的区别?
  • 【DevOps】Git 图文详解(六):Git 利器 - 分支
  • 万界星空科技QMS质量管理系统介绍
  • C练习题_14
  • 解决方案 | 政策与技术加持,法大大电子劳动合同让人事管理更省心
  • Linux基础命令5
  • springboot(ssm中医学习服务管理系统 医学生在线学习平台Java(codeLW)
  • springboot宠物领养系统-计算机毕设 附源码 44261
  • 性能测试必备知识-使用MySQL存储过程构造大量数据:实例解析
  • 最新绿豆APP源码苹果CMS影视插件版本/原生JAVA源码+反编译开源+免授权
  • SPSS多元对应分析
  • Rust语言特性探秘:宏的魔力
  • 2023最全的Web自动化测试介绍
  • Unity 控制物体透明度变化
  • django及DRF流程源码分析
  • Ajax入门-Express框架介绍和基本使用
  • Linux加强篇001-部署Linux系统
  • LeetCode算法题解(动态规划)|LeetCode343. 整数拆分、LeetCode96. 不同的二叉搜索树
  • 好多年没更新了