Snowman Merkle Airdrop

AI First Flight #10
Beginner FriendlyFoundrySolidityNFT
EXP
View results
Submission Details
Impact: medium
Likelihood: medium
Invalid

Snow.collectFee() Uses .transfer() Not .safeTransfer() for WETH

Root + Impact

Description

  • Line 103 uses i_weth.transfer() -- the raw IERC20 method. While SafeERC20 is imported and activated (using SafeERC20 for IERC20), the .transfer() call resolves to the native IERC20 method, not safeTransfer(). For tokens that don't return a bool (e.g. USDT), this would revert.

i_weth.transfer(s_collector, collection); // raw transfer, not safeTransfer

Risk

Likelihood:

  • Works with current mock but breaks with non-standard tokens.

Impact:

  • Fee collection permanently reverts, locking all accumulated WETH and ETH fees.

Proof of Concept

i_weth.transfer(s_collector, collection); // raw transfer, not safeTransfer

Recommended Mitigation

- i_weth.transfer(s_collector, collection);
+ i_weth.safeTransfer(s_collector, collection);
Updates

Lead Judging Commences

ai-first-flight-judge Lead Judge about 3 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!