The InterchainToken contract, serving as an upgradeable ERC20 token implementation, demonstrates adherence to modern Solidity practices and includes custom access control via a RolesBase contract. Key strengths include a robust initialization mechanism for proxy safety and careful handling of token metadata. However, the audit identified significant centralization risks associated with the MINTER role and a critical gap due to the truncation of the RolesBase contract, preventing a full assessment of access control. A minor issue with redundant initialization in the constructor was also noted.
On-chain security analysis — is it a scam or legit?
Is Aethir Token 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 InterchainToken contract, serving as an upgradeable ERC20 token implementation, demonstrates adherence to modern Solidity practices and includes custom access control via a RolesBase contract.
- Ownership status UNKNOWN
- Mintable supply — no cap found, dilution unbounded
- Proxy contract
- Non-standard proxy storage
- Top-10 concentration > 30%
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- 2 High finding(s) from audit
- 1 Low finding(s) from audit
Exact factors
- Ownership status UNKNOWN (owner could not be resolved)
- Mintable supply — no cap found, dilution unbounded
- Proxy contract (upgradeable — admin can replace logic)
- Non-standard proxy storage (Etherscan-confirmed)
- Top-10 concentration > 30% (74.9% total → 32.1% effective; 3.6% in EOAs, 71.2% in contracts — moderate)
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- 2 High 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, staking71.2%
- Walletsanonymous holders, free to sell3.6%
- Everyone elsethe rest of the supply25.1%
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 4The 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.
0x479a…d4970x75d1…107e0x72d6…58130x162d…b9e90x2322…a3e80xa54c…dd780xd1d3…85320x87c0…66400x785d…98b70x34a9…1fc2No privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
HighCentralized Control via Minter Role
The mint and burn functions are protected by the onlyRole(uint8(Roles.MINTER)) modifier. The init function adds interchainTokenService_ and a user-provided minter address to the MINTER role. This grants significant power to these addresses, allowing them to arbitrarily mint and burn tokens, directly impacting the token's supply and value. If the minter address is an EOA or a single-sig contract, it represents a single point of failure and a high centralization risk (7.3 Access Control, 7.4 Economic).H-01
Issue
The mint and burn functions are protected by the onlyRole(uint8(Roles.MINTER)) modifier. The init function adds interchainTokenService_ and a user-provided minter address to the MINTER role. This grants significant power to these addresses, allowing them to arbitrarily mint and burn tokens, directly impacting the token's supply and value. If the minter address is an EOA or a single-sig contract, it represents a single point of failure and a high centralization risk (7.3 Access Control, 7.4 Economic).
Fix
Implement robust governance or multi-signature control over the MINTER role. Consider time-locks or multi-stage processes for critical actions like adding/removing minters or large mint operations to distribute control and reduce single points of failure.
Status
Unresolved
HighIncomplete RolesBase Contract
The provided RolesBase contract, which is fundamental to the access control system, is truncated. Specifically, the _addAccountRoles function is incomplete: `function _addAccountRoles(address account, uint256 accountRoles) i... (truncated)`. Without the full implementation of this core access control logic, a complete security assessment of the role management system (including how roles are added, removed, and proposed) is impossible. This leaves a significant blind spot in the audit (7.2 Code Security).H-02
RolesBase ContractIssue
The provided RolesBase contract, which is fundamental to the access control system, is truncated. Specifically, the _addAccountRoles function is incomplete: `function _addAccountRoles(address account, uint256 accountRoles) i... (truncated)`. Without the full implementation of this core access control logic, a complete security assessment of the role management system (including how roles are added, removed, and proposed) is impossible. This leaves a significant blind spot in the audit (7.2 Code Security).
Fix
Provide the complete source code for all inherited and used contracts, especially critical security components like RolesBase, to enable a comprehensive security review and ensure the integrity of the access control mechanisms.
Status
Unresolved
LowRedundant _initialize() Call in Constructor
The InterchainToken contract, intended as a proxy implementation, calls _initialize() in its constructor. In a proxy pattern (like UUPS or Transparent), the constructor of the implementation contract is executed only once when the implementation itself is deployed, not when the proxy is initialized. The actual initialization for the proxy's storage occurs via an init function called on the proxy. While not a direct vulnerability (as init correctly uses _isInitialized() to prevent re-initialization on the proxy's storage), this constructor call is redundant and can be misleading (7.7 Upgrades).L-01
_initialize() Call in ConstructorIssue
The InterchainToken contract, intended as a proxy implementation, calls _initialize() in its constructor. In a proxy pattern (like UUPS or Transparent), the constructor of the implementation contract is executed only once when the implementation itself is deployed, not when the proxy is initialized. The actual initialization for the proxy's storage occurs via an init function called on the proxy. While not a direct vulnerability (as init correctly uses _isInitialized() to prevent re-initialization on the proxy's storage), this constructor call is redundant and can be misleading (7.7 Upgrades).
Fix
Remove the _initialize() call from the constructor of proxy implementation contracts. Ensure all proxy-related initialization logic resides solely within the designated initializer function (e.g., init) to maintain clarity and best practices for upgradeable contracts.
Status
Unresolved
InfoCustom _spendAllowance Override
The contract overrides the _spendAllowance function with a custom implementation. It uses _approve(sender, spender, _allowance - amount) directly. In Solidity 0.8.0+, arithmetic operations automatically check for underflows and overflows, meaning _allowance - amount will revert if amount is greater than _allowance. The UINT256_MAX check correctly handles infinite approvals. This custom logic appears safe due to Solidity's built-in checks, but any deviation from standard library implementations warrants careful review (7.2 Code Security).I-01
_spendAllowance OverrideIssue
The contract overrides the _spendAllowance function with a custom implementation. It uses _approve(sender, spender, _allowance - amount) directly. In Solidity 0.8.0+, arithmetic operations automatically check for underflows and overflows, meaning _allowance - amount will revert if amount is greater than _allowance. The UINT256_MAX check correctly handles infinite approvals. This custom logic appears safe due to Solidity's built-in checks, but any deviation from standard library implementations warrants careful review (7.2 Code Security).
Fix
Document the rationale for custom overrides, especially for core ERC20 functionalities. Ensure thorough unit and integration testing covers all edge cases for allowance spending to confirm its robustness.
Status
Unresolved
InfoInline Assembly Usage
The contract and its inherited RolesBase utilize inline assembly for direct storage manipulation (e.g., sload, sstore) for initialization flags and role management. This approach is used for gas optimization and specific storage patterns (like keccak256 based mapping keys). While assembly can introduce subtle bugs if not handled correctly, the patterns observed (e.g., using a large constant for INITIALIZED_SLOT, keccak256 for mapping keys) are standard and generally considered safe for preventing storage collisions (7.2 Code Security).I-02
Issue
The contract and its inherited RolesBase utilize inline assembly for direct storage manipulation (e.g., sload, sstore) for initialization flags and role management. This approach is used for gas optimization and specific storage patterns (like keccak256 based mapping keys). While assembly can introduce subtle bugs if not handled correctly, the patterns observed (e.g., using a large constant for INITIALIZED_SLOT, keccak256 for mapping keys) are standard and generally considered safe for preventing storage collisions (7.2 Code Security).
Fix
Ensure comprehensive unit and integration tests cover all code paths involving inline assembly. Maintain clear and up-to-date documentation for the storage layout and assembly logic to facilitate future audits and maintenance.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract demonstrates good adherence to ERC20 standards and utilizes modern Solidity features. Custom _spendAllowance logic, while deviating from standard libraries, appears safe due to Solidity 0.8+ checks. However, the provided RolesBase contract is truncated, preventing a full security assessment of the core access control mechanisms (7.2 Code Security). Additionally, the use of inline assembly for storage management requires careful review, though the patterns used are generally robust (7.2 Code Security).
The economic model relies heavily on the MINTER role, which has the power to arbitrarily mint and burn tokens (7.4 Economic). The init function assigns this role to the interchainTokenService_ and a user-defined minter address. This introduces a high degree of centralization, as the security and stability of the token supply depend entirely on the integrity and security of these privileged addresses (7.3 Access Control).
The contract is designed as an upgradeable implementation, correctly using an _isInitialized() check within its init function to prevent re-initialization of the proxy's storage (7.7 Upgrades). However, a redundant _initialize() call exists in the constructor of the implementation contract, which is not effective for proxy initialization and can be misleading (7.7 Upgrades). The use of immutable variables is correctly handled in the proxy context.
Address the high-severity issues by providing the complete source code for the RolesBase contract to allow for a comprehensive audit of the access control system.
Implement robust multi-signature or governance controls for the MINTER role to mitigate centralization risks and enhance the security of token supply management. Remove the redundant _initialize() call from the constructor of the implementation contract to improve clarity and adhere to best practices for upgradeable contracts.
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, 202669High
- Sep 3, 202674High
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Frequently Asked Questions
What is the ATH contract address?
The Aethir Token (ATH) contract on Arbitrum is 0xc87b37a581ec3257b734886d9d3a581f5a9d056c. Compare it with the address the project itself publishes before trading: other contracts can carry the same name and ticker.
Is Aethir Token a scam?
Quantum Audit's risk score for Aethir Token is 69/100 (High risk) as of Sep 4, 2026, computed by a deterministic function from on-chain facts — Contract verified: Verified; Mint: Mintable; Liquidity lock: Not locked; Upgradeability: Upgradeable; Honeypot: None found; Buy / sell tax: 0% / 0%. A score is a dated snapshot of those facts, not a guarantee; each one is listed on this page.
Is ATH liquidity locked?
Liquidity lock: Not locked (as of Sep 4, 2026). Total DEX liquidity: $51.6K.
Who holds ATH?
As of Sep 4, 2026, the 10 largest holders own 74.9% of the supply. The Holders section on this page shows who they are by holder type.
Would You Like a More Detailed Audit of Aethir Token?
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