Users should be able to earn or buy SNOW tokens freely, with no restrictions from other user's actions
The contract uses a single shared timer (s_earnTimer). If one user earns or buys SNOW everyone else is blocked from earning for a full week
Likelihood:
Users frequently interact : Buying and earning SNOW are core functions, meaning the time resets often
NO restrictions on who triggers it: Any user (even accidentally) can lock others out by simply using the contract normally
Impact:
Unfair User Experience : Legitimate users are blocked from earning SNOW tokens simply because another user interacted with the contract first. This creates frustration and discourages participation
System Abuse Potential : A malicious actor can intentionally trigger the timer repeatedly effectively freezing SNOW earnings for all other users and disrupting the intended token distribution
This test demonstrates how the global s_earnTimer unfairly blocks all users when just one interacts with the contract.
Replaced global s_earnTimer with mapping(address => uint256) private s_earnTimer;
**Updated Functions ** to use caller-specific timers:
buySnow(): Sets timer only for msg.sender
earnSnow(): Checks/updates only the caller's timer
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.