Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Scripts and tools for fuzzing the compiler.

Run commands from the repository root unless a tool says otherwise.

Use the compiler-diff project to compare saved ABI/JSON artifacts, run seeded Solidity-source campaigns with fuzz, or invoke the runtime and symbolic engines through one CLI. The symbolic guide describes execution bounds and counterexample replay.

Convenience entrypoints live under fuzz/bin/:

  • fuzz/bin/solsmith: generates typed Solidity runtime harnesses.
  • fuzz/bin/solreduce: reduces a replayable runtime mismatch.
  • fuzz/bin/solsymdiff: symbolically compares one Solc/Solar function.

See fandango/ for the combined Fandango + Foundry fuzzing flow. Fandango and SolSmith generate ABI values and Solidity programs; Foundry's builtin fuzzer executes generated targets with cheatcodes.

The Foundry differential path follows the same oracle shape as the builtin fuzzer/cheatcode approach: it installs the solc and compiler runtimes at different addresses, fuzzes calls through Foundry, records logs and state diffs with vm.recordLogs() and vm.startStateDiffRecording(), then compares success/revert status, returndata, normalized logs, and normalized state side effects.