The Token contract implements a standard ERC20 token with an Ownable pattern and a unique transfer mode mechanism. The contract initializes in a restricted transfer state, requiring owner action to enable transfers. A key design choice is the irreversible transition to a fully normal transfer mode, which prevents future re-introduction of transfer restrictions. This audit identified a High severity issue related to this irreversible mode transition, alongside other Medium and Low severity findings concerning operational aspects and design choices.

On-chain security analysis — is it a scam or legit?
Is Banana For Scale 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 Token contract implements a standard ERC20 token with an Ownable pattern and a unique transfer mode mechanism.
Read the full analysis- Top-10 concentration > 20%
- LP top1 unlocked holder = 51.9%
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
- 1 Low finding(s) from audit
Exact factors
- Top-10 concentration > 20% (31.3% total → 28.3% effective; 26.3% in EOAs, 5.0% in contracts — mild)
- LP top1 unlocked holder = 51.9% (independent LP — depth risk)
- 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, staking5.0%
- Walletsanonymous holders, free to sell26.3%
- Everyone elsethe rest of the supply68.7%
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$4.20M100.0%
- Squadswap v2WBNB$3610.0%
- Pancakeswap v2SEKA$670.0%
- Pancakeswap v3USDT$600.0%
- Pancakeswap v2ESP$170.0%
- Pancakeswap v2Subject 3$170.0%
The risk score reads depth across every pair.
The LP tokens of the analysed pool are locked or burned.
0x5036…6a200xaded…46b60x59eb…d05f0xfe73…147a0xcc5e…b66e0x3cfe…27810xd5e4…2d600x2bc2…bb9dNo privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
HighIrreversible Transfer Mode Transition
The setMode function includes a condition if (_mode != MODE_NORMAL) { _mode = v; }. This logic prevents the owner from changing the transfer mode back from MODE_NORMAL (0) to MODE_TRANSFER_RESTRICTED (1) or MODE_TRANSFER_CONTROLLED (2) once MODE_NORMAL has been set. This means that once transfers are fully enabled, the ability to re-introduce restrictions (e.g., for security incidents, regulatory changes, or specific operational needs) is permanently lost. This design choice significantly limits future governance flexibility and could pose a risk if the protocol ever needs to pause or control transfers again.H-01
Issue
The setMode function includes a condition if (_mode != MODE_NORMAL) { _mode = v; }. This logic prevents the owner from changing the transfer mode back from MODE_NORMAL (0) to MODE_TRANSFER_RESTRICTED (1) or MODE_TRANSFER_CONTROLLED (2) once MODE_NORMAL has been set. This means that once transfers are fully enabled, the ability to re-introduce restrictions (e.g., for security incidents, regulatory changes, or specific operational needs) is permanently lost. This design choice significantly limits future governance flexibility and could pose a risk if the protocol ever needs to pause or control transfers again.
Fix
If the intention is to allow the owner to re-introduce transfer restrictions, remove the if (_mode != MODE_NORMAL) condition from the setMode function. This would allow the owner to freely switch between all defined modes. Alternatively, if the irreversible transition is intentional, ensure this design choice is clearly documented and understood by all stakeholders, acknowledging the permanent loss of control over transfer restrictions.
Status
Unresolved
MediumInitial Restricted Transfer Mode Requires Owner Action
The token contract is initialized with _mode = MODE_TRANSFER_RESTRICTED in its constructor. This means that immediately after deployment, all token transfers will revert with the message 'Token: Transfer is restricted'. The token will remain unusable for transfers until the owner explicitly calls setMode(MODE_NORMAL) to enable full transferability. This introduces an essential post-deployment operational step that, if missed or delayed, could lead to user confusion and hinder the token's initial utility.M-01
Issue
The token contract is initialized with _mode = MODE_TRANSFER_RESTRICTED in its constructor. This means that immediately after deployment, all token transfers will revert with the message 'Token: Transfer is restricted'. The token will remain unusable for transfers until the owner explicitly calls setMode(MODE_NORMAL) to enable full transferability. This introduces an essential post-deployment operational step that, if missed or delayed, could lead to user confusion and hinder the token's initial utility.
Fix
Ensure that the deployment process includes a clear step for the owner to call setMode(MODE_NORMAL) immediately after deployment to enable token transfers. Provide clear documentation for users and operators regarding this initial restricted state and the necessary owner action. Alternatively, consider initializing the token in MODE_NORMAL if immediate transferability is desired, or provide a time-locked mechanism for the mode change.
Status
Unresolved
LowFixed Supply and No Public Mint/Burn Functions
The _mint function is only invoked once during the contract's constructor to mint the initial totalSupply to the owner. There are no public or owner-controlled functions (e.g., mint(), burn()) provided in the Token contract to allow for additional token creation or destruction after deployment. This design results in a fixed total supply for the token, which might be an intentional design choice but limits flexibility for future tokenomics adjustments, such as inflation, deflation, or treasury management.L-01
Issue
The _mint function is only invoked once during the contract's constructor to mint the initial totalSupply to the owner. There are no public or owner-controlled functions (e.g., mint(), burn()) provided in the Token contract to allow for additional token creation or destruction after deployment. This design results in a fixed total supply for the token, which might be an intentional design choice but limits flexibility for future tokenomics adjustments, such as inflation, deflation, or treasury management.
Fix
If a fixed supply is the intended design, no changes are necessary, but this should be explicitly documented. If future flexibility for supply management (minting/burning) is desired, consider adding owner-controlled functions to call the internal _mint and _burn methods, potentially with rate limits or other safeguards.
Status
Unresolved
InfoRenouncing Ownership Permanently Locks Transfer Mode
The contract inherits renounceOwnership() from Ownable. If the current owner calls this function, the contract's ownership will be transferred to the zero address, making the setMode function (which is onlyOwner) inaccessible. Given the irreversible nature of setting MODE_NORMAL (as described in H-01), renouncing ownership would permanently lock the token's transfer mode to its state at the time of renunciation. If MODE_NORMAL was set, it can never be restricted again; if it was RESTRICTED or CONTROLLED and MODE_NORMAL was never set, it could remain in that state indefinitely.I-01
Issue
The contract inherits renounceOwnership() from Ownable. If the current owner calls this function, the contract's ownership will be transferred to the zero address, making the setMode function (which is onlyOwner) inaccessible. Given the irreversible nature of setting MODE_NORMAL (as described in H-01), renouncing ownership would permanently lock the token's transfer mode to its state at the time of renunciation. If MODE_NORMAL was set, it can never be restricted again; if it was RESTRICTED or CONTROLLED and MODE_NORMAL was never set, it could remain in that state indefinitely.
Fix
Ensure that the implications of renounceOwnership() are fully understood in the context of the setMode function's logic. If ownership is to be renounced, the owner should carefully consider the desired final transfer mode before doing so. Document this interaction clearly for future reference.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract leverages OpenZeppelin's ERC20 and Ownable patterns, providing a solid foundation for token functionality and access control (7.1 Architecture). The use of unchecked blocks is consistent with gas optimization practices in secure contexts (7.2 Code Security). However, the setMode function's logic, specifically the if (_mode != MODE_NORMAL) condition, introduces an irreversible state transition, preventing the owner from re-enabling transfer restrictions once MODE_NORMAL is set (7.3 Access Control).
The token's economic model features a fixed supply after initial minting, with no further minting or burning capabilities (7.4 Economic). The initial MODE_TRANSFER_RESTRICTED requires the owner to explicitly enable transfers post-deployment, which is an important operational consideration (7.8 Operations). The irreversible nature of the MODE_NORMAL setting means the token's transferability governance is a one-way decision, impacting future flexibility and potentially leading to a loss of control over token flow (7.5 Governance).
The contract is not designed with upgradeability patterns (e.g., proxies) (7.7 Upgrades). This means its logic is immutable once deployed, which simplifies the architecture by removing upgrade-related risks but requires careful consideration of all functionalities, especially the irreversible setMode logic, as no future modifications are possible.
Review the intended long-term governance model for token transfers, particularly the irreversible nature of setting MODE_NORMAL.
If future flexibility to re-introduce transfer restrictions is desired, modify the setMode function to allow bidirectional transitions. Ensure clear communication to token holders regarding the initial restricted transfer state and the owner's role in enabling transfers. Consider the implications of renounceOwnership in conjunction with the setMode logic, as renouncing ownership would permanently lock the current transfer mode.
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, 20267Low
- Aug 11, 20260Low
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Would You Like a More Detailed Audit of Banana For Scale?
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