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.mzph.cn/news/157190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索 Material 3:全新设计系统和组件库的介绍

探索 Material 3:全新设计系统和组件库的介绍 一、Material 3 简介1.1 Material 3 的改进和更新1.2 Material 3 的优势特点 二、Material 3 主题使用2.1 使用 Material3 主题2.2 使用 Material3 主题颜色 三、Material 3 组件使用3.1 MaterialButton:支持…

15 Go的并发

概述 在上一节的内容中,我们介绍了Go的类型转换,包括:断言类型转换、显式类型转换、隐式类型转换、strconv包等。在本节中,我们将介绍Go的并发。Go语言以其强大的并发模型而闻名,其并发特性主要通过以下几个元素来实现…

微机原理_15

一、单项选择题(本大题共 15 小题,每小题 3 分,共 45分。在每小题给出的四个备选项中,选出一个正确的答案。 以下叙述正确的() A.微机的字长可以是8、16、24、32位 B.微机的字长可以是8、16、32、64位 C.微…

实验(四):指令部件实验

一、实验内容与目的 实验要求: 利用CP226实验仪上的小键盘将程序输入主存储器EM,通过指令的执行实现微程序控制器的程序控制。 实验目的: 1.掌握模型机的操作码测试过程; 2.掌握模型机微程序控制器的基本结构以及程序控制的基本原…

界面控件DevExpress WPF流程图组件,完美复制Visio UI!(一)

DevExpress WPF Diagram(流程图)控件帮助用户完美复制Microsoft Visio UI,并将信息丰富且组织良好的图表、流程图和组织图轻松合并到您的下一个WPF项目中。 P.S:DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至…

pytorch中.to(device) 和.cuda()的区别

在PyTorch中,使用GPU加速可以显著提高模型的训练速度。在将数据传递给GPU之前,需要将其转换为GPU可用的格式。 函数原型如下: def cuda(self: T, device: Optional[Union[int, device]] None) -> T:return self._apply(lambda t: t.cuda…

-bash: ./deploy.sh: /bin/bash^M: bad interpreter: No such file or directory

文章目录 场景解决 场景 jenkins 发布失败, 报错ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [126]], 这说明远程服务器的deploy.sh执行失败, 首先检查权限,没有发现问题,然后手动执行一遍又报错"-ba…

steamui.dll找不到指定模块,要怎么修复steamui.dll文件

当我们使用Steam进行游戏时,有时可能会面对一些令人无奈的技术问题。一种常见的问题是“找不到指定模块steamui.dll”,这可能是由于缺少文件、文件损坏或软件冲突等原因导致。但别担心,这篇文章将提供几种解决此问题的方法,并针对…

Apache Airflow (十三) :Airflow分布式集群搭建及使用-原因及

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…

线程池[重点]

线程池概述 线程池就是一个可以复用线程的技术。 不使用线程池的问题 :如果用户每发起一个请求,后台就创建一个新线程来处理,下次新任务来了又要创建新线程,而创建新线程的开销是很大的,这样会严重影响系统的性能。 …

第六年到第十年是分水岭

我今年懈怠了,觉得就这样了,看到知乎上有个大神的帖子,深受触动,前五年都差不多,第六年到第十年才是分水岭,是否愿意继续努力,才是关键。拷贝如下: 作者:技术王 来源&…

身为程序员哪一个瞬间让你最奔溃 ?

身为程序员,有时候最让我感到沮丧的瞬间之一是遇到难以追踪和解决的 Bug。这些 Bug 可能出现在我写的代码中,也可能是由于不可预测的外部因素引起的。其中一个让我最奔溃的瞬间是在一个大型项目中,我遇到了一个非常复杂的Bug,这个…

数据可视化加定语

自动化成果数据可视化 资产物料可视化 数据服务可视化 微服务架构的可观测性

uniapp生命周期详解

Uniapp的生命周期可以从以下三方面进行理解: 应用生命周期 应用生命周期是指应用程序从启动到关闭的整个过程,包括应用程序的启动、前后台切换、退出等。Uniapp提供了以下生命周期钩子函数: onLaunch:应用程序启动时触发&#…

Linux--网络概念

1.什么是网络 1.1 如何看待计算机 我们知道,对于计算机来说,计算机是遵循冯诺依曼体系结构的(即把数据从外设移动到内存,再从内存到CPU进行计算,然后返回内存,重新读写到外设中)。这是一台计算机…

HCIP-一、RSTP 特性及安全

一、RSTP 特性及安全 实验拓扑实验需求及解法 实验拓扑 实验需求及解法 //1.SW1/2/3是企业内部交换机,如图所示配置各设备名称。 //2.配置VLAN,需求如下: //1)SW1/2/3创建vlan10 [SW1]vlan batch 10 [SW2]vlan batch 10 [SW3]vla…

【JavaSE】-4-循环结构

循环结构 循环结构是三大流程控制结构的最后一种,相比于顺序结构和分支结构,循环结构略复杂一些。 前面课程中已经说过,循环结构的特点是能够重复的执行某些代码。 循环结构的基本概念: 循环体:重复执行的代码称为循环…

深入理解Java AQS:从原理到源码分析

目录 AQS的设计原理1、队列节点 Node 和 FIFO队列结构2、state 的作用3、公平锁与非公平锁 AQS 源码解析1、Node节点2、acquire(int)3、release(int)4、自旋(Spin)5、公平性与 FIFO 基于AQS实现的几种同步器1、ReentrantLock:可重入独占锁2、…

HugeGraph安装与使用

1、HugeGraph-Server与HugeGraph-Hubble下载 HugeGraph官方地址:https://hugegraph.apache.org/ 环境为:linux 官网是有模块版本对应关系,尽量下载较新版本,hubble1.5.0之前是studio功能比较少。官网已经下架server,其他模块下载也比较慢。可以在网上找…