Two different “day” calculations desynchronize ETH and token resets, letting savvy users claim more often than intended.
The ETH drip logic treats a day as block.timestamp / 24 hours, resetting counters when the integer day value changes.
The token claim limit uses block.timestamp > lastFaucetDripDay + 1 days, resetting exactly 24 hours after the prior reset; the mismatch lets users straddle the boundary and receive multiple resets within a single calendar day.
Likelihood:
The condition triggers every day boundary because the integer division resets hours before the + 1 days comparison flips.
Power users notice that claiming right before midnight UTC and again minutes later yields two ETH resets but only one claim reset, or vice versa.
Impact:
Attackers can chain claims around the seam to exceed either ETH or token limits, draining more resources than budgeted.
Honest users experience unexplained reverts or inconsistent allowances, damaging trust in the faucet.
Making claims right around the UTC day boundary in the PoC reveals that ETH and token counters reset at different times.
Unifying on the integer-day counter via this patch synchronizes the resets, removing the timing gap attackers can exploit.
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.