码农知识堂 - 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优化
  • 相关阅读:
    java动态代理两种实现方式
    CUDA入门教程;Transformer太火不是好事?;探求GPU极限性能的利器|AI系统前沿动态...
    0-1背包问题
    HCIE学习笔记:IPV6 地址、ICMP V6、NDP 、DAD (更新补充中)
    005. 字符串分割[100 分]
    VUE:组件
    SpringBoot项目在进行部署打包的时候,打包成jar和war有何差异?
    民安:揭示环评问题与提出解决之道
    Spring Security OAuth2基于JWT认证授权
    JAVA反编译工具-CFR(class单个反编译、JAR包整体反编译)
  • 原文地址:https://blog.csdn.net/mutourend/article/details/134520258
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号