Normal Behavior
The earnSnow() function is intended to allow each user to mint 1 Snow token per week for free, until the farming period ends.
This mechanism is expected to:
Enforce a per-user limit
Prevent a single address from accumulating an unfair share of Snow supply
Issue
The earnSnow() function enforces a global cooldown using s_earnTimer, instead of tracking minting per user.
There is:
❌ No per-user mint tracking
❌ No per-user limit
❌ No global supply cap
As a result, the same address can mint Snow tokens indefinitely, once every week, for the entire farming duration.
Because the timer is global and not tied to msg.sender, nothing prevents the same address from repeatedly calling earnSnow() every week.
Likelihood:
Reason 1: Permissionless — any address can call earnSnow()
Reason 2: No special timing or setup required
Reason 3: Fully deterministic and repeatable
Impact:
Impact 1: A single user can accumulate an outsized share of Snow supply for free
Impact 2: Token supply inflation undermines Snow’s intended economic model
Impact 3: Fair distribution assumptions are violated
This proof of concept demonstrates that earnSnow() lacks per-user enforcement and allows unlimited free minting by the same address over time.
No additional accounts, permissions, or external contracts are required.
Track free mint eligibility per user and optionally enforce a maximum number of free mints.
Optionally:
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.