The audit of the Token contract revealed a significant design flaw in the transfer mode management, leading to an irreversible state where transfer restrictions cannot be re-enabled once set to 'normal'. This poses a high economic and operational risk. Other findings include centralized control over transfers and minor theoretical overflow concerns. The contract generally follows OpenZeppelin patterns for ERC20 and Ownable functionality.

On-chain security analysis — is it a scam or legit?
Is Broccoli 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 audit of the Token contract revealed a significant design flaw in the transfer mode management, leading to an irreversible state where transfer restrictions cannot be re-enabled once set to 'normal'.
Read the full analysis- Top-10 concentration > 30%
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
- 1 Low finding(s) from audit
Exact factors
- Top-10 concentration > 30% (74.1% total → 46.5% effective; 28.0% in EOAs, 46.2% in contracts — moderate)
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
- 1 Low 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, staking46.2%
- Walletsanonymous holders, free to sell28.0%
- Everyone elsethe rest of the supply25.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 v3WBNBAnalysed$1.04M100.0%
- UniswapUSDC$840.0%
- Pancakeswap v2Subject 3$220.0%
- TopazWBNB$140.0%
- Pancakeswap v2BTCB$10.0%
The risk score reads depth across every pair.
The LP tokens of the analysed pool are locked or burned.
0x5036…6a200xaded…46b60x832e…381e0x67a6…5bb90x467b…71320xded4…a78e0x26b3…c34c0xeb7c…369d0xef7c…e878No privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
HighIrreversible Transfer Mode Change
The setMode function contains a condition if (_mode != MODE_NORMAL) { _mode = v; }. This logic prevents the owner from changing the _mode if it is currently MODE_NORMAL. Consequently, once the token's transfer mode is set to MODE_NORMAL, the owner permanently loses the ability to re-enable transfer restrictions (e.g., MODE_TRANSFER_RESTRICTED or MODE_TRANSFER_CONTROLLED). This removes a critical control mechanism that could be necessary for security incidents or market stability.H-01
Issue
The setMode function contains a condition if (_mode != MODE_NORMAL) { _mode = v; }. This logic prevents the owner from changing the _mode if it is currently MODE_NORMAL. Consequently, once the token's transfer mode is set to MODE_NORMAL, the owner permanently loses the ability to re-enable transfer restrictions (e.g., MODE_TRANSFER_RESTRICTED or MODE_TRANSFER_CONTROLLED). This removes a critical control mechanism that could be necessary for security incidents or market stability.
Fix
Remove the conditional check if (_mode != MODE_NORMAL) from the setMode function. This will allow the owner to freely switch between all defined modes, including re-enabling restrictions after the token has been in MODE_NORMAL. Ensure that the owner's private key is secured.
Status
Unresolved
MediumCentralized Control over Token Transfers
The Token contract grants the owner() (deployer) significant control over token transferability through the setMode function. The owner can restrict all transfers (MODE_TRANSFER_RESTRICTED) or limit them to only transfers involving the owner (MODE_TRANSFER_CONTROLLED). While this offers flexibility, it introduces a high degree of centralization, where a single entity can unilaterally halt or control token movements, posing a risk of censorship or manipulation.M-01
Issue
The Token contract grants the owner() (deployer) significant control over token transferability through the setMode function. The owner can restrict all transfers (MODE_TRANSFER_RESTRICTED) or limit them to only transfers involving the owner (MODE_TRANSFER_CONTROLLED). While this offers flexibility, it introduces a high degree of centralization, where a single entity can unilaterally halt or control token movements, posing a risk of censorship or manipulation.
Fix
Consider implementing a multi-signature wallet for the owner address to reduce the single point of failure. For long-term decentralization, explore integrating a governance mechanism (e.g., DAO) to manage the _mode parameter, or transition to a fully permissionless state where _mode is permanently MODE_NORMAL after a certain period or condition.
Status
Unresolved
LowTheoretical Overflow in unchecked Blocks
The contract uses unchecked blocks for _balances[to] += amount in _transfer and _mint, and _totalSupply += amount in _mint. While Solidity 0.8+ defaults to checked arithmetic, unchecked explicitly allows overflow. Although uint256 is extremely large, a theoretical overflow could occur if the sum of _balances[to] and amount (or _totalSupply and amount) exceeds type(uint256).max. This is highly improbable in practical scenarios for typical token values but is a theoretical edge case.L-01
unchecked BlocksIssue
The contract uses unchecked blocks for _balances[to] += amount in _transfer and _mint, and _totalSupply += amount in _mint. While Solidity 0.8+ defaults to checked arithmetic, unchecked explicitly allows overflow. Although uint256 is extremely large, a theoretical overflow could occur if the sum of _balances[to] and amount (or _totalSupply and amount) exceeds type(uint256).max. This is highly improbable in practical scenarios for typical token values but is a theoretical edge case.
Fix
For maximum robustness, consider adding explicit overflow checks within the unchecked blocks for additions, or ensure that the design inherently prevents such large sums. However, given the practical unlikelihood for uint256, this is a minor concern.
Status
Unresolved
InfoInitial Transfer Restriction
The Token contract's constructor initializes _mode to MODE_TRANSFER_RESTRICTED. This means that immediately after deployment, no token transfers are possible until the owner() explicitly calls setMode to change it to MODE_NORMAL or MODE_TRANSFER_CONTROLLED. This is an intended design choice but is crucial for users to understand.I-01
Issue
The Token contract's constructor initializes _mode to MODE_TRANSFER_RESTRICTED. This means that immediately after deployment, no token transfers are possible until the owner() explicitly calls setMode to change it to MODE_NORMAL or MODE_TRANSFER_CONTROLLED. This is an intended design choice but is crucial for users to understand.
Fix
Ensure that this initial state and the requirement for owner action to enable transfers are clearly documented and communicated to all prospective users and participants in the token ecosystem.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract implements a standard ERC20 token with custom transfer restriction logic (7.1 Architecture). Code security (7.2 Code Security) is generally robust, leveraging OpenZeppelin's unchecked blocks appropriately where underflow is prevented by prior checks. However, a critical flaw exists in the setMode function, which prevents the owner from re-enabling transfer restrictions once the mode is set to 'normal'. This represents a significant access control (7.3 Access Control) and operational (7.8 Operations) vulnerability.
The token's economic model (7.4 Economic) is heavily influenced by the owner's ability to control transferability. The initial state restricts all transfers, requiring owner intervention. The primary governance mechanism (7.5 Governance) is the Ownable pattern, granting the deployer significant power. The irreversible nature of setting the transfer mode to 'normal' poses a high economic risk, as the owner loses the ability to react to adverse events by restricting transfers, potentially impacting token stability or security.
The contract is not designed with an upgradeability pattern (7.7 Upgrades). Therefore, there are no specific upgrade-related risks to assess. Any changes to the contract's logic would require a new deployment and migration of assets.
It is strongly recommended to address the critical flaw in the setMode function to allow the owner to re-enable transfer restrictions after setting the mode to 'normal'.
This can be achieved by removing the if (_mode != MODE_NORMAL) condition. Additionally, consider implementing a timelock for sensitive owner actions to mitigate risks associated with centralized control. Ensure clear communication to users regarding the initial transfer restrictions and the owner's capabilities.
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.
- Sep 4, 20268Low
- Aug 11, 202610Low
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Would You Like a More Detailed Audit of Broccoli?
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