zkevm-circuits
zkevm-circuits copied to clipboard
Explore fuzzying circuits: first steps
For some time we've had discussions about fuzzying the circuits with two possible aims:
- Find correctness bugs (in witness generation code / circuit constraints)
- Find soundness bugs (in circuit constraints)
To get results from fuzzying we need to be able to iterate the generation of inputs + running the thing many times per second, so a first step would be to evaluate some targets and get benchmarks (time and memory) to determine the resources that would be needed for an effective fuzzying infrastructure.
The targets to evaluate that we have thought of are:
- Smallish circuits like bytecode, copy, exp, PublicInputs
- Arithmetic gadgets
- Maybe Circuits that contain a single ExecutionStep of the EVM Circuit?
For some of these targets we may need to write some code to create standalone circuits for evaluation.