This release introduces a suite of tests specifically designed for benchmarking and stress-testing zkVMs. These tests provide high coverage of opcodes and precompiles, focusing on worst-case and challenging scenarios for block proving, which can also help discover mispriced opcodes for zkVMs.
Highlight of tests added in this release:
- Arithmetic Opcodes: specifically crafted for efficient gas computational load.
- JUMP/JUMPDEST scenarios: tests various jump and potential JUMPDEST analysis triggers.
- Stateful opcode accesses: Covers warm, cold, and (non-)absent account and storage access scenarios.
- KECCAK opcode flooding
- Precompile Coverage: Includes all existing precompiles active in Pectra (further enhancements are still possible).
- Bytecode witness attacks: worst-case related to non-chunkified code.
All tests are generic to the provided gas limit (configurable via --block-gas-limit
). This allows for easy generation of future test scenarios with arbitrary gas limits.
To run these tests effectively in your zkVM, we highly recommend using the zkevm-benchmark-workload tool (currently experimental). This tool streamlines the process by:
- Running tests in their standard fixture format.
- Automatically generating the necessary witness data.
- Executing blocks statelessly across multiple zkVM implementations.
This suite aims to provide robust tools for evaluating and hardening zkVM performance and security. It already contains a script to download and run the latest test release.