We ran a full 9-pass structural analysis pipeline on the ERC-8183 specification using Prism Oracle and found 10 issues (7 HIGH, 3 MEDIUM).
HIGH-severity
setBudget() authorization mismatch — Spec says client OR provider, implementation restricts to provider only
- Missing
expectedBudget field — No front-running protection for budget negotiation
_msgSender() not used despite ERC-2771 mention — Meta-transactions broken
- Hook reentrancy via
afterAction — No reentrancy guards on hook execution
- Hook whitelist lacks removal mechanism — Unbounded gas accumulation
- Budget negotiation deadlock — No timeout, interaction locks permanently
- Evaluator fee incentive distortion — Pays per-evaluation regardless of quality
MEDIUM-severity
- Missing event emissions for state transitions
- No maximum evaluator count (unbounded gas)
- Hardcoded USD denomination assumption
Conservation Law
Decision Centralization × Temporal Efficiency = Constant — more evaluators produce better decisions but lock capital longer.
Full report (2,595 lines): https://github.com/Cranot/prism-oracle/blob/master/examples/erc8183-full-pipeline.md
Built for Synthesis Hackathon 2026 — Prism Oracle
We ran a full 9-pass structural analysis pipeline on the ERC-8183 specification using Prism Oracle and found 10 issues (7 HIGH, 3 MEDIUM).
HIGH-severity
setBudget()authorization mismatch — Spec says client OR provider, implementation restricts to provider onlyexpectedBudgetfield — No front-running protection for budget negotiation_msgSender()not used despite ERC-2771 mention — Meta-transactions brokenafterAction— No reentrancy guards on hook executionMEDIUM-severity
Conservation Law
Decision Centralization × Temporal Efficiency = Constant — more evaluators produce better decisions but lock capital longer.
Full report (2,595 lines): https://github.com/Cranot/prism-oracle/blob/master/examples/erc8183-full-pipeline.md
Built for Synthesis Hackathon 2026 — Prism Oracle