Describe the normal behavior in one or more sentences
The `claimSnowman()` function reads the user's Snow token balance twice at different points in execution. If the balance changes between these reads (e.g., through a transfer), the amount used for minting may not match the amount validated in the Merkle proof, leading to incorrect NFT distribution.
Explain the specific issue or problem in one or more sentences
The function checks the balance early to ensure it's non-zero, then reads it again later to determine how many NFTs to mint. Between these two reads, the balance could change.
Likelihood:
* Users can transfer Snow tokens between the two balance reads
* Flash loan attacks could temporarily manipulate balances
* Reentrancy (though guarded) or external calls could change state
* Occurs when users have multiple transactions pending
Impact:
* Incorrect number of NFTs minted relative to Merkle proof
* Potential for minting more or fewer NFTs than intended
* Mismatch between staked amount and received NFTs
* Accounting inconsistencies
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.