Quantum Audit Logo
Launch App

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

Is GULD Safe?

Ethereum
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 →
Last checked Sep 4, 2026 · 1 audit on record
SummaryAI Copilot

This report details the security audit of the Custom Token contract.

Read the full analysis
What raised the score
  • Ownership status UNKNOWN
  • Mintable supply — no cap found, dilution unbounded
  • Top-10 concentration > 20%
  • Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
  • LP top1 unlocked holder = 100.0%
  • LP top3 unlocked holders = 100.0%
  • 1 High finding(s) from audit
  • 2 Medium 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
  • Top-10 concentration > 20% (40.1% total → 25.5% effective; 15.7% in EOAs, 24.3% in contracts — mild)
  • Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
  • LP top1 unlocked holder = 100.0% (independent LP — depth risk, pool = 26% of DEX liquidity)
  • LP top3 unlocked holders = 100.0% (independent LP — depth risk, pool = 26% of DEX liquidity)
  • 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 42 of 5 checks passed
Contract verifiedVerified
OwnershipUnknown
MintMintable
Liquidity lockNot locked
UpgradeabilityFixed code

Holders

as of audit · Sep 4, 2026
24.3%Contracts15.7%Wallets59.9%Everyone else
24.3%Contracts15.7%Wallets59.9%Everyone else
ContractsWalletsEveryone elseBubble area = share of supply
40.1%of supply sits with the top 10 holders
  • Contractstreasury, vesting, bridge, staking24.3%
  • Walletsanonymous holders, free to sell15.7%
  • Everyone elsethe rest of the supply59.9%
Effective concentrationwhat the score reads25.5%
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$8.10M across 11 pairs
LP tokensNot locked

The LP tokens of the analysed pool are not locked or burned, so whoever holds them can withdraw that liquidity.

Analysed pool$2.13MShare of depth26.3%
Top-1 Unlocked Holder100.0%
Top-3 Unlocked100.0%
Unlocked LP held by
0x9210…7e7e0x8173…9596

No privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.

Security Findings

1 High2 Medium1 Low1 Info
High

Potential Integer Overflow in balanceOf Addition (unchecked block)

The mint and _updateBalance functions use unchecked blocks for balanceOf[to] += value;. While totalSupply is capped by maxSupply, individual balanceOf values are not explicitly checked against type(uint256).max before addition within these unchecked blocks. If maxSupply is sufficiently large (e.g., close to type(uint256).max) and a large value is minted or transferred to an address already holding a large balance, the balanceOf[to] could wrap around, leading to an incorrect, lower balance for the recipient.H-01

Issue

The mint and _updateBalance functions use unchecked blocks for balanceOf[to] += value;. While totalSupply is capped by maxSupply, individual balanceOf values are not explicitly checked against type(uint256).max before addition within these unchecked blocks. If maxSupply is sufficiently large (e.g., close to type(uint256).max) and a large value is minted or transferred to an address already holding a large balance, the balanceOf[to] could wrap around, leading to an incorrect, lower balance for the recipient.

Fix

Remove the unchecked block around balanceOf[to] += value; in both mint and _updateBalance functions. Solidity 0.8+ provides default overflow/underflow checks, which should be leveraged here to ensure balanceOf values do not wrap around.

Status

Unresolved

Medium

ERC-20 Non-Compliance for totalSupply

The contract declares totalSupply as a public state variable (uint256 public totalSupply;) instead of implementing it as a public view function (function totalSupply() external view returns (uint)), as required by the ERC-20 standard. This deviation can cause compatibility issues with wallets, exchanges, and other DeFi protocols that expect the totalSupply() function to exist.M-01

Issue

The contract declares totalSupply as a public state variable (uint256 public totalSupply;) instead of implementing it as a public view function (function totalSupply() external view returns (uint)), as required by the ERC-20 standard. This deviation can cause compatibility issues with wallets, exchanges, and other DeFi protocols that expect the totalSupply() function to exist.

Fix

Change uint256 public totalSupply; to uint256 internal _totalSupply; and implement the totalSupply() function as `function totalSupply() external view override returns (uint) { return _totalSupply; }. Update all internal references to totalSupply to _totalSupply`.

Status

Unresolved

Medium

Centralized Control Over Token Supply and Ownership

The contract design grants significant power to the owner and issuer roles. The owner can transfer ownership (via a two-step process) and change the issuer. The issuer has the sole ability to mint new tokens up to the maxSupply. This centralization introduces a single point of failure and trust, as a compromised owner or issuer account could lead to unauthorized minting or control transfer.M-02

Issue

