Expected behavior:
The faucet should allow the owner to mint new tokens only when the faucet’s balance runs low — ideally with clear upper limits or supply controls to maintain the integrity of the token’s economics and prevent accidental over-minting.
Actual behavior:
The mintFaucetTokens() function allows the owner to mint an arbitrary number of new tokens to the faucet’s address (address(this)), with no effective supply cap or total supply limit. The only check in place (balanceOf(address(this)) > 1000 * 10 ** 18) does not prevent inflation — it simply reverts if the faucet already has more than 1000 tokens, not if it exceeds a maximum total supply.
As a result, the owner can continuously mint new tokens without bound, undermining token scarcity and creating potential inconsistencies between testnet and mainnet behavior.
Likelihood
1.High, since any owner interaction can trigger it, even unintentionally.
2.Low technical barrier: The vulnerability is accessible through a single function call.
Impact:
1.Inflation risk: The faucet owner can mint unlimited tokens.
2.Economic inconsistency: Testnet token behavior won’t match real deployment economics.
3. Trust issue: If adapted to mainnet or reused elsewhere, unrestricted minting could devalue tokens.
Explanation
This test shows that the owner can repeatedly call mintFaucetTokens() to create arbitrary amounts of tokens. The balance-based check doesn’t prevent this since it only compares against a static threshold. As a result, the faucet contract can hold billions of tokens, rendering the supply logic meaningless and allowing unbounded inflation.
Explanation:
Introduce a maximum total supply cap and enforce it within the mintFaucetTokens() function.This ensures the total minted tokens never exceed a defined maximum supply, preventing uncontrolled inflation while still allowing the faucet to refill tokens safely as intended.
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.