The WinningToken
contract does not mint any initial token supply at deployment and lacks a maximum supply cap. While the mint()
function is restricted to the contract owner, this design introduces potential operational pitfalls and economic risks. The absence of a maximum supply constraint allows for indefinite minting, which may undermine user trust, compromise tokenomics, and increase the likelihood of accidental or malicious over-minting.
There are two major issues with the current design:
No Initial Supply Minted at Deployment
The constructor lacks logic to mint tokens, requiring a manual mint()
call post-deployment. If omitted, this could cause dependent contracts or frontends to break due to a zero totalSupply()
. It also introduces inconsistency in automated deployments and testnets.
No Maximum Supply Cap Defined
The mint()
function allows unbounded minting. Without a hard cap, the total supply can grow indefinitely, which:
Undermines the economic model of the token
Breaks trust in the scarcity and value of the token
Introduces risks if the owner key is compromised or misused
Loss of Trust: Users and integrators cannot be assured of token scarcity or supply integrity.
Tokenomics Breakdown: Without a hard cap, it's impossible to define a predictable economic model.
Potential Over-Minting: Future developers or compromised owners could mint excessive tokens, leading to dilution or economic collapse of the token system.
Manual Code Review
To resolve both issues and ensure robustness:
Define a constant MAX_SUPPLY
to restrict total mintable tokens.
Enforce the supply cap within mint()
.
Optionally mint an initial supply in the constructor for immediate utility.
Code suggestions or observations that do not pose a direct security risk.
Code suggestions or observations that do not pose a direct security risk.
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.