Expected behavior:
When the faucet needs to burn tokens, the burn function should simply reduce the total supply by removing tokens from the faucet’s own balance, ensuring a clean and verifiable reduction in supply.
Actual behavior:
The burn function first transfers tokens before burning them, or otherwise uses redundant logic that increases gas cost and introduces potential reentrancy or balance mismatch issues.
If implemented incorrectly (for example, by burning after a transfer or by using the wrong address context), the burn process could either fail to reduce the total supply properly or burn tokens not owned by the intended address.
In some versions of the RaiseBox Faucet, the burn logic may even allow the owner to burn tokens only from msg.sender (not necessarily the faucet), which is inconsistent with the intended goal of burning faucet-owned tokens.
Likelihood
1.Medium — requires owner interaction but occurs under normal use (burning tokens).
2.High probability of confusion or error by maintainers.
Impact:
1. Incorrect burn behavior: The faucet’s balance remains high even after a “burn.”
2. Gas inefficiency: The owner must manually move tokens to perform burns.
3.Maintenance risk: Creates inconsistencies between faucet balance and total supply.
Explanation
The test demonstrates that burn() only affects the caller’s balance (msg.sender), not the faucet’s internal token reserves.
If the intent was to burn tokens from the faucet contract itself (to maintain proper supply control), this design fails that purpose and may leave unused tokens locked in the faucet.
Explanation:
Simplify the burn logic so it explicitly burns from the faucet’s own balance rather than from msg.sender. This ensures the burn reduces the faucet’s balance and the overall token supply directly, keeping accounting consistent and preventing gas-wasting transfers.
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.