Quantum Audit Logo
BNB Chain · Smart Contract Security · Updated Jul 24, 2026

Is Arcium Safe? ARX

On-chain security analysis — is it a scam or legit?

Contract 0xd5f6…a715 DexScreener ↗
Critical Risk How is this score calculated? →
Volume 24h
$66.5K
Liquidity
$23.0K
Price
$0.1593
Token Age
1mo
Top 10 Holders
87.5%

Security Checklist

Contract VerifiedPass
Ownership RenouncedFail
No Mint FunctionFail
Liquidity LockedFail
Not a ProxyPass

Audit History

Jul 22100Jul 2380Jul 2387

Every audit run adds a dated snapshot — history is append-only and cannot be edited.

Audit Summary

The PeerToken contract implements an ERC20 token with minting and burning capabilities, utilizing OpenZeppelin's Ownable and ERC20Burnable. However, a critical dependency on an unaudited `BaseToken` contract for core transfer logic, coupled with a direct override of `_update` to call `BaseToken._update` instead of `super._update`, introduces significant unknown risks. The contract also exhibits high centralization risk due to the owner's ability to control the minter, who can mint an unlimited supply of tokens.

Final Recommendation: It is imperative to provide the full source code for the `BaseToken` contract to allow for a comprehensive security review of the token's core transfer logic. The `_update` function's delegation to `BaseToken._update` should be thoroughly reviewed to ensure it correctly implements or delegates to the standard ERC20 transfer mechanisms, or `super._update` should be called. Consider implementing a multi-signature wallet for the `owner` and `minter` roles to mitigate centralization risks and enhance operational security.

Category Ratings

TechnicalHigh
3/10

The contract leverages OpenZeppelin libraries for ERC20 and Ownable functionalities, which is a good practice for code security (7.2). Custom error messages are also implemented, enhancing user experience and debugging. However, a critical architectural flaw (7.1) exists where the `PeerToken`'s

GovernanceHigh
1/10

