Expand description
Foundryβs symbolic EVM executor.
Re-exportsΒ§
pub(crate) use std::collections::VecDeque;πpub(crate) use std::fmt;πpub(crate) use std::fmt::Write as _;πpub(crate) use std::io::Write;πpub(crate) use std::ops::ControlFlow;πpub(crate) use std::ops::Deref;πpub(crate) use std::ops::DerefMut;πpub(crate) use std::path::Path;πpub(crate) use std::path::PathBuf;πpub(crate) use std::process::Command;πpub(crate) use std::process::Stdio;πpub(crate) use std::sync::Arc;πpub(crate) use std::sync::atomic::AtomicBool;πpub(crate) use std::sync::atomic::Ordering;πpub(crate) use std::sync::mpsc;πpub(crate) use std::thread;πpub(crate) use std::time::Duration;πpub(crate) use std::time::Instant;πpub(crate) use std::time::SystemTime;πpub(crate) use std::time::UNIX_EPOCH;πpub(crate) use DynSolType;πpub(crate) use DynSolValue;πpub(crate) use JsonAbiExt;πpub(crate) use alloy_json_abi::Function;πpub(crate) use Address;πpub(crate) use B256;πpub(crate) use Bytes;πpub(crate) use I256;πpub(crate) use Keccak256;πpub(crate) use U256;πpub(crate) use hex;πpub(crate) use hex;πpub(crate) use keccak256;πpub(crate) use HashMap;πpub(crate) use HashSet;πpub(crate) use IndexSet;πpub(crate) use alloy_signer::SignerSync;πpub(crate) use PrivateKeySigner;πpub(crate) use English;πpub(crate) use Wordlist;πpub(crate) use alloy_sol_types::SolCall;πpub(crate) use SymbolicVm;πpub(crate) use Vm;πpub(crate) use SymbolicConfig;πpub(crate) use SymbolicExplorationOrder;πpub(crate) use SymbolicStorageLayout;πpub(crate) use CALLER;πpub(crate) use CHEATCODE_ADDRESS;πpub(crate) use DEFAULT_CREATE2_DEPLOYER;πpub(crate) use HARDHAT_CONSOLE_ADDRESS;πpub(crate) use backend::DatabaseExt;πpub(crate) use evm::FoundryEvmNetwork;πpub(crate) use executors::Executor;πpub(crate) use Bytecode;πpub(crate) use JumpTable;πpub(crate) use eip7702::EIP7702_BYTECODE_LEN;πpub(crate) use opcode;πpub(crate) use Block;πpub(crate) use Cfg;πpub(crate) use Transaction;πpub(crate) use database::DatabaseRef;πpub(crate) use PrecompileSpecId;πpub(crate) use Precompiles;πpub(crate) use kzg_point_evaluation;πpub(crate) use primitives::hardfork::SpecId;πpub(crate) use Deserialize;πpub(crate) use Deserialize;πpub(crate) use Serialize;πpub(crate) use Serialize;πpub(crate) use collections::VecDeque;πpub(crate) use self;πpub(crate) use io::Write;πpub(crate) use ControlFlow;πpub(crate) use Deref;πpub(crate) use DerefMut;πpub(crate) use Path;πpub(crate) use PathBuf;πpub(crate) use Command;πpub(crate) use Stdio;πpub(crate) use Arc;πpub(crate) use AtomicBool;πpub(crate) use Ordering;πpub(crate) use mpsc;πpub(crate) use thread;πpub(crate) use Duration;πpub(crate) use Instant;πpub(crate) use SystemTime;πpub(crate) use UNIX_EPOCH;πpub(crate) use thiserror::Error;πpub(crate) use debug;πpub(crate) use trace;πpub(crate) use trace_span;πpub(crate) use warn;πpub(crate) use base64::prelude::*;π
ModulesΒ§
StructsΒ§
- Executor
View - Network-independent, read-only view of a concrete Foundry executor.
- Symbolic
Branch Target - One comparison site from a fuzz branch frontier to target during symbolic execution.
- Symbolic
Branch Target Search Result - Result of best-effort symbolic exploration toward one branch target.
- Symbolic
Concrete Input - One concrete symbolic input materialized from a solver model.
- Symbolic
Executor - SMT-LIB-backed symbolic executor.
- Symbolic
Invariant Candidate - One unconfirmed symbolic input produced by invariant candidate search.
- Symbolic
Invariant Candidate Input - Input for best-effort invariant candidate search after one symbolic handler call.
- Symbolic
Invariant Candidate Search Result - Result of best-effort invariant candidate search after one symbolic handler call.
- Symbolic
Invariant RunInput - Input for bounded symbolic invariant execution.
- Symbolic
Invariant Search Limitation - An execution or solver limitation encountered during best-effort candidate search.
- Symbolic
Invariant Step - One concrete step in a symbolic invariant counterexample sequence.
- Symbolic
Invariant Target - A concrete invariant target selected from Foundryβs invariant discovery.
- Symbolic
RunInput - Symbolic
Stats - Symbolic execution counters.
- Symbolic
Storage Assignment - One concrete storage value required to replay a symbolic invariant candidate.
EnumsΒ§
- Deferred
Incomplete π - Deferred
Path πMode - Symbolic
Error - Error returned by the internal symbolic executor.
- Symbolic
Invariant Counterexample Kind - Part of a symbolic invariant run that produced a replayable counterexample.
- Symbolic
Invariant RunResult - Outcome of bounded symbolic invariant execution.
- Symbolic
RunResult - Outcome of a symbolic test execution.
- Symbolic
Stop Reason - High-level reason a symbolic run stopped without a proof or replayed counterexample.
- Symbolic
VmCheatcode π
ConstantsΒ§
- CONCRETE_
BASE_ πSYMBOLIC_ EXPONENT_ LIMIT - DEFAULT_
DERIVATION_ πPATH_ PREFIX - ERROR_
DATA_ πMIN_ LEN - FALLBACK_
MODEL_ πMAX_ ASSIGNMENTS - FALLBACK_
MODEL_ πMAX_ CANDIDATES_ PER_ VAR - FALLBACK_
MODEL_ πMAX_ VARS - HARD_
ARITH_ πFALLBACK_ MAX_ ASSIGNMENTS - HARD_
ARITH_ πFALLBACK_ MAX_ VARS - MAX_
REMEMBER_ πKEYS - PORTFOLIO_
SCHEDULER_ πHISTORY - PORTFOLIO_
SCHEDULER_ πMAX_ SPEED_ BONUS - PORTFOLIO_
SCHEDULER_ πMIN_ RECENCY_ WEIGHT - PORTFOLIO_
SCHEDULER_ πSPEED_ BONUS_ CAP_ MS - PRECOMPILE_
ADDRESS_ πLEADING_ ZEROS - RESCUE_
PORTFOLIO_ πSOLVER_ DELAY - SECOND_
PORTFOLIO_ πSOLVER_ DELAY - SOLVER_
CANCEL_ πCHECK_ INTERVAL - SYMBOLIC_
EXP_ πCONCRETE_ EXPONENT_ LIMIT - SYMBOLIC_
SOLVER_ πMODEL_ CACHE_ MAX_ ENTRIES - SYMBOLIC_
SOLVER_ πSAT_ CACHE_ MAX_ ENTRIES - SYMBOLIC_
VM_ πCOMPAT_ ADDRESS