The contract design grants significant power to the owner and issuer roles. The owner can transfer ownership (via a two-step process) and change the issuer. The issuer has the sole ability to mint new tokens up to the maxSupply. This centralization introduces a single point of failure and trust, as a compromised owner or issuer account could lead to unauthorized minting or control transfer.

Fix

Acknowledge this centralization as part of the token's design. If decentralization is desired in the future, consider implementing a multi-signature wallet for the owner and issuer roles, or integrating a governance mechanism to manage these critical functions.

Status

Unresolved

Low

Standard approve Function Front-Running Vulnerability

The approve function, as implemented in the ERC-20 standard, is susceptible to a known front-running attack. If a user approves an amount X for a spender, and then decides to change the approved amount to Y (where Y < X), a malicious front-runner could observe the transaction to change the allowance, quickly execute the original allowance X, and then the user's transaction would set the allowance to Y, effectively allowing the front-runner to spend X + Y.L-01

Issue

The approve function, as implemented in the ERC-20 standard, is susceptible to a known front-running attack. If a user approves an amount X for a spender, and then decides to change the approved amount to Y (where Y < X), a malicious front-runner could observe the transaction to change the allowance, quickly execute the original allowance X, and then the user's transaction would set the allowance to Y, effectively allowing the front-runner to spend X + Y.

Fix

Advise users to always set the allowance to zero before setting a new non-zero allowance, i.e., call approve(spender, 0) then approve(spender, newAmount). Alternatively, consider implementing an increaseAllowance and decreaseAllowance pattern to mitigate this user-side risk.

Status

Unresolved

Info

Lack of Token Burn Mechanism

The contract does not include a function to burn tokens, which means tokens can only be transferred or minted (up to maxSupply). There is no mechanism to permanently remove tokens from circulation, which might be desired for certain economic models or to recover tokens sent to unrecoverable addresses.I-01

Issue

The contract does not include a function to burn tokens, which means tokens can only be transferred or minted (up to maxSupply). There is no mechanism to permanently remove tokens from circulation, which might be desired for certain economic models or to recover tokens sent to unrecoverable addresses.

Fix

If a token burn mechanism is desired, consider adding a burn function that allows token holders to destroy their own tokens, or an ownerBurn function for administrative burning, ensuring appropriate access controls are in place.

Status

Unresolved

Analysis

AI Copilotas of audit · Sep 4
Executive SummaryWhat the contract is and what the review found

This report details the security audit of the Custom Token contract. The audit identified a high-severity issue related to potential integer overflow in balance updates within unchecked blocks, two medium-severity issues concerning ERC-20 non-compliance and centralized control, and other minor findings. The contract implements a basic ERC-20-like token with minting capabilities up to a maximum supply.

Technical7/10Low risk

The contract exhibits a clear structure and generally follows common Solidity patterns. Strengths include the use of immutable for critical parameters like decimals and maxSupply, and a two-step ownership transfer mechanism (7.3 Access Control). However, a significant concern is the use of unchecked blocks for balanceOf additions in mint and _updateBalance, which could lead to integer overflow and balance corruption (7.2 Code Security). Additionally, the totalSupply is implemented as a public state variable instead of a function, causing ERC-20 non-compliance (7.1 Architecture).

Governance2/10High risk

The token's economic model is straightforward, with a fixed maxSupply and a centralized issuer role responsible for minting (7.4 Economic). The owner role holds significant power, including the ability to change the issuer and transfer ownership (7.5 Governance). This centralization introduces a single point of failure, requiring strong operational security for the controlling addresses (7.8 Operations). The maxSupply is immutable, providing a predictable supply cap.

Upgrades3/10High risk

This contract is not designed to be upgradeable. Its logic is immutable once deployed, which eliminates upgrade-related risks such as proxy misconfigurations or malicious upgrade implementations (7.7 Upgrades). Any changes to the token's core logic would require a new deployment.

Final RecommendationWhat to do about this score

It is strongly recommended to address the high-severity integer overflow vulnerability by removing the unchecked blocks around balanceOf additions.

The ERC-20 non-compliance for totalSupply should also be corrected to ensure broad compatibility. For the centralized roles, implement robust operational security measures like multi-signature wallets. Thoroughly test all fixes in a staging environment before deployment.

Contract & Record

1 audit on record
TypeToken
NetworkEthereum
Token age1mo
Contract0x14d6…47a1
Deployer0xf746…993b
Badge for your website
GULD security record badge

Free for any token on the record. It links to this page and always shows the current score and the date it was checked.

Audit History
  1. Sep 4, 202659Medium
  2. Aug 12, 202639Medium

Score changes are recorded as dated snapshots — history is append-only and cannot be edited.

Would You Like a More Detailed Audit of GULD?

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