The CrossChainERC20 contract implements a standard ERC20 token with minting and burning capabilities controlled by an immutable bridge address. It leverages the well-regarded Solady library for its ERC20 base and Initializable pattern. A critical design flaw was identified where the initialize function, intended for token configuration, is rendered unusable due to a call to _disableInitializers() in the constructor, assuming direct deployment. The contract's security heavily relies on the external bridge's integrity, and its immutable bridge address lacks operational flexibility. The provided metadata indicates this is not a proxy, which makes the initialize issue critical.
On-chain security analysis — is it a scam or legit?
Is Solana 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 CrossChainERC20 contract implements a standard ERC20 token with minting and burning capabilities controlled by an immutable bridge address.
Read the full analysis- Ownership not renounced
- Mintable supply — no cap found, dilution unbounded
- Proxy contract
- Complex proxy pattern
- Top-10 concentration > 30%
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 50.1%
- 1 Critical finding(s) from audit
- 1 High finding(s) from audit
- 2 Medium finding(s) from audit
- 1 Low finding(s) from audit
Exact factors
- Ownership NOT renounced (admin/mint authority retained)
- Mintable supply — no cap found, dilution unbounded
- Proxy contract (upgradeable — admin can replace logic)
- Complex proxy pattern (BEACON)
- Top-10 concentration > 30% (83.0% total → 38.8% effective; 9.3% in EOAs, 73.7% in contracts — moderate)
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- LP top1 unlocked holder = 50.1% (independent LP — depth risk, pool = 35% of DEX liquidity)
- 1 Critical finding(s) from audit
- 1 High finding(s) from audit
- 2 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, staking73.7%
- Walletsanonymous holders, free to sell9.3%
- Everyone elsethe rest of the supply17.0%
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- PancakeswapcbBTCAnalysed$737.0K34.7%
- AerodromeUSDC$528.1K24.8%
- AerodromecbBTC$314.2K14.8%
- PancakeswapUSDC$147.2K6.9%
- PancakeswapWETH$146.3K6.9%
- AerodromefBOMB$100.1K4.7%
Show 4 more pairs
The 13 remaining pairs hold $28.1K between them and are not listed. 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.
0x7d27…fd550xbefd…ec9d0x97d1…59550x0c2f…6af40x5caa…bb0a0x2e33…47cf0x4cb0…160f0xcd19…c7350x130b…0f460x2e63…3202No privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
CriticalInitialize Function Unusable Due to Constructor Call to _disableInitializers()
The CrossChainERC20 contract's constructor calls _disableInitializers(). This sets the _initializing state variable to 2, which prevents any subsequent calls to functions guarded by the initializer modifier. Consequently, the initialize function, crucial for setting the token's _remoteToken, _name, _symbol, and _decimals, can never be successfully called. This renders the contract non-functional as an ERC20 token with its intended metadata if deployed directly, as indicated by the is_proxy: false metadata.C-01
_disableInitializers()Issue
The CrossChainERC20 contract's constructor calls _disableInitializers(). This sets the _initializing state variable to 2, which prevents any subsequent calls to functions guarded by the initializer modifier. Consequently, the initialize function, crucial for setting the token's _remoteToken, _name, _symbol, and _decimals, can never be successfully called. This renders the contract non-functional as an ERC20 token with its intended metadata if deployed directly, as indicated by the is_proxy: false metadata.
Fix
If the contract is intended for direct deployment and initialization, remove _disableInitializers() from the constructor. If it is intended solely as an implementation contract for a proxy, ensure this is clearly documented and the deployment strategy aligns with proxy patterns, and update the is_proxy metadata accordingly.
Status
Unresolved
HighImmutable Bridge Address Lacks Operational Flexibility
The _BRIDGE address is set as immutable in the constructor. While this prevents unauthorized changes and provides strong security, it also means the bridge address cannot be updated. If the bridge contract needs to be upgraded, replaced due to a vulnerability, or if the underlying bridge architecture changes, there is no mechanism to update the _BRIDGE address in this token contract. This creates a single point of failure for operational continuity and limits future adaptability.H-01
Issue
The _BRIDGE address is set as immutable in the constructor. While this prevents unauthorized changes and provides strong security, it also means the bridge address cannot be updated. If the bridge contract needs to be upgraded, replaced due to a vulnerability, or if the underlying bridge architecture changes, there is no mechanism to update the _BRIDGE address in this token contract. This creates a single point of failure for operational continuity and limits future adaptability.
Fix
Consider implementing a mechanism to allow the _BRIDGE address to be updated by a trusted entity (e.g., a multi-signature wallet or governance contract) through a time-locked process. This would provide necessary operational flexibility while maintaining security safeguards.
Status
Unresolved
MediumCentralization Risk with Single Bridge Control
The entire minting and burning capability of the token is controlled by a single _BRIDGE address. While this is the intended design for a cross-chain token, it introduces a significant centralization risk. A compromise of the _BRIDGE contract or its controlling private keys would allow an attacker to mint an arbitrary amount of tokens or burn existing tokens, leading to a complete loss of value for token holders.M-01
Issue
The entire minting and burning capability of the token is controlled by a single _BRIDGE address. While this is the intended design for a cross-chain token, it introduces a significant centralization risk. A compromise of the _BRIDGE contract or its controlling private keys would allow an attacker to mint an arbitrary amount of tokens or burn existing tokens, leading to a complete loss of value for token holders.
Fix
Ensure the _BRIDGE contract itself is highly secure, ideally controlled by a robust multi-signature wallet, a decentralized autonomous organization (DAO), or a battle-tested bridge protocol. Implement comprehensive monitoring and emergency response plans for the bridge.
Status
Unresolved
MediumLack of Emergency Pause Mechanism
The contract does not include any mechanism to pause critical functions such as minting, burning, or transfers in case of an emergency (e.g., a bridge exploit, critical vulnerability, or market manipulation). Without a pause mechanism, an ongoing attack could lead to irreversible damage before countermeasures can be deployed.M-02
Issue
The contract does not include any mechanism to pause critical functions such as minting, burning, or transfers in case of an emergency (e.g., a bridge exploit, critical vulnerability, or market manipulation). Without a pause mechanism, an ongoing attack could lead to irreversible damage before countermeasures can be deployed.
Fix
Implement a Pausable mechanism (e.g., from OpenZeppelin or Solady) that allows a trusted entity (like the _BRIDGE or a separate admin) to pause and unpause critical functions (mint, burn, transfer, transferFrom, approve). This should ideally be controlled by a multi-signature wallet or governance.
Status
Unresolved
LowRedundant Zero Address Checks for _mint and _burn
The CrossChainERC20 contract explicitly checks for to != address(0) in mint and from != address(0) in burn. While these checks are good practice, the underlying Solady ERC20 implementation notes that it "WILL NOT revert for such actions" for performance. This means the explicit checks in CrossChainERC20 are necessary to enforce the desired behavior, but it's an observation on the interaction between the custom contract and the library's design philosophy.L-01
_mint and _burnIssue
The CrossChainERC20 contract explicitly checks for to != address(0) in mint and from != address(0) in burn. While these checks are good practice, the underlying Solady ERC20 implementation notes that it "WILL NOT revert for such actions" for performance. This means the explicit checks in CrossChainERC20 are necessary to enforce the desired behavior, but it's an observation on the interaction between the custom contract and the library's design philosophy.
Fix
No change is strictly needed as the contract correctly implements the desired checks. This finding serves as an informational note regarding the library's behavior versus the contract's explicit requirements.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract utilizes the Solady ERC20 implementation, known for its gas efficiency and security, and includes explicit zero-address checks for minting and burning (7.2 Code Security). The _BRIDGE address is correctly set as immutable, preventing unauthorized changes (7.3 Access Control). However, a critical flaw exists where the initialize function, vital for setting token metadata, is permanently disabled by the constructor's call to _disableInitializers(), rendering the token non-functional as intended if deployed directly (7.1 Architecture).
The economic model is highly centralized, with all minting and burning controlled by a single _BRIDGE address (7.4 Economic). This introduces a significant single point of failure; a compromise of the bridge would directly impact token supply and value. There is no explicit governance mechanism within the contract (7.5 Governance). The immutability of the _BRIDGE address, while secure against unauthorized changes, severely limits operational flexibility, preventing updates or replacements of the bridge contract (7.8 Operations).
The contract is not designed for direct upgradeability, as it does not implement a proxy pattern for itself (7.7 Upgrades). The use of Initializable is fundamentally flawed in this context, as the constructor disables the initialize function, preventing any initial configuration of the token's metadata. Furthermore, the immutable _BRIDGE address prevents any future operational upgrades or changes to the bridge's controlling entity (7.7 Upgrades, 7.8 Operations).
Address the critical issue regarding the unusable initialize function by either removing _disableInitializers() from the constructor if direct deployment is intended, or by clearly documenting its role as an implementation contract for a proxy.
Implement a robust emergency pause mechanism to mitigate risks from potential bridge exploits or other emergencies. Consider adding a controlled mechanism for updating the _BRIDGE address, possibly via a multi-signature wallet or governance, to enhance operational flexibility while maintaining security.
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, 202653Medium
- Jul 27, 202643Medium
- Jul 25, 202663Medium
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Frequently Asked Questions
Is Solana a scam?
Based on automated analysis, Solana scores 63/100 (High Risk) on our risk scale. No honeypot was detected, but always verify independently before investing.
Is Solana safe to buy?
Our scanner flagged a risk score of 63/100. Ownership has not been renounced, which is a risk factor. DYOR before purchasing any token.
Has Solana been audited?
The contract has not been verified on-chain. Verification is not the same as a full security audit. Use Quantum Audit's free tool to run a deeper analysis of the contract code.
Would You Like a More Detailed Audit of Solana?
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