The TokenV2 contract is an upgradeable ERC20 token utilizing OpenZeppelin's upgradeable contracts. It implements a unique transfer constraint mechanism to restrict transfers to/from specific Uniswap pools, which can be disabled by the owner. While the core ERC20 functionality is robust due to OpenZeppelin's audited libraries, a critical vulnerability related to upgradeability was identified, along with concerns regarding centralized control and initial token distribution.

Honeypot, rug-pull and ownership checks
Is Slap Cat a Scam?
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 TokenV2 contract is an upgradeable ERC20 token utilizing OpenZeppelin's upgradeable contracts.
Read the full analysis- Proxy contract
- Non-standard proxy storage
- Top-10 concentration > 30%
- LP lock status UNKNOWN — the pool's LP could not be read
- Liquidity < $50k
- Token age < 30 days
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
- 1 Low finding(s) from audit
Exact factors
- Proxy contract (upgradeable — admin can replace logic)
- Non-standard proxy storage (Etherscan-confirmed)
- Top-10 concentration > 30% (100.0% total → 40.0% effective; 0.0% in EOAs, 100.0% in contracts — moderate)
- LP lock status UNKNOWN — the pool's LP could not be read
- Liquidity < $50k ($37,741 across 2 pairs — thin market)
- 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 4Holders
as of audit · Sep 4, 2026- Contractstreasury, vesting, bridge, staking100.0%
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.
Whether the LP tokens are locked could not be determined.
Security Findings
HighMissing _disableInitializers() in Constructor of Upgradeable Contract
The TokenV2 contract is an upgradeable implementation designed to be deployed behind a proxy. It correctly uses an initialize function with the initializer modifier. However, its constructor is empty and does not call _disableInitializers(). If this implementation contract is ever deployed directly (not through a proxy), its initialize function could be called multiple times by anyone, leading to re-initialization of state variables and potential exploits, such as re-minting tokens or changing critical parameters.H-01
_disableInitializers() in Constructor of Upgradeable ContractIssue
The TokenV2 contract is an upgradeable implementation designed to be deployed behind a proxy. It correctly uses an initialize function with the initializer modifier. However, its constructor is empty and does not call _disableInitializers(). If this implementation contract is ever deployed directly (not through a proxy), its initialize function could be called multiple times by anyone, leading to re-initialization of state variables and potential exploits, such as re-minting tokens or changing critical parameters.
Fix
Add _disableInitializers() to the constructor of the TokenV2 contract. This prevents the initialize function from being called on the implementation contract directly, mitigating the risk of re-initialization.
Status
Unresolved
MediumCentralized Control over Transfer Constraints
The transferConstraints mechanism, which restricts token transfers to or from specified Uniswap V2 and V3 pools, can be entirely removed by the contract owner via the removeTransferConstraints() function. This grants significant centralized control to a single entity, allowing them to unilaterally alter a core token transfer behavior that could impact liquidity or trading strategies.M-01
Issue
The transferConstraints mechanism, which restricts token transfers to or from specified Uniswap V2 and V3 pools, can be entirely removed by the contract owner via the removeTransferConstraints() function. This grants significant centralized control to a single entity, allowing them to unilaterally alter a core token transfer behavior that could impact liquidity or trading strategies.
Fix
Consider implementing a multi-signature wallet or a time-locked governance mechanism for critical functions like removeTransferConstraints(). This would distribute control, increase transparency, and provide a delay for community review before significant changes are enacted.
Status
Unresolved
LowSingle Point of Failure for Owner Role
The contract relies on a single owner address for critical administrative functions, such as removeTransferConstraints(). If the owner's private key is compromised, or the owner becomes malicious, the protocol could be at risk of unauthorized changes or manipulation.L-01
Issue
The contract relies on a single owner address for critical administrative functions, such as removeTransferConstraints(). If the owner's private key is compromised, or the owner becomes malicious, the protocol could be at risk of unauthorized changes or manipulation.
Fix
Implement a multi-signature wallet for the owner role to distribute control and enhance security. This requires multiple trusted parties to approve transactions, significantly reducing the risk associated with a single point of failure.
Status
Unresolved
InfoAll Tokens Minted to Initializer
During the initialize function call, the entire maxSupply of tokens is minted to msg.sender (the address that calls initialize). This design choice means the deployer or the address responsible for initialization will initially hold the entire token supply.I-01
Issue
During the initialize function call, the entire maxSupply of tokens is minted to msg.sender (the address that calls initialize). This design choice means the deployer or the address responsible for initialization will initially hold the entire token supply.
Fix
Ensure that the address performing the initialization is a secure, controlled entity (e.g., a multi-sig wallet or a trusted contract) and that this initial distribution model aligns with the project's intended tokenomics and distribution strategy. Clearly communicate this distribution to stakeholders.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract leverages well-audited OpenZeppelin Upgradeable libraries for ERC20, ERC20Permit, and Ownable functionalities, contributing to a strong foundation (7.2 Code Security). The custom _beforeTokenTransfer logic for transferConstraints is straightforward and does not introduce reentrancy or complex external calls. However, a significant technical risk is the omission of _disableInitializers() in the constructor, which could allow re-initialization if the implementation contract is directly deployed (7.7 Upgrades).
The contract design grants the owner significant control, particularly over the transferConstraints mechanism, which can be unilaterally removed (7.3 Access Control). This centralized control introduces a single point of failure risk (7.5 Governance). Economically, the entire maxSupply is minted to the initializer, which is a design choice that centralizes initial token distribution (7.4 Economic).
The contract is designed as an upgradeable implementation using OpenZeppelin's Upgradeable pattern, which is a standard and generally secure approach (7.1 Architecture). The initialize function correctly uses the initializer modifier. However, the absence of _disableInitializers() in the constructor of the implementation contract poses a high risk, as it could allow for multiple initializations if the implementation is ever called directly (7.7 Upgrades).
Prioritize addressing the high-severity upgradeability issue by adding _disableInitializers() to the constructor.
For the centralized control points, consider implementing a multi-signature wallet for the owner role to enhance security and decentralize critical administrative actions. Ensure the initial token distribution strategy aligns with the project's overall tokenomics and security best practices.
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, 202657Medium
- Aug 11, 202658Medium
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Would You Like a More Detailed Audit of Slap Cat?
Paste the contract address into our AI-powered scanner for a deeper real-time report — free, with every scoring factor shown.
Get Detailed Audit Is this your token? Publish your own audit on this page