MyCut

AI First Flight #8
Beginner FriendlyFoundry
EXP
View results
Submission Details
Impact: low
Likelihood: medium
Invalid

Unsafe ERC20 transfer usage may silently fail

Root + Impact

Description

The contracts use raw ERC20 transfer() and transferFrom() calls without checking return values.

Root Cause

Examples:

i_token.transfer(player, reward);
token.transferFrom(msg.sender, address(pot), totalRewards);

Some ERC20 tokens return false instead of reverting on failure.

Risk

Likelihood

  • Many non-standard ERC20 implementations exist.

  • Failed transfers may occur silently.

Impact

  • Reward transfers may fail without reverting transactions.

  • Incorrect accounting and stuck rewards may occur.

i_token.transfer(player, reward);
token.transferFrom(msg.sender, address(pot), totalRewards);

Proof of Concept

function testTransferFailure() public {
// Mock ERC20 returns false instead of reverting
// Protocol logic continues despite failed transfer
// Rewards become inconsistent
}

Recommended Mitigation

- token.transfer(...)
- token.transferFrom(...)
+ token.safeTransfer(...)
+ token.safeTransferFrom(...)
Use OpenZeppelin `SafeERC20` library for all ERC20 interactions.
Updates

Lead Judging Commences

ai-first-flight-judge Lead Judge about 2 hours ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!