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的主要内容,如果未能解决你的问题,请参考以下文章

D. Feeding Chicken(构造)

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-

可以在任何时候attach一个shader到program对象