The AttackerBountyClaimed event should track actual bounty transfers so off-chain indexers can rely on it.
The emit sits outside the if (payout > 0) block, so a bounty call that transfers nothing still emits AttackerBountyClaimed(attacker, 0, ...), and claimsStarted is not set on that branch — the event and the state transition are inconsistent.
Likelihood:
Occurs on a bounty call that resolves to payout == 0 (practically reachable only via a defective stake token, since the pool balance equals the entitlement at flag time).
Impact:
Off-chain indexers may record a spurious zero-value bounty-claim event; the event is emitted without the corresponding state change. Cosmetic; no funds affected.
test/fuzz/ConfidencePool.qa.t.sol asserts the event args on a real full claim; the residual is that the
same emit also runs on the payout == 0 path:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
View preliminary resultsAppeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.