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。
常规虚拟机结构为: 零知识虚拟机结构为:
如何将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 提供给虚拟机的方式 的优缺点对比为:
指令的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