The protocol is designed to allow every eligible user to earn free SNOW once every week. Since this reward is intended to be distributed on a per-user basis, each participant should have an independent cooldown period. A successful claim by one user should not affect the eligibility of any other participant.
The contract tracks the weekly cooldown using a single global timestamp (s_earnTimer) instead of maintaining a separate timestamp for each user. As a result, whenever one user successfully calls earnSnow(), the cooldown is reset for every participant.
This allows a single active user to continuously claim the weekly reward as soon as the cooldown expires, effectively preventing every other user from earning their weekly SNOW rewards. Consequently, the reward distribution no longer functions independently for each user and can be monopolized by a single participant.
Likelihood:
Every successful call to earnSnow() updates the same global cooldown shared by all users.
An active participant can repeatedly claim immediately after the cooldown expires, preventing other users from successfully claiming their own weekly rewards.
Impact:
Legitimate users can be indefinitely prevented from receiving their weekly SNOW rewards.
The reward distribution becomes unfair because a single participant can monopolize the weekly reward mechanism.
The cooldown should be tracked individually for each user instead of using a single global timestamp. By storing the last claim timestamp for every participant, each user receives an independent one-week cooldown, preventing one user from blocking all others from earning their weekly SNOW rewards.
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.