Analysis Techniques
Symbolic execution analyzes a contract by treating inputs as symbolic variables rather than concrete values, then using a constraint solver (an SMT solver) to determine which inputs can drive execution down each path — including paths that reach dangerous states like an assertion failure or an unexpected transfer.
Instead of running the contract with one input, symbolic execution tracks the logical constraints along each branch. When it finds a path that reaches a target condition, the solver produces a concrete input that triggers it — effectively a proof of reachability.
Symbolic execution complements static analysis (fast, pattern-based) and fuzzing (random/guided inputs). Mythril is a well-known symbolic-execution tool for EVM bytecode.
Q: How is symbolic execution different from fuzzing?
A: Fuzzing runs the contract with many concrete (often randomized) inputs; symbolic execution reasons about inputs abstractly and uses a solver to compute inputs that reach specific states.
Q: Why can symbolic execution be slow?
A: Each branch multiplies the number of paths to analyze ("path explosion"), so large or loop-heavy contracts can produce more paths than can be explored exhaustively.
Related terms
Firepan
Run a free surface scan — results in minutes, no credit card required.
Run Free Scan →