Quantum Audit Logo

Is Bittensor Safe?

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

Bittensor TAO
0xf308…3d67
Base Not verifiedLast checked 2d ago 1 audit on record
Executive SummaryAI Copilot

The BurnMintERC20 contract implements an ERC-20 token with minting and burning capabilities, leveraging OpenZeppelin's AccessControl. While the contract generally follows good practices for token implementation and access control, a critical vulnerability exists in the `grantMintAndBurnRoles` function, which lacks any access restrictions. This flaw allows any caller to grant themselves or others the ability to mint and burn tokens, leading to a complete compromise of the token's supply and value.

1 Critical
Volume 24h
$178.5K
Liquidity
$527.5K
Price
$222.3000
Token Age
1y
Top 10 Holders
82.6%

Security Findings

Critical

Unrestricted `grantMintAndBurnRoles` Function

C-01The `grantMintAndBurnRoles` function lacks any access control, allowing any external caller to grant `MINTER_ROLE` and `BURNER_ROLE` to any address, including themselves. This enables unauthorized minting of new tokens (potentially bypassing `maxSupply` if `MINTER_ROLE` is granted) and burning of existing tokens, leading to complete compromise of the token's supply and value. This directly impacts 7.3 Access Control, 7.4 Economic, and 7.8 Operations.
IssueThe `grantMintAndBurnRoles` function lacks any access control, allowing any external caller to grant `MINTER_ROLE` and `BURNER_ROLE` to any address, including themselves. This enables unauthorized minting of new tokens (potentially bypassing `maxSupply` if `MINTER_ROLE` is granted) and burning of existing tokens, leading to complete compromise of the token's supply and value. This directly impacts 7.3 Access Control, 7.4 Economic, and 7.8 Operations.
FixImplement robust access control for the `grantMintAndBurnRoles` function. It should be restricted to addresses holding the `DEFAULT_ADMIN_ROLE` or a specifically designated administrative role. For example, add `onlyRole(DEFAULT_ADMIN_ROLE)` to the function signature: `function grantMintAndBurnRoles(address burnAndMinter) external onlyRole(DEFAULT_ADMIN_ROLE)`.
StatusUnresolved

Category Ratings

TechnicalMedium6/10

The contract demonstrates good code security practices (7.2 Code Security) by utilizing OpenZeppelin's battle-tested libraries, employing Solidity 0.8+ for overflow safety, and using custom errors. The architecture (7.1 Architecture) is straightforward, extending standard ERC20 functionality. However, a critical access control flaw exists in the `grantMintAndBurnRoles` function, which lacks any restriction, allowing unauthorized parties to grant themselves minting and burning capabilities.

GovernanceHigh1/10

The contract implements a basic governance structure (7.5 Governance) through OpenZeppelin's AccessControl, with a `DEFAULT_ADMIN_ROLE` capable of managing the `s_ccipAdmin` address. Economic parameters (7.4 Economic) include an optional `maxSupply` to limit total token issuance and checks to prevent tokens from being locked in the contract. Despite these, the unrestricted `grantMintAndBurnRoles` function severely compromises the token's economic integrity and governance model, as any caller can grant themselves the power to mint and burn tokens, leading to potential hyperinflation or arbitrary supply destruction.

UpgradesHigh2/10

This contract is not designed to be upgradeable (7.7 Upgrades), meaning its logic is immutable once deployed. This eliminates risks associated with proxy patterns, upgradeability proxies, and potential upgrade path vulnerabilities. The contract's functionality is fixed, providing certainty regarding its long-term behavior.

Security Checklist

Contract VerifiedPass
Ownership RenouncedFail
No Mint FunctionFail
Liquidity LockedFail
Not a ProxyPass
HoneypotNoneBuy Tax0.0%Sell Tax0.0%

Holder Composition

10.5% in wallets72.0% in contracts
Effective Concentration39.4%

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.

Liquidity Depth

The risk score reads depth across every pair. The volume figure and the volume-to-liquidity ratio elsewhere on this page describe only the pair this audit analysed, so the two are not directly comparable.

LP Distribution

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

Key Addresses

Deployer
0x931f…8048
Unlocked LP Held By
0x3dd5…599d

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

What Raised This Score

  • Ownership NOT renounced (admin/mint authority retained)
  • Mintable supply — no cap found, dilution unbounded
  • Top-10 concentration > 30% (82.6% total → 39.4% effective; 10.5% in EOAs, 72.0% in contracts — moderate)
  • 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)
  • LP top3 unlocked holders = 100.0% (independent LP — depth risk)
  • 1 Critical 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

Related Audits

Jito Staked SOL (JITOSOL)High RiskDolphin (POD)High Risk0xAgentEVE (EVE)High RiskWELLHigh RiskVelvetHigh RiskLayerZero (ZRO)High Risk

Would You Like a More Detailed Audit of Bittensor?

Our AI-powered scanner gives you a deeper, real-time smart contract analysis — free, with every scoring factor shown.

Get Detailed Audit