corruptedReserve is updated during claims and sweeps but never emits a dedicated event. Off-chain indexers and subgraphs cannot track reserve consumption without polling the on-chain view function.
corruptedReserve tracks the remaining pool balance reserved for CORRUPTED claims. It is written at three claim/sweep sites:
None of these sites emit a dedicated event for the reserve change. ClaimCorrupted, AttackerBountyClaimed, and UnclaimedCorruptedSwept emit the claim/sweep amounts, but not the new corruptedReserve value. An off-chain indexer must reconstruct the reserve by capturing the initial value from OutcomeFlagged params and tracking every subsequent claim event. This is fragile: a missed event or chain reorg causes the indexer state to diverge from on-chain reality.
ConfidencePool.sol is listed in the contest scope (589 nSLOC total). The claimCorrupted, claimAttackerBounty, and sweepUnclaimedCorrupted functions are in the deployed bytecode. This finding does not rely on any out-of-scope dependency.
CodeHawks Low: issues not exploitable under normal circumstances but representing poor practices or deviations from best practices. No fund loss. On-chain state is always correct and queryable via view functions. The gap is purely off-chain observability.
No prior audit reports flag missing events on corruptedReserve. The existing events (ClaimCorrupted, AttackerBountyClaimed, UnclaimedCorruptedSwept) emit claim amounts but not the resulting reserve value. This finding identifies a specific missing event not covered by any prior report.
The condition triggers on every CORRUPTED claim or sweep. No external preconditions. The on-chain state is correct; only off-chain indexers are affected.
Off-chain monitoring tools (subgraphs, dashboards, liquidation bots) may display stale or incorrect reserve values. No direct fund loss. Degrades auditability and operational safety.
Only line 361 (inside flagOutcome) is covered by OutcomeFlagged event. Lines 418, 447, 465 have no corresponding event for corruptedReserve.
Emit a CorruptedReserveUpdated event on every reserve change:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.