The Snow.sol contract uses SafeERC20 for WETH interactions in buySnow(), but inconsistently uses the unsafe transfer() function in collectFee().
Some ERC20 tokens (including some WETH implementations) do not return a boolean on transfer(), or return false on failure instead of reverting. Using the raw transfer() function without checking the return value can cause silent failures.
Likelihood:
The constructor validates that _weth is not address(0), but does not verify it's a compliant ERC20
Non-standard WETH implementations or wrapper tokens may not follow the expected return value pattern
The likelihood increases if the contract is deployed on L2s or sidechains with different WETH implementations
Impact:
WETH fee collection may silently fail while the function reports success
Accumulated WETH fees could become stuck in the contract
The collector believes fees were received when they were not
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.