Commit 6fdd5c8
committed
feat(events): replace symbolic execution with structural classify-resolve pipeline
Replace the old multi-round symbolic execution engine with a two-phase
Classify→Resolve pipeline for event selector extraction.
Phase 1 (Classify): Build CFG, collect LOG sites, run single-block symbolic
execution to determine topic0 source type (Push32/PushN/MloadCodecopy/CrossBlock).
Phase 2 (Resolve): Extract event hashes per class — direct bytecode read for
Push32/PushN, CODECOPY argument analysis for MloadCodecopy, BFS backward
traversal through predecessor blocks for CrossBlock.
Additional improvements:
- ContinuationCache + BlockStateCache for CrossBlock resolution
- Precise CODECOPY resolver with size=32 validation
- Known non-event constants blocklist (27 entries, e.g. role hashes, EIP-712)
- Forward reachability validation using function entry contexts
Code reduced from ~5,700 lines to ~950 lines.1 parent 6f3bb09 commit 6fdd5c8
6 files changed
Lines changed: 1010 additions & 3392 deletions
0 commit comments