Normal behavior:
The faucet contract tracksdailyDrips to enforce a daily ETH distribution cap dailySepEthCap) This value should reset only once per new day when currentDay > lastDripDay to ensure ETH drip limits are properly enforced within each 24-hour period.
Issue:
The current implementation incorrectly resets dailyDrips to zero in the else branch, which executes whenever a user has already claimed ETH or when ETH drips are paused.
This logic unintentionally clears the daily counter even when a new day has not started, allowing subsequent calls to exceed the intended dailySepEthCap.
As a result, the faucet may reset the ETH drip limit multiple times within the same day, effectively bypassing the daily ETH cap mechanism.
Likelihood:
Occurs each time a user calls claimFaucetTokens() after already claiming ETH once.
The else branch is triggered frequently under normal operation (for all returning users and when ETH drips are paused).
Impact:
dailyDrips counter can be reset multiple times per day, allowing the contract to distribute more ETH than intended.
Breaks the faucet’s rate-limiting and resource control guarantees, leading to ETH depletion from the contract.
dailyDrips should only reset when a new 24-hour period begins if (currentDay > lastDripDay), not inside the else branch.
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.