transfer(...) and transferFrom(...) are called without checking return values. Some ERC20 implementations return false instead of reverting on failure.
Likelihood:
Some ERC20 tokens do not revert on failure and instead return false. Ignoring the return value means the contract assumes success even when the transfer failed.
Impact:
contest funding or reward payout may appear successful while no tokens actually move, causing inconsistent state and potential fund loss.
Deploy a malicious ERC20 token where transfer and transferFrom return false.
Create a contest via ContestManager.createContest(...).
Approve ContestManager for the contest token.
Call ContestManager.fundContest(0).
Observe that the call does not revert, but the Pot contract does not receive the tokens.
Use OpenZeppelin SafeERC20 and call safeTransfer / safeTransferFrom.
Or add explicit checks such as require(token.transfer(...), "Transfer failed").
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.