Normal behavior: The owner should be able to close a pot after the 90-day claim window and distribute remaining rewards to all claimants.
Issue: closePot() calls _transferReward() (which calls i_token.transfer) inside a loop. If any claimant is a contract that reverts during the transfer, it blocks the entire pot closure, permanently locking the funds.
Likelihood:
Occurs whenever at least one claimant is a contract that reverts during ERC20 transfer.
Happens whenever closePot() is called after multiple claimants exist.
Impact:
closePot() becomes permanently uncallable.
Remaining rewards are permanently locked in the contract.
Severity: High (H)
Explanation:
External calls inside loops are removed.
Each claimant withdraws their reward individually.
Prevents DoS even with malicious claimants.
Maintains accounting correctness.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.