This repository contains benchmark results for zkEVM proving and execution across different hardware configurations.
You can see a website rendering of the results here.
| Hardware Setup | Proving Results | Execution Results |
|---|---|---|
| 1xL40s | — | 9 gas limits, 1 mainnet range |
| 8x5090 | 8 gas limits, 1 mainnet range, 1 other | — |
The benchmark results are organized in the following hierarchy:
data/
├── proving/ # Proving benchmark results
│ └── [Hardware Setup]/ # e.g., 8x5090
│ ├── [Fixture Set]/ # e.g., eest-fd1dd63
│ │ └── [EL Client]/ # e.g., reth-v1.11.0
│ │ └── [zkVM]/ # e.g., zisk-v0.16.1
│ └── mainnet-A-B/ # Mainnet block ranges (no fixture set)
│ └── [EL Client]/
│ └── [zkVM]/
│
└── executions/ # Execution benchmark results
└── (same structure as proving)
- eest-*: EEST fixture sets with provenance (commit or version tag)
- Gas limit is encoded in each JSON filename (
benchmark-gas-value_XM)
- Gas limit is encoded in each JSON filename (
- mainnet-A-B: Mainnet block range benchmarks (blocks A through B)
- Proving: Measures the time and resources required to generate zero-knowledge proofs for blocks
- Execution: Measures the time and cycles required to execute blocks within the zkVM (without proof generation)
Each hardware folder contains a detailed README.md with benchmark results, organized by EL client and zkVM.
EEST benchmark runs include a Benchmark Workload link that points to the specific version of the zkevm-benchmark-workload tool used to generate the test fixtures.
- ❌ SDK Reported Crashes: Fixtures that failed during proving/execution (reported by SDK)
- ✅ Successful Runs: Fixtures that completed successfully (sorted slowest to fastest)
Proving:
- Time: How long it took to generate the proof
- Throughput: Gas processed per second (gas/s)
- Proof Size: Size of the generated proof
Execution:
- Time: How long it took to execute the block in the zkVM
- Throughput: Gas processed per second (gas/s)
- Cycles: Total number of zkVM cycles used