The TAOT Token contract implements a standard ERC20 token leveraging OpenZeppelin's battle-tested libraries for token functionality and access control. The code demonstrates good practices such as custom error handling and careful use of unchecked arithmetic. However, the provided source code is incomplete, which limits the scope of a full security assessment. The AccessControl pattern introduces centralization, and a theoretical underflow risk in _totalSupply during burning was identified.
On-chain security analysis — is it a scam or legit?
Is TAOT 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 TAOT Token contract implements a standard ERC20 token leveraging OpenZeppelin's battle-tested libraries for token functionality and access control.
Read the full analysis- Ownership status UNKNOWN
- Top-10 concentration > 70%
- 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 Medium finding(s) from audit
- 1 Low finding(s) from audit
Exact factors
- Ownership status UNKNOWN (owner could not be resolved)
- Top-10 concentration > 70% (76.4% total → 73.6% effective; 71.7% in EOAs, 4.7% in contracts — extreme)
- 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 = 82% of DEX liquidity)
- LP top3 unlocked holders = 100.0% (independent LP — depth risk, pool = 82% of DEX liquidity)
- 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 4Holders
as of audit · Sep 4, 2026- Contractstreasury, vesting, bridge, staking4.7%
- Walletsanonymous holders, free to sell71.7%
- Everyone elsethe rest of the supply23.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 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.
0x3662…ba86No privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
MediumCentralization Risk via AccessControl
The contract utilizes OpenZeppelin's AccessControl, which assigns significant power to the DEFAULT_ADMIN_ROLE. This role, typically held by a single address or a multisig, can grant or revoke other roles, and if _mint or _burn functions are exposed with onlyRole modifiers, it can control the token's total supply. This centralization introduces a single point of failure, where compromise of the admin key could lead to severe consequences for the token's integrity and value (7.3 Access Control, 7.4 Economic, 7.5 Governance).M-01
Issue
The contract utilizes OpenZeppelin's AccessControl, which assigns significant power to the DEFAULT_ADMIN_ROLE. This role, typically held by a single address or a multisig, can grant or revoke other roles, and if _mint or _burn functions are exposed with onlyRole modifiers, it can control the token's total supply. This centralization introduces a single point of failure, where compromise of the admin key could lead to severe consequences for the token's integrity and value (7.3 Access Control, 7.4 Economic, 7.5 Governance).
Fix
Implement robust security practices for the DEFAULT_ADMIN_ROLE key, such as using a hardware wallet or a well-secured multisig. Consider decentralizing control over time by transferring administrative roles to a DAO or a more distributed set of entities. Clearly document the responsibilities and powers associated with each role.
Status
Unresolved
LowPotential _totalSupply Underflow in _burn (Unchecked Arithmetic)
In the _update function, when to == address(0) (representing a burn operation), the _totalSupply -= value operation is performed within an unchecked block. While the _balances[from] check ensures the sender has sufficient tokens, there is no explicit check that _totalSupply is greater than or equal to value before decrementing _totalSupply. Although OpenZeppelin's ERC20 design generally ensures _totalSupply remains consistent with the sum of balances, a desynchronization could theoretically lead to an underflow (7.2 Code Security).L-01
_totalSupply Underflow in _burn (Unchecked Arithmetic)Issue
In the _update function, when to == address(0) (representing a burn operation), the _totalSupply -= value operation is performed within an unchecked block. While the _balances[from] check ensures the sender has sufficient tokens, there is no explicit check that _totalSupply is greater than or equal to value before decrementing _totalSupply. Although OpenZeppelin's ERC20 design generally ensures _totalSupply remains consistent with the sum of balances, a desynchronization could theoretically lead to an underflow (7.2 Code Security).
Fix
While highly unlikely to be exploitable in a standard OpenZeppelin setup, for maximum robustness, consider adding an explicit require(_totalSupply >= value, 'ERC20InsufficientTotalSupply'); check before the unchecked block for _totalSupply -= value in the _update function when to == address(0).
Status
Unresolved
InfoIncomplete Source Code Provided
The provided Solidity source code is truncated, specifically within the AccessControl contract definition. This prevents a complete and thorough audit of all functionalities, especially any custom logic or full implementation details of the access control mechanisms (7.1 Architecture, 7.2 Code Security).I-01
Issue
The provided Solidity source code is truncated, specifically within the AccessControl contract definition. This prevents a complete and thorough audit of all functionalities, especially any custom logic or full implementation details of the access control mechanisms (7.1 Architecture, 7.2 Code Security).
Fix
Provide the complete and verified source code for all contracts to enable a comprehensive security assessment. Ensure that the deployed bytecode matches the provided source code exactly.
Status
Unresolved
InfoERC20 Standard Limitations (Front-Running on approve)
The ERC20 approve function is susceptible to a known front-running vulnerability. If a user increases an allowance from X to Y, a malicious actor could front-run this transaction, spend the original X allowance, and then the user's transaction would set the allowance to Y, effectively allowing the malicious actor to spend X+Y. While OpenZeppelin's _spendAllowance mitigates some risks by checking currentAllowance < value, the core approve pattern remains vulnerable to this specific sequence (7.2 Code Security, 7.4 Economic).I-02
approve)Issue
The ERC20 approve function is susceptible to a known front-running vulnerability. If a user increases an allowance from X to Y, a malicious actor could front-run this transaction, spend the original X allowance, and then the user's transaction would set the allowance to Y, effectively allowing the malicious actor to spend X+Y. While OpenZeppelin's _spendAllowance mitigates some risks by checking currentAllowance < value, the core approve pattern remains vulnerable to this specific sequence (7.2 Code Security, 7.4 Economic).
Fix
Users should be advised to set allowances to zero before increasing them, or to use increaseAllowance/decreaseAllowance functions if available in a derived contract. Developers should be aware of this limitation when designing systems that rely on ERC20 allowances.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract implements a standard ERC20 token using OpenZeppelin's robust patterns, including custom error handling (7.2 Code Security). It correctly utilizes unchecked blocks for arithmetic operations after necessary checks, minimizing overflow/underflow risks in balance updates. However, the _totalSupply decrement in _update for burning lacks an an explicit check for _totalSupply >= value before the unchecked block, presenting a theoretical, albeit low-probability, underflow risk (7.2 Code Security). The provided code is also truncated, limiting a full technical assessment (7.1 Architecture).
The contract incorporates OpenZeppelin's AccessControl, providing a structured permission system for administrative functions (7.3 Access Control). The DEFAULT_ADMIN_ROLE is established, allowing for controlled management of sensitive operations like potential minting or burning functions if exposed (7.5 Governance). However, this design introduces a degree of centralization, as the holder(s) of the DEFAULT_ADMIN_ROLE possess significant control over the token's supply and parameters, which could pose a single point of failure or trust risk (7.4 Economic).
The contract is deployed as a standard, non-proxy implementation, meaning it is not inherently upgradeable (7.7 Upgrades). This simplifies the architecture by removing upgrade-related complexities and risks, such as storage collisions or logic errors during an upgrade. However, any future modifications to the token's logic would require a new deployment and migration of assets, which can be a complex and costly process.
It is recommended to complete the provided source code to allow for a comprehensive security review of all contract functionalities, especially any custom logic or role-protected functions.
Project teams should carefully consider the implications of centralized control granted by the AccessControl pattern and implement robust operational security measures for managing administrative roles. Ensure that all external interactions and dependencies are thoroughly vetted.
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, 202653Medium
- Aug 11, 202646Medium
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Would You Like a More Detailed Audit of TAOT?
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