The Snow protocol incorrectly uses a global cooldown timer (s_earnTimer
) for earnings. This design flaw makes all users share the same timer, enabling griefing or denial-of-service (DoS) by a single user.
Likelihood:
This will occur whenever more than one user attempts to earn Snow in the same 7-day period. Once one user triggers earnSnow()
, others will find themselves blocked, regardless of when they last interacted
Inactive or malicious accounts can grief the protocol by calling earnSnow()
once per week, locking out all other users from claiming rewards — effectively creating a low-cost denial of service.
Impact:
One user can block earnings for all others.
Users are incentivized to grief or race to block others.
Breaks UX and fairness.
Here, ashley
earns 1 Snow and updates s_earnTimer
. jerry
is then blocked despite being a different user — highlighting the flaw in using a shared cooldown.
Replace the global s_earnTimer
with a per-user cooldown using a mapping.
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.