The contract uses two different methods for calculating day boundaries, causing ETH drip limits and token claim limits to reset at different times.
Expected behavior: All daily limits should reset at the same time using consistent day calculation.
The bug uses division (block.timestamp / 24 hours) for ETH tracking but addition (block.timestamp > lastFaucetDripDay + 1 days) for token tracking, causing desynchronization.
Likelihood:
The desynchronization occurs automatically during every day transition as the contract operates normally
The two different calculation methods will inevitably drift apart over time, causing reset times to differ by potentially several hours
Impact:
Users face unpredictable and confusing behavior around day boundaries, not knowing when daily limits will reset
Opens potential for exploitation where users can time their claims to take advantage of the desynchronization between ETH and token limit resets
This test shows how the two day tracking mechanisms use different calculation methods and become desynchronized. After the first claim sets both tracking variables, we fast forward 25 hours and observe that the two methods treat "new day" differently, causing limits to reset at different times.
Use consistent day calculation throughout. Calculate day once using division and use it for both mechanisms to ensure synchronized resets.
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.