Description:
The earnSnow()
function is designed to allow users to claim 1 Snow token per week. However, the contract uses a global timestamp s_earnTimer
, which resets whenever any user claims or buys Snow.
As a result, once a user claims Snow, all other users are locked out for 7 days, enabling malicious users to continuously block others from accessing the reward.
Likelihood:
Very easy to exploit by repeatedly calling earnSnow()
or triggering buySnow()
before others.
DoS can be executed by a single wallet at very low cost.
Affects real users in a live environment.
Impact:
Legitimate users unable to claim their free Snow rewards
Centralization of the free reward system
Frustration and potential user churn
Can be used for sybil farming by bots
Explanation:
Global timer design punishes all users. Since anyone can reset the timer, it enables permanent locking unless fixed.
Explanation:
Switching to a per-user claim timer ensures that each user can claim once every 7 days independently. Prevents abuse and creates a fairer, scalable reward model.
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.