The BurnMintERC20 contract implements a standard ERC-20 token with minting and burning capabilities, leveraging OpenZeppelin's AccessControl for role management. The contract exhibits good adherence to established patterns and includes checks to prevent self-locking of tokens. However, a critical design flaw exists where initializing the token with a maxSupply of zero effectively bypasses the maximum supply limit, allowing for unlimited minting. Additionally, the contract relies on a centralized DEFAULT_ADMIN_ROLE for critical operations, posing a single point of control risk. Immutable token parameters, while providing stability, also limit future adaptability.

On-chain security analysis — is it a scam or legit?
Is Falcon Finance Safe?
Not verified
This record has not gone through deep verification and is not being monitored. The score is a dated snapshot — the token’s risk can change at any time.Own this token? Put it under verification →The BurnMintERC20 contract implements a standard ERC-20 token with minting and burning capabilities, leveraging OpenZeppelin's AccessControl for role management.
Read the full analysis- Ownership not renounced
- Mintable supply, nominal cap 1945%/year — effectively unbounded
- Top-10 concentration > 70%
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 98.9%
- LP top3 unlocked holders = 99.8%
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
Exact factors
- Ownership NOT renounced (admin/mint authority retained)
- Mintable supply, nominal cap 1945%/year — effectively unbounded
- Top-10 concentration > 70% (98.1% total → 97.4% effective; 97.0% in EOAs, 1.1% in contracts — extreme)
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 98.9% (independent LP — depth risk, pool = 98% of DEX liquidity)
- LP top3 unlocked holders = 99.8% (independent LP — depth risk, pool = 98% of DEX liquidity)
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
Each factor is an on-chain fact recorded at the time of this analysis. The score is computed from them by a deterministic function, so the same contract returns the same score for anyone who runs the audit. How scores are computed
Security Checklist
as of audit · Sep 4Holders
as of audit · Sep 4, 2026- Contractstreasury, vesting, bridge, staking1.1%
- Walletsanonymous holders, free to sell97.0%
- Everyone elsethe rest of the supply1.9%
How holder types affect the score
Share held by contracts — treasury, vesting, bridge or staking — is discounted against share held by wallets when the score is computed: a contract cannot decide to sell the way an anonymous holder can, though it can still be drained or voted to sell. Effective concentration is the figure the risk score is actually calculated from.
Holder balances as recorded by the audit of Sep 4, 2026
Liquidity
as of audit · Sep 4- Pancakeswap v3USDTAnalysed$4.12M98.3%
- Pancakeswap v3USDf$51.5K1.2%
- UniswapUSDT$20.5K0.5%
- Pancakeswap v3USDT$2130.0%
- Pancakeswap v2火星$40.0%
- Pancakeswap v2USDT$00.0%
Show 1 more pair
The risk score reads depth across every pair.
The LP tokens of the analysed pool are not locked or burned, so whoever holds them can withdraw that liquidity.
0x3dc3…2f0e0x5ad1…2cb00x4835…1de10x4a61…42010xe90d…1e95No privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
HighMax Supply Bypass if Zero
The mint function includes a check `if (i_maxSupply != 0 && totalSupply() + amount > i_maxSupply) revert MaxSupplyExceeded(...). If i_maxSupply is initialized to 0 in the constructor, the condition i_maxSupply != 0 evaluates to false. Due to short-circuiting in the && operator, the second part of the condition (totalSupply() + amount > i_maxSupply`) is never evaluated. This effectively bypasses the maximum supply check, allowing for an unlimited supply of tokens to be minted if maxSupply_ is set to 0 during deployment, contrary to the apparent intent of having a maxSupply parameter.H-01
Issue
The mint function includes a check `if (i_maxSupply != 0 && totalSupply() + amount > i_maxSupply) revert MaxSupplyExceeded(...). If i_maxSupply is initialized to 0 in the constructor, the condition i_maxSupply != 0 evaluates to false. Due to short-circuiting in the && operator, the second part of the condition (totalSupply() + amount > i_maxSupply`) is never evaluated. This effectively bypasses the maximum supply check, allowing for an unlimited supply of tokens to be minted if maxSupply_ is set to 0 during deployment, contrary to the apparent intent of having a maxSupply parameter.
Fix
Modify the mint function's condition to explicitly check for a positive maxSupply before enforcing the limit. For example, change if (i_maxSupply != 0 && ...) to if (i_maxSupply > 0 && ...) or restructure the logic to handle i_maxSupply == 0 as an 'unlimited' case if that is the intended behavior, or revert in the constructor if maxSupply_ is 0 and a limit is always expected.
Status
Unresolved
MediumCentralized Control by DEFAULT_ADMIN_ROLE
The DEFAULT_ADMIN_ROLE holds significant power within the contract. The address with this role can grant and revoke MINTER_ROLE and BURNER_ROLE, effectively controlling the token's supply. Additionally, the setCCIPAdmin function, which transfers the s_ccipAdmin role, is also restricted to the DEFAULT_ADMIN_ROLE. This centralization introduces a single point of failure, where compromise of the DEFAULT_ADMIN_ROLE key could lead to unauthorized minting, burning, or administrative changes.M-01
Issue
The DEFAULT_ADMIN_ROLE holds significant power within the contract. The address with this role can grant and revoke MINTER_ROLE and BURNER_ROLE, effectively controlling the token's supply. Additionally, the setCCIPAdmin function, which transfers the s_ccipAdmin role, is also restricted to the DEFAULT_ADMIN_ROLE. This centralization introduces a single point of failure, where compromise of the DEFAULT_ADMIN_ROLE key could lead to unauthorized minting, burning, or administrative changes.
Fix
Consider implementing a multi-signature wallet for the DEFAULT_ADMIN_ROLE to distribute control and reduce the risk associated with a single point of failure. For critical operations like granting/revoking roles or changing the ccipAdmin, consider adding time-locks to allow for community review or emergency intervention periods.
Status
Unresolved
InfoImmutable Token Parameters
The i_decimals and i_maxSupply variables are declared as immutable, meaning their values are set once in the constructor and cannot be changed thereafter. While this provides stability and predictability for the token's core properties, it also means that these parameters cannot be adjusted in the future, even if unforeseen circumstances or evolving protocol requirements necessitate a change.I-01
Issue
The i_decimals and i_maxSupply variables are declared as immutable, meaning their values are set once in the constructor and cannot be changed thereafter. While this provides stability and predictability for the token's core properties, it also means that these parameters cannot be adjusted in the future, even if unforeseen circumstances or evolving protocol requirements necessitate a change.
Fix
Ensure that the chosen decimals and maxSupply values are thoroughly reviewed and confirmed to meet all current and anticipated future requirements of the protocol. If future flexibility for these parameters is desired, consider an upgradeable contract pattern or a mechanism to migrate to a new token contract.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract is built upon well-audited OpenZeppelin libraries (ERC20, ERC20Burnable, AccessControl), contributing to strong code security (7.2). It includes robust checks in _transfer, _approve, and mint to prevent tokens from being sent to or approved by the contract itself, enhancing operational safety (7.8). However, a significant technical vulnerability (7.2) lies in the mint function's maxSupply check, which can be bypassed if i_maxSupply is initialized to zero, leading to potential unlimited token issuance. The access control (7.3) for minting and burning roles is appropriately enforced via AccessControl roles, but the DEFAULT_ADMIN_ROLE holds substantial power.
The economic model (7.4) is based on a standard ERC-20 token with a configurable maximum supply and pre-minting. A key economic risk is the potential for unlimited token supply if i_maxSupply is initialized to zero, which could devalue existing tokens. Governance (7.5) is centralized, with the DEFAULT_ADMIN_ROLE having control over granting MINTER_ROLE and BURNER_ROLE, as well as setting the s_ccipAdmin. This centralization, while common, introduces a single point of failure and requires robust key management for the admin address.
The contract is not designed as an upgradeable proxy (7.7). Therefore, there are no specific upgrade safety issues to assess. Any changes to the contract logic would require a new deployment and migration of assets, if applicable.
It is crucial to ensure that the maxSupply_ parameter in the constructor is always initialized to a non-zero value greater than preMint if a maximum supply limit is intended.
Implement robust operational procedures for the DEFAULT_ADMIN_ROLE to mitigate the risks associated with centralized control, including multi-signature wallets or time-locks for critical actions. Consider the implications of immutable parameters and ensure they align with long-term project goals before deployment.
Contract & Record
Free for any token on the record. It links to this page and always shows the current score and the date it was checked.
- Aug 12, 202678High
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Would You Like a More Detailed Audit of Falcon Finance?
Our AI-powered scanner gives you a deeper, real-time smart contract analysis — free, with every scoring factor shown.
Get Detailed Audit Is this your token? Publish your own audit on this page