码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 264−232+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优化
  • 相关阅读:
    【云计算】云数据中心网络(七):负载均衡
    玩转SQL语句之group by 多字段分组查询与having子句,一篇解决你的疑惑!
    获取唯一的短邀请码
    C语言-数据类型
    Go微服务实战 - 用户服务开发(gRPC+Protocol Buffer)
    构建神经网络模型方法,神经网络建立数学模型
    mybatis的SqlSession
    Leetcode—226.翻转二叉树【简单】
    高效的数据压缩编码方式 Protobuf
    Vivado详细使用教程 | LED闪烁示例
  • 原文地址:https://blog.csdn.net/mutourend/article/details/134520258
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号