Skip to content

v0.3.0 — Per-Callback Bytecode Isolation

Choose a tag to compare

@augusttw augusttw released this 31 Jul 15:39
· 3 commits to master since this release

v0.3.0

What's New

  • Per-callback bytecode isolation: risk analysis now runs on each callback's own isolated code path — from its dispatcher JUMPDEST to its terminator — instead of scanning the whole contract. Eliminates false positives where one callback's SSTORE/CALL flagged unrelated callbacks.
  • Real dispatcher jumpdest capture: the dispatcher parser now understands PUSH4 selector → EQ → PUSH2 dest → JUMPI and records the actual handler entry PC (previously hardcoded to 0, which made isolation impossible).
  • Unit tests for dispatcher parsing and segment isolation on synthetic bytecode.

Fixes

  • Fixed index-vs-PC confusion in segment extraction (bytecode PCs were being used as instruction indices).
  • Fixed premature segment termination on internal JUMPDESTs (conditional branches no longer cut analysis short).

Notes

  • Static analysis remains point-in-time only. Upgradeable hooks (EIP-1967) can change implementation between scan and interaction.