An off-by-one error in the balance check prevents users from claiming tokens when the faucet balance exactly equals faucetDrip, even though sufficient tokens exist for one more claim.
The faucet should reject claims when it has insufficient tokens for one claim.
Users should be able to claim when the faucet has exactly enough tokens for one claim.
The balance validation uses<= operator instead of <, incorrectly rejecting valid claims when the balance exactly matches the drip amount.
Line: 175 - 177
Low
Users cannot claim the final faucetDrip from the faucet
One potential first-time claimer loses the opportunity to receive ETH rewards
Minimal financial impact relative to the total token supply
Medium
The faucet will naturally reach this state during normal operation.
No external contract or special conditions required.
Users claim tokens normally until the faucet balance decreases.
When balanceOf(address(this)) == faucetDrip, the next claim reverts.
The final faucetDrip amount of tokens remains locked in the contract.
PreventFinalClaim.t.sol: https://github.com/Luu-Duc-Toan/2025-10-raisebox-faucet/blob/master/test/PreventFinalClaim.t.sol
Result:
Change the balance check to use strictly less-than (<) instead of less-than-or-equal-to (<=):
This allows users to claim when the faucet balance exactly equals faucetDrip, ensuring all available tokens can be distributed.
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.