The fundContest() function uses IERC20.transferFrom() to move tokens from the owner to the Pot contract, but does not check the return value. If the transfer fails silently (returns false), the contest will appear funded but actually has no tokens.
Likelihood: Medium - Depends on the token used; some tokens may fail transfers without reverting.
Impact:
Contest appears funded but has no tokens
Players will not be able to claim their rewards
Owner thinks contest is funded when it's not
Economic invariant broken: contest status doesn't match actual token balance
This POC demonstrates that when transferFrom() fails silently, the contest appears funded but actually has no tokens, preventing players from claiming their rewards.
Using OpenZeppelin's SafeERC20 library ensures that failed transferFrom() calls revert the transaction, preventing the contest from appearing funded when it actually has no tokens.
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.