Check out the work in progress specification to learn how it works.
To run the same tests as the CI, please use: make test-all
.
There are currently several benchmarks to run in the workspace in regards to the circuits.
All use the DEGREE
env var to specify the degree of the K
parameter that you want
to use for your circuit in the bench process.
- Keccak Circuit prover benches. ->
DEGREE=16 make packed_multi_keccak_bench
- EVM Circuit prover benches. ->
DEGREE=18 make evm_bench
. - State Circuit prover benches. ->
DEGREE=18 make state_bench
You can also run all benchmarks by running: make circuit_benches DEGREE=18
.
Circuit Benchmark Results are accessible here: https://grafana.zkevm-testnet.org/d/vofy8DAVz/circuit-benchmarks?orgId=1
- circuit_benchmarks panel displays:
- overall test result
- timers and system statistics
- url for downloading prover log and sys stat files
- clickable sysstats_url element that loads the memory and cpu utilization profiles for the given test
This repository contains several Rust packages that implement the zkevm. The high-level structure of the repository is as follows:
- a crate designed to parse EVM execution traces and manipulate all of the data they provide in order to obtain structured witness inputs for the EVM Proof and the State Proof.
- Measures performance of each circuit based on proving and verifying time and execution trace parsing and generation for each subcircuit
- Different types helpful for various components of the zkevm, such as execution trace parsing or circuits
- Generates traces by connecting to an external tracer
- Custom circuits that abstracts away low-level circuit detail.
- What are gadgets?
- Provides output from latest geth APIs (debug_trace) as test vectors
- Integration tests for all circuits
- Modules for Keccak hash circuit
- Mock definitions and methods that are used to test circuits or opcodes
- CLI that provides tools for testing
- Main package that contains all circuit logic
- Modules for Merkle Patricia Trie circuit