Quantum Audit Logo
Launch App

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

Is trUSD Safe?

TRUSDEthereum
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

The TrUSD contract implements an upgradeable ERC-20 token with a two-tiered access control system.

Read the full analysis
What raised the score
  • Ownership not renounced — strong Multisig
  • Mintable supply — no cap found, dilution unbounded
  • Proxy contract
  • Top-10 concentration > 30%
  • 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%
  • Token age < 30 days
  • 1 High finding(s) from audit
  • 1 Medium finding(s) from audit
  • 1 Low finding(s) from audit
Exact factors
  • Ownership NOT renounced — strong Multisig (3-of-5)
  • Mintable supply — no cap found, dilution unbounded
  • Proxy contract (upgradeable — admin can replace logic)
  • Top-10 concentration > 30% (99.7% total → 41.6% effective; 2.8% in EOAs, 97.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)
  • Token age < 30 days (still settling)
  • 1 High finding(s) from audit
  • 1 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 41 of 5 checks passed
Contract verifiedVerified
OwnershipRetained
MintMintable
Liquidity lockNot locked
UpgradeabilityUpgradeable

Holders

as of audit · Sep 4, 2026
97.0%Contracts2.8%
97.0%Contracts
ContractsWalletsEveryone elseBubble area = share of supply
99.7%of supply sits with the top 10 holders
  • Contractstreasury, vesting, bridge, staking97.0%
  • Walletsanonymous holders, free to sell2.8%
  • Everyone elsethe rest of the supply0.3%
Effective concentrationwhat the score reads41.6%
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$5.16M

The risk score reads depth across every pair.

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$5.16MShare of depth100.0%
Top-1 Unlocked Holder100.0%
Top-3 Unlocked100.0%
Unlocked LP held by
0xfb16…f023

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

Security Findings

1 High1 Medium1 Low
High

Immediate and Centralized Control over Critical Functions (Minting & Upgrades)

The TIMELOCK_ADMIN_ROLE has immediate and centralized control over critical functions: setMinter (allowing unlimited token minting) and _authorizeUpgrade (allowing instant contract upgrades). Unlike the DEFAULT_ADMIN_ROLE, which has a 1-day timelock, actions by the TIMELOCK_ADMIN_ROLE can be executed instantly. This concentration of power, coupled with the lack of a timelock for these actions, presents a significant risk of immediate economic manipulation or malicious contract changes if the TIMELOCK_ADMIN_ROLE is compromised or misused. (7.3 Access Control, 7.4 Economic, 7.7 Upgrades)H-01

Issue

The TIMELOCK_ADMIN_ROLE has immediate and centralized control over critical functions: setMinter (allowing unlimited token minting) and _authorizeUpgrade (allowing instant contract upgrades). Unlike the DEFAULT_ADMIN_ROLE, which has a 1-day timelock, actions by the TIMELOCK_ADMIN_ROLE can be executed instantly. This concentration of power, coupled with the lack of a timelock for these actions, presents a significant risk of immediate economic manipulation or malicious contract changes if the TIMELOCK_ADMIN_ROLE is compromised or misused. (7.3 Access Control, 7.4 Economic, 7.7 Upgrades)

Fix

Implement a timelock mechanism for all critical actions performed by the TIMELOCK_ADMIN_ROLE, specifically for setMinter and _authorizeUpgrade. This would introduce a delay, allowing for community review and intervention. Additionally, ensure the TIMELOCK_ADMIN_ROLE itself is controlled by a robust, multi-signature wallet with a high threshold to mitigate the centralization risk.

Status

Unresolved

Medium

TIMELOCK_ADMIN_ROLE Transfer Mechanism Vulnerability

The setTimelockAdmin function allows the current TIMELOCK_ADMIN_ROLE to transfer its role to a new address. If the TIMELOCK_ADMIN_ROLE is controlled by a single EOA or a low-threshold multisig, a compromise of this entity could lead to an unauthorized transfer of the role, potentially bypassing the DEFAULT_ADMIN_ROLE's timelock for subsequent actions. (7.3 Access Control, 7.8 Operations)M-01

Issue

The setTimelockAdmin function allows the current TIMELOCK_ADMIN_ROLE to transfer its role to a new address. If the TIMELOCK_ADMIN_ROLE is controlled by a single EOA or a low-threshold multisig, a compromise of this entity could lead to an unauthorized transfer of the role, potentially bypassing the DEFAULT_ADMIN_ROLE's timelock for subsequent actions. (7.3 Access Control, 7.8 Operations)

Fix

