foundry-rs / foundry

Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
https://getfoundry.sh
Apache License 2.0
8.1k stars 1.67k forks source link

Symbolic Rust EVM #15

Open gakonst opened 2 years ago

gakonst commented 2 years ago

Motivation

Fuzzing is great but it does not cover all potential code paths, it just sprays and prays randomly right now

Solution

Create a Rust Symbolic EVM which we ideally implement the Evm trait for so that it can be used seamlessly in forge.

Other Context

Symbolic evms impls:

Blogs

transmissions11 commented 2 years ago

can get the best of both worlds with symbolic seed fuzzing:

telegram-cloud-photo-size-1-5064516150456592870-y

drawnwren commented 2 years ago

Does anyone have good resources for building a performant symbolic execution engine? I am thinking of giving it a shot, but would like a better grasp of best practices + theory.

edit: The manticore paper is good and here's a good explanation of symbolic state merging.

Silur commented 1 month ago

let's suppose the SEVM is done, what solver shall we use to exhaust the symbolic states?