a16z / halmos

A symbolic testing tool for EVM smart contracts

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

improve hash reasoning and performance

daejunpark opened this issue · comments

  1. evaluate symbolic terms with aggressive constant propagation, when concrete values are expected
    e.g., if we have x == 1 in the path condition, evaluate x + 1 to 2, for memory access, resolving external call target, etc.

  2. for constant hash expressions, add equalities between the term and its evaluation
    e.g., for sha3(1), add sha3(1) == <hash-image> in the constraints

  3. lazily generate the no hash collision axioms only when hash terms appear in branching conditions

  4. separate branching conditions from internally generated constraints