|
|
轨迹解析器(trace parser)的作用是将EVM程序的官方执行轨迹(trace)转换成零知识证明电路可以处理的数据结构。以下是对其工作过程的详细描述:
|
|
|
# 轨迹解析器
|
|
|
|
|
|
### 输入格式
|
|
|
轨迹解析器(trace parser)的作用是将EVM程序的执行轨迹(trace)转换成零知识证明电路可以处理的数据结构。以下是对其工作过程的详细描述:
|
|
|
|
|
|
## 输入格式
|
|
|
|
|
|
我们选择了trace的JSON输出格式,以便于程序处理。trace文件的格式是.jsonl,每一行代表执行的一步,包含一个json格式的trace。每一步的格式如下:
|
|
|
|
... | ... | @@ -13,7 +15,7 @@ |
|
|
- **memory**: 当前的内存状态
|
|
|
- **storage**: 当前的存储状态
|
|
|
|
|
|
### 解析过程
|
|
|
## 解析过程
|
|
|
|
|
|
轨迹解析器逐行读取轨迹文件中的每一步,解析其JSON数据,然后转化为电路的输入——证据Witness。以下是解析过程的详细步骤:
|
|
|
|
... | ... | @@ -27,7 +29,7 @@ |
|
|
- 根据解析的JSON数据,依照我们的witness设计,将其转化为witness表格中的相应数据。
|
|
|
- 将每一步的数据映射到零知识证明电路可以处理的格式中。
|
|
|
|
|
|
### 示例
|
|
|
## 示例
|
|
|
|
|
|
假设我们有以下一行JSON格式的trace:
|
|
|
|
... | ... | |