faucetDrip balance leads to unnecessary reverts (edge-case DoS)When the faucet contract holds exactly faucetDrip tokens, one claimant should be able to claim those tokens successfully.
The balance guard uses <= instead of <. When balanceOf(address(this)) == faucetDrip, the function reverts, blocking a legitimate final claim.
Likelihood:
Occurs whenever the faucet balance is driven to exactly faucetDrip (e.g., after burns/refills or steady usage).
Common during tests or operational refills where exact amounts are minted or left over.
Impact:
Edge-case DoS: prevents the final valid claim, leaving tokens stranded until balance changes.
Poor UX/operability: contradicts expected behavior and complicates automated tests/refills.
The test sets the faucet’s balance to exactly faucetDrip and then attempts a claim. Because the contract uses <= instead of <, the claim incorrectly reverts at this edge case, proving the off-by-one bug.
Remove the <=and use <instead to solve the problem.
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.