Ensure the TIMELOCK_ADMIN_ROLE is managed by a highly secure, multi-signature wallet. Consider adding a timelock to the setTimelockAdmin function itself, or requiring approval from the DEFAULT_ADMIN_ROLE for such a critical transfer.

Status

Unresolved

Low

One-Time initializeTimelockAdmin Call Risk

The initializeTimelockAdmin function can only be called once by the DEFAULT_ADMIN_ROLE to set the initial TIMELOCK_ADMIN_ROLE. If an incorrect or compromised address is set during this initial call, it would require the DEFAULT_ADMIN_ROLE to manually revoke and regrant the role, which is possible but adds operational complexity and potential for error. (7.8 Operations)L-01

Issue

The initializeTimelockAdmin function can only be called once by the DEFAULT_ADMIN_ROLE to set the initial TIMELOCK_ADMIN_ROLE. If an incorrect or compromised address is set during this initial call, it would require the DEFAULT_ADMIN_ROLE to manually revoke and regrant the role, which is possible but adds operational complexity and potential for error. (7.8 Operations)

Fix

Exercise extreme caution and verify the timelockAdmin address thoroughly before calling initializeTimelockAdmin. Implement robust pre-deployment checks and consider a multi-step initialization process or a mechanism for the DEFAULT_ADMIN_ROLE to correct the initial assignment more smoothly if needed.

Status

Unresolved

Analysis

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

The TrUSD contract implements an upgradeable ERC-20 token with a two-tiered access control system. While leveraging battle-tested OpenZeppelin libraries and a multisig for the primary admin role, a significant risk arises from the immediate execution capabilities of the TIMELOCK_ADMIN_ROLE for critical functions like token minting and contract upgrades, lacking the timelock present for the DEFAULT_ADMIN_ROLE. This centralization of immediate power, if compromised, could lead to severe economic or operational consequences.

Technical6/10Medium risk

The contract demonstrates good technical architecture (7.1) by utilizing OpenZeppelin's upgradeable ERC-20 and AccessControlDefaultAdminRules libraries, ensuring a solid foundation for code security (7.2). The implementation correctly handles initializers and prevents role renunciation. However, a key technical risk lies in the access control (7.3) for the TIMELOCK_ADMIN_ROLE, which can execute critical functions like setMinter and _authorizeUpgrade immediately, bypassing any timelock, which is a significant concern for upgrade safety (7.7).

Governance3/10High risk

The governance and economic model (7.5, 7.4) benefits from a two-tiered access control structure, where the DEFAULT_ADMIN_ROLE (assumed multisig with a 1-day timelock) controls the TIMELOCK_ADMIN_ROLE. This provides a layer of defense for the primary administrative functions. However, the TIMELOCK_ADMIN_ROLE itself has immediate power over token minting via setMinter and contract upgrades, posing a significant economic risk (7.4) due to potential for instant supply manipulation or malicious upgrades if this role is compromised. The setTimelockAdmin function also allows the TIMELOCK_ADMIN_ROLE to transfer itself without additional checks, which could be a governance vulnerability.

Upgrades1/10High risk

The contract correctly implements the UUPS upgradeability pattern (7.7) using OpenZeppelin's UUPSUpgradeable module, overriding _authorizeUpgrade to restrict upgrade authorization to the TIMELOCK_ADMIN_ROLE. This is a standard and secure approach. However, the absence of a timelock for the TIMELOCK_ADMIN_ROLE's upgrade authorization means that a compromised TIMELOCK_ADMIN_ROLE could instantly upgrade the contract to malicious logic, bypassing any delay for community review or intervention.

Final RecommendationWhat to do about this score

To enhance the security posture of the TrUSD contract, it is strongly recommended to implement a timelock mechanism for all critical actions performed by the TIMELOCK_ADMIN_ROLE, particularly for setMinter and _authorizeUpgrade.

This would introduce a necessary delay, allowing for scrutiny and intervention in case of a compromise or error. Additionally, ensure the TIMELOCK_ADMIN_ROLE is controlled by a robust, high-threshold multi-signature wallet, and consider adding a timelock or additional approval steps for the setTimelockAdmin function to prevent immediate role transfers.

Contract & Record

1 audit on record
TypeERC1967Proxy
NetworkEthereum
Token age26d
Contract0xd058…1697
Deployer0xb5af…2b72
Proxy Upgrade Controls
Proxy TypeEip1967 Uups
ImplementationVerified source
Upgrades (30d)0 · stable
Badge for your website
trUSD 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. Aug 12, 202675High

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

Would You Like a More Detailed Audit of trUSD?

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