Normal behavior:
The burnFaucetTokens() function should allow the contract owner to burn a specified number of faucet tokens (amountToBurn) directly from the contract’s balance, thereby reducing total supply and maintaining consistency in the faucet’s token economy.
Issue:
The original implementation transferred the entire contract balance to the owner before burning only amountToBurn tokens from the owner’s wallet.
This resulted in the faucet contract’s balance becoming zero, while the owner retained unburned tokens that were unintentionally transferred, breaking supply logic and faucet token flow.
Likelihood:
High — The condition triggers every time burnFaucetTokens() is executed, since the full contract balance is always transferred to the owner.
The issue is not dependent on external input or edge cases — it’s deterministic and reproducible.
Impact:
Owner receives all faucet tokens each time, regardless of burn amount.
Token supply metrics become inaccurate, leading to loss of trust, and broken faucet mechanics.
Could potentially allow accidental or malicious draining of faucet tokens.
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.