The contract implements a two-tiered access control system with an `owner` and a `minter` (7.3). The `owner` has the power to set the `minter`, and the `minter` can mint an arbitrary amount of tokens (7.4). This design introduces a high degree of centralization, as a single compromised `owner` or `m

UpgradesHigh
2/10

The PeerToken contract is not designed with upgradeability features (7.7). This means its logic is immutable once deployed, eliminating risks associated with proxy patterns or upgrade mechanisms. Any future changes would require a new contract deployment and migration of assets.

LP Distribution

Top-1 Unlocked Holder100.0%
Top-3 Unlocked100.0%

What Raised This Score

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 Findings

2 Critical 1 High 1 Medium 2 Info
C-01CriticalUnresolved

Unauditable Core Logic Due to Missing `BaseToken` Source

The `PeerToken` contract inherits from `BaseToken` and explicitly delegates its core `_update` function (responsible for all token transfers, mints, and burns) to `BaseToken._update`. Without the source code for `BaseToken.sol`, it is impossible to audit the fundamental mechanics of token transfers, balance updates, and total supply management. This introduces an unknown and potentially severe vulnerability, as `BaseToken` could contain critical flaws (e.g., incorrect balance updates, reentrancy vectors, or improper handling of zero addresses) that would directly impact `PeerToken`'s integrity (7.1 Architecture, 7.2 Code Security).

Recommendation: Provide the complete and verified source code for `src/BaseToken.sol`. A full audit of `BaseToken` is required to ensure the security and correctness of `PeerToken`'s core functionality. Until `BaseToken` is audited, the security of `PeerToken` cannot be guaranteed.
C-02CriticalUnresolved

Critical `_update` Override Bypassing ERC20 Standard Logic

The `PeerToken` contract overrides the `_update` function, which is a critical internal function in OpenZeppelin's ERC20 implementation responsible for handling all token movements. Instead of calling `super._update()` to ensure the standard ERC20 logic (e.g., balance checks, total supply updates, event emissions) is executed, `PeerToken` directly calls `return BaseToken._update(_from, _to, _value);`. This design choice means that `PeerToken`'s core transfer logic is entirely dependent on `BaseToken`'s implementation, potentially bypassing or incorrectly implementing crucial ERC20 safeguards provided by OpenZeppelin's `ERC20` contract. If `BaseToken._update` does not correctly replicate or…

Recommendation: Review the `_update` override in `PeerToken` and the implementation of `BaseToken._update`. Ensure that `BaseToken._update` correctly implements all necessary ERC20 transfer logic, including balance updates, total supply adjustments, and zero-address checks, or that it properly calls `super._update()` if `BaseToken` also inherits from `ERC20`. A safer approach in `PeerToken` might be to call `super._update()` directly if `BaseToken` is intended to be a simple extension, or to ensure `BaseToken`…
H-01HighUnresolved

Centralized Minting Authority and Unlimited Supply Risk

The contract design grants significant power to the `minter` role, allowing them to mint an arbitrary amount of tokens via the `mint` function. Furthermore, the `owner` (a single external address) has the exclusive ability to change the `minter` at any time via `setMinter`. This creates a high centralization risk (7.4 Economic, 7.5 Governance). If the `owner` address or the `minter` address is compromised, an attacker could mint an unlimited supply of tokens, leading to hyperinflation and a complete loss of value for existing token holders. This also presents a single point of failure for the token's economic stability (7.8 Operations).

Recommendation: Consider implementing a multi-signature wallet for both the `owner` and `minter` roles to distribute control and reduce the risk of a single point of failure. Explore mechanisms to cap the total supply or introduce rate limits for minting to prevent uncontrolled inflation. If unlimited minting is a core design choice, ensure robust operational security for the `minter` and `owner` keys.
M-01MediumUnresolved

Lack of Role Renouncement or Multi-sig Integration

The `Ownable` pattern is used, but there is no explicit function to renounce ownership or transfer it to a zero address, which could be a desired feature for decentralization or to prevent accidental control. Similarly, there is no mechanism to renounce the `minter` role. While `setMinter` allows changing the minter, it does not prevent setting it to a malicious address or a non-existent one if not handled carefully (though `InvalidMinterZeroAddress` prevents setting to `address(0)`). The absence of multi-signature wallet integration for these critical roles increases operational risk (7.3 Access Control, 7.8 Operations).

Recommendation: Consider adding a `renounceOwnership()` function to allow the owner to permanently give up control, if desired for future decentralization. Implement a similar `renounceMinter()` function. For enhanced security, integrate a multi-signature wallet solution for the `owner` and `minter` roles from the outset to ensure critical operations require consensus from multiple trusted parties.
I-01InformationalUnresolved

Use of Custom Errors

The contract utilizes custom errors (`CallerNotMinter`, `InvalidMinterZeroAddress`) instead of traditional `require()` statements with string messages. This is a good practice in Solidity as custom errors are more gas-efficient and provide clearer, structured error information to off-chain applications (7.2 Code Security).

Recommendation: Continue using custom errors for all revert conditions throughout the codebase. This enhances gas efficiency and improves the developer experience for integrators.
I-02InformationalUnresolved

Explicit `_update` Override for Clarity

The `_update` function is explicitly declared with `override(ERC20, BaseToken)`, clearly indicating that it overrides implementations from both parent contracts. This improves code readability and helps prevent potential issues in complex inheritance hierarchies (7.1 Architecture, 7.2 Code Security).

Recommendation: Maintain explicit `override` declarations for all functions that override multiple parent implementations. This practice contributes to clearer code structure and maintainability.

Would You Like a More Detailed Audit of Arcium?

Our AI-powered scanner gives you a deeper, real-time smart contract analysis — free, no signup required.

Get Detailed Audit
Run Free Audit →