The faucet should always dispense a strictly positive amount of tokens and ETH per claim; users should never be able to trigger a claim that emits Claimed(user, 0)
or SepEthDripped(user, 0)
.
The owner can accidentally or maliciously set faucetDrip
or sepEthAmountToDrip
to zero (or sub-wei values).
A user can still call claimFaucetTokens()
, pay gas, emit events with amount = 0
, and increment dailyClaimCount
/totalClaimed
, wasting storage and polluting the event log.
At scale this becomes a zero-cost DoS: bots can fill the daily quota with empty claims, denying real users both tokens and ETH for the rest of the day.
Likelihood:
Reason 1: Owner function adjustFaucetDrip/sepEth
has no require(newAmount > 0)
, so mis-configuration or fat-finger is one tx away.
Reason 2: Once faucetDrip == 0
, any bot can cheaply loop 100×, fill dailyClaimCount == dailyClaimLimit
for ~2 M gas, blocking legitimate users for 24 h.
Impact:
Impact 1: Permanent DoS for the calendar day—real users revert on DailyClaimLimitReached
.
Impact 2: Storage bloat (dailyClaimCount
, lastClaimTime
, totalClaimed
maps) and event-log spam force archive-node growth and degrade UX.
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.
The contest is complete and the rewards are being distributed.