Feeding Program Source Code to ZK VMs
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Feeding Program Source Code to ZK VMs相关的知识,希望对你有一定的参考价值。
1. 引言
本文主要摘自Polygon Miden创始人Bobbin Threadbare在Compiler and Composability in ZKP 上的演讲内容。
2. 计算分类
计算主要分为2大类:
- 1)Circuit computations:为Signals propagating through a network of gates。即以门构成,计算通过门之间signal的传输来实现。
- 2)Machine computations:为Transition function applied to a computation state。为更自然的表达方式。本文重点关注machine computations。
3. 何为ZK VM(零知识虚拟机)?
常规虚拟机结构为:
零知识虚拟机结构为:
4. 如何将a program提供给虚拟机?
如何将a program提供给虚拟机?主要实现方式有:
- 1)通过public memory:虚拟机的public memory的初始化指令中包含了该program。
- 2)通过bootloading:将该program的哈希值提供给虚拟机,在虚拟机内,该哈希值可非确定性地inverted为一组指令。
- 3)通过codeword commitment:将program指令 编码为 codeword,在proof中额外包含该codeword的承诺值。
- 4)通过MAST root:由虚拟机计算Merkelized abstract syntax tree(MAST)的root值,具体计算方式为以结构化mapper的形式来对program指令进行哈希。
以上四种将a program 提供给虚拟机的方式 的优缺点对比为:
4.1 通过public memory将a program提供给虚拟机
4.2 通过bootloading将a program提供给虚拟机
4.3 通过codeword commitment将a program提供给虚拟机
4.4 通过MAST root将a program提供给虚拟机
4.4.1 何为MAST?
指令的Merkelized abstract syntax tree(MAST)的关键属性有:
- 可将所有programs reduce为一个哈希值(即MAST的root值)。
- 每个内部节点本身也是a smaller program的MAST。
- a program MAST的所有叶子均为linear programs(无control flow控制流)。
MAST示例为:
参考资料
[1] Compiler and Composability in ZKP
以上是关于Feeding Program Source Code to ZK VMs的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #601 (Div. 2) D Feeding Chicken
(暴力+精度)hihocoder - 1227 The Cats' Feeding Spots
what is feeding and what is 读扩散 and 写扩散?
c_cpp 通过ESP8266 EEPROM中的网页提供WIFI SSID,密码和Blynk密钥 - 来自https://community.blynk.cc/t/feeding-wifi-ssid-