Under normal behavior, users paying for SNOW tokens should receive the corresponding number of tokens denominated in the ERC20’s base units (typically 18 decimals). For example, paying for 5 SNOW should mint 5 * 10^18 base units.
However, the buySnow function mints amount directly without scaling by decimals(). As a result, if a user enters amount = 5, they are minted only 5 base units (wei) of SNOW instead of 5 * 10^18. Users are therefore charged for full tokens but receive nearly zero on-chain balance.
Likelihood:
This occurs whenever a user enters a human-readable token quantity instead of already-scaled base units.
The contract consistently under-mints because it does not multiply by 10^decimals before calling _mint.
Impact:
Users overpay for tokens and receive negligible amounts on-chain.
Protocol behavior does not match economic intent and can lead to confusion, complaints, or loss of trust.
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.