Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
zkevm-circuits
zkevm-circuits
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

新注册的用户请输入邮箱并保存,随后登录邮箱激活账号。后续可直接使用邮箱登录!

  • zkp
  • zkevm-circuitszkevm-circuits
  • Wiki
    • Zkevm docs
  • 2 trace parser

2 trace parser · Changes

Page history
feat: update trace-parser and error-exec-state.markdown authored 9 months ago by chenxuanhui's avatar chenxuanhui
Hide whitespace changes
Inline Side-by-side
Showing with 62 additions and 12 deletions
+62 -12
  • zkevm-docs/2-trace-parser.markdown zkevm-docs/2-trace-parser.markdown +62 -12
  • No files found.
zkevm-docs/2-trace-parser.markdown
View page @ a141eb02
轨迹解析器(trace parser)是将EVM程序的官方执行轨迹(trace)转化成零知识证明电路可以处理的数据结构的模块。 轨迹解析器(trace parser)的作用是将EVM程序的官方执行轨迹(trace)转换成零知识证明电路可以处理的数据结构。以下是对其工作过程的详细描述:
我们选择trace的json输出格式,以便于程序处理。trace文件是.jsonl格式,每一行是一步json格式的trace。轨迹解析器读取每一步轨迹,解析其json中的数据,然后转化成为电路的输入——证据Witness。 ### 输入格式
每一步的格式如下 我们选择了trace的JSON输出格式,以便于程序处理。trace文件的格式是.jsonl,每一行代表执行的一步,包含一个json格式的trace。每一步的格式如下:
- pc
- op
- gas
- gasCost
- depth
- stack
- memory
- storage
trace parser将此格式的数据解析、读入,然后依照我们的witness设计,将其转化为witness表格。 - **pc**: 程序计数器(Program Counter)
\ No newline at end of file - **op**: 操作码(Opcode)
- **gas**: 剩余的gas量
- **gasCost**: 本步骤的gas消耗
- **depth**: 调用深度
- **stack**: 当前的堆栈状态
- **memory**: 当前的内存状态
- **storage**: 当前的存储状态
### 解析过程
轨迹解析器逐行读取轨迹文件中的每一步,解析其JSON数据,然后转化为电路的输入——证据Witness。以下是解析过程的详细步骤:
1. **读取轨迹文件**:
- 轨迹解析器读取.jsonl格式的轨迹文件。
- 每一行都是一个JSON格式的trace,表示EVM程序执行过程中的一步。
2. **解析JSON数据**:
- 轨迹解析器解析每一行的JSON数据。
- 提取其中的字段:pc、op、gas、gasCost、depth、stack、memory、storage。
3. **转化为Witness表格**:
- 根据解析的JSON数据,依照我们的witness设计,将其转化为witness表格中的相应数据。
- 将每一步的数据映射到零知识证明电路可以处理的格式中。
### 示例
假设我们有以下一行JSON格式的trace:
```json
{
"pc": 0,
"op": "PUSH1",
"gas": 1000000,
"gasCost": 3,
"depth": 1,
"stack": [],
"memory": [],
"storage": {}
}
```
轨迹解析器的处理步骤如下:
1. **读取轨迹文件**:
- 读取到上述JSON数据行。
2. **解析JSON数据**:
- 提取字段:
- `pc`: 0
- `op`: "PUSH1"
- `gas`: 1000000
- `gasCost`: 3
- `depth`: 1
- `stack`: []
- `memory`: []
- `storage`: {}
3. **转化为Witness表格**:
- 将提取的数据映射到witness表格中。
- 例如,将 `pc` 映射到 witness 表格的 `pc` 列,将 `op` 映射到 `opcode` 列,依次类推。
总之,轨迹解析器通过解析EVM执行轨迹的JSON数据,将其转化为零知识证明电路可以处理的witness数据结构。这个过程包括读取轨迹文件、解析JSON数据、并将数据映射到witness表格中,从而使得零知识证明电路能够利用这些数据进行证明。
\ No newline at end of file
Clone repository
  • basics
    • evm
    • halo2
  • code notes
    • binary_number_with_real_selector
    • how to use macro
    • simple_lt
    • simple_lt_word
  • Home
  • image
  • zkevm docs
    • 1 introduction
    • 10 public
    • 11 fixed
    • 12 exp
    • 13 keccak
    • 14 comparisons
    • 15 differences
View All Pages

Copyright © 2024 ChainWeaver Org. All Rights Reserved. 版权所有。

京ICP备2023035722号-3

京公网安备 11010802044225号