The earnSnow function should allow individual users to claim 1 Snow token weekly during the 12-week farming period, with each user having their own independent cooldown timer.
The s_earnTimer is implemented as a global variable that gets reset to the current timestamp on every single call to buySnow or earnSnow, continuously pushing the cooldown period forward for all users and effectively preventing anyone from ever successfully claiming weekly rewards.
Likelihood:
Every single call to buySnow or earnSnow by any user resets the global timer for all users
Normal legitimate usage of buySnow continuously prevents all users from calling earnSnow
Attackers can sustain indefinite denial by calling buySnow once per week at minimal cost
No coordination or timing required - any protocol interaction triggers the vulnerability
Impact:
The earnSnow reward mechanism becomes permanently unusable for the entire 12-week farming period
All users are denied their expected weekly token distributions worth significant economic value
Protocol fails to deliver core tokenomics functionality, leading to complete loss of user trust
When buySnow is successfully called, the global timer is reset. This inadvertently affects the earning of snow as that particular action also depends on the global timer.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.