The Ping token contract implements ERC20 functionality with EIP-2612-like authorization and a controlled minting mechanism. It integrates with Uniswap V4 for automatic liquidity deployment upon reaching a maximum mint count. While leveraging OpenZeppelin libraries for core functionalities and access control, a critical vulnerability exists in the liquidity deployment process, which lacks robust error handling, potentially leaving the token illiquid. Additionally, fixed initial liquidity parameters introduce economic inflexibility.
On-chain security analysis — is it a scam or legit?
Is Ping 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 Ping token contract implements ERC20 functionality with EIP-2612-like authorization and a controlled minting mechanism.
Read the full analysis- Top-10 concentration > 30%
- Liquidity not locked
- LP top1 unlocked holder = 100.0%
- LP top3 unlocked holders = 100.0%
- 1 High finding(s) from audit
- 1 Medium finding(s) from audit
Exact factors
- Top-10 concentration > 30% (51.5% total → 30.6% effective; 16.6% in EOAs, 35.0% in contracts — moderate)
- Liquidity NOT locked (owner can withdraw — rug-pull risk)
- LP top1 unlocked holder = 100.0% (exit-liquidity risk, pool = 97% of DEX liquidity)
- LP top3 unlocked holders = 100.0% (exit-liquidity risk, pool = 97% of DEX liquidity)
- 1 High finding(s) from audit
- 1 Medium 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, staking35.0%
- Walletsanonymous holders, free to sell16.6%
- Everyone elsethe rest of the supply48.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- Uniswap v4USDCAnalysed$356.9K96.7%
- Uniswap v4ETH$4.9K1.3%
- Uniswap v3USDC$2.8K0.7%
- AerodromeWETH$2.3K0.6%
- Uniswap v4USDC$5900.2%
- Uniswap v4ETH$3990.1%
Show 4 more pairs
The 8 remaining pairs hold $172 between them and are not listed. The 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.
0xd85c…9d460xde9d…108d0xd2e3…6375Security Findings
HighCritical State if Liquidity Deployment Fails
The _initializePoolAndDeployLiquidity function is called automatically when _mintCount reaches MAX_MINT_COUNT. If this function, which involves external calls to Uniswap V4 IPoolManager and IPositionManager, fails for any reason (e.g., insufficient funds, network issues, or unexpected hook behavior), the _mintCount will already be updated, and MAX_MINT_COUNT will be reached. This prevents further minting and leaves the contract in a state where the intended liquidity was not deployed, potentially rendering the token illiquid or unusable as intended. There is no retry mechanism or emergency fallback to deploy liquidity manually.H-01
Issue
The _initializePoolAndDeployLiquidity function is called automatically when _mintCount reaches MAX_MINT_COUNT. If this function, which involves external calls to Uniswap V4 IPoolManager and IPositionManager, fails for any reason (e.g., insufficient funds, network issues, or unexpected hook behavior), the _mintCount will already be updated, and MAX_MINT_COUNT will be reached. This prevents further minting and leaves the contract in a state where the intended liquidity was not deployed, potentially rendering the token illiquid or unusable as intended. There is no retry mechanism or emergency fallback to deploy liquidity manually.
Fix
Implement robust error handling and a recovery mechanism for liquidity deployment. Consider adding a _liquidityDeployed flag that is only set upon successful deployment, and allow the MINTER_ROLE or DEFAULT_ADMIN_ROLE to re-attempt deployment if it initially fails, or to manually deploy liquidity if the automatic process is stuck. This could involve a separate callable function for the admin to trigger liquidity deployment if the automatic one fails.
Status
Unresolved
MediumFixed Initial Liquidity Parameters
The POOL_SEED_AMOUNT, PAYMENT_SEED, SQRT_PRICE_PAYMENT_TOKEN_FIRST, and SQRT_PRICE_PING_FIRST are set as immutable variables in the constructor. These parameters dictate the initial liquidity provision and price for the Uniswap V4 pool. While immutability provides certainty, fixing these values at deployment means there is no flexibility to adjust them based on market conditions or unforeseen circumstances leading up to the liquidity deployment event (which occurs only after MAX_MINT_COUNT is reached). This could result in suboptimal initial liquidity, significant impermanent loss, or an unfavorable initial price for the token.M-01
Issue
The POOL_SEED_AMOUNT, PAYMENT_SEED, SQRT_PRICE_PAYMENT_TOKEN_FIRST, and SQRT_PRICE_PING_FIRST are set as immutable variables in the constructor. These parameters dictate the initial liquidity provision and price for the Uniswap V4 pool. While immutability provides certainty, fixing these values at deployment means there is no flexibility to adjust them based on market conditions or unforeseen circumstances leading up to the liquidity deployment event (which occurs only after MAX_MINT_COUNT is reached). This could result in suboptimal initial liquidity, significant impermanent loss, or an unfavorable initial price for the token.
Fix
Evaluate if these parameters truly need to be immutable. If flexibility is desired, consider making them configurable by a trusted role (e.g., DEFAULT_ADMIN_ROLE) before liquidity deployment, or implement a mechanism to allow the owner to adjust liquidity post-deployment if initial conditions are not met. This would allow for better adaptation to market dynamics.
Status
Unresolved
InfoRedundant Ownable Inheritance
The Ping contract inherits both AccessControl and Ownable. While AccessControl is used for defining MINTER_ROLE and DEFAULT_ADMIN_ROLE, the Ownable inheritance adds an owner() function and transferOwnership()/renounceOwnership() methods that are not explicitly used or integrated with the AccessControl roles. This creates a slight redundancy and potential for confusion regarding the primary access control mechanism, although _grantRole(DEFAULT_ADMIN_ROLE, msg.sender) effectively makes the deployer the admin.I-01
Issue
The Ping contract inherits both AccessControl and Ownable. While AccessControl is used for defining MINTER_ROLE and DEFAULT_ADMIN_ROLE, the Ownable inheritance adds an owner() function and transferOwnership()/renounceOwnership() methods that are not explicitly used or integrated with the AccessControl roles. This creates a slight redundancy and potential for confusion regarding the primary access control mechanism, although _grantRole(DEFAULT_ADMIN_ROLE, msg.sender) effectively makes the deployer the admin.
Fix
Remove the Ownable inheritance if AccessControl is intended to be the sole access control mechanism. Ensure that all owner-like functionalities are managed through DEFAULT_ADMIN_ROLE or other specific roles defined in AccessControl to maintain a single, clear access control model.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract leverages OpenZeppelin libraries for ERC20, AccessControl, and EIP712, enhancing code security and adherence to standards (7.2 Code Security). The EIP-2612-like authorization mechanism with nonces and time-based validity is well-implemented, preventing replay attacks (7.2 Code Security). However, a critical vulnerability exists where the automatic Uniswap V4 liquidity deployment, triggered upon reaching MAX_MINT_COUNT, lacks robust error handling (7.6 External, 7.8 Operations). If this external call fails, the token's intended liquidity provision could be permanently stalled, rendering the token illiquid.
The contract utilizes AccessControl with MINTER_ROLE and DEFAULT_ADMIN_ROLE, granting the deployer significant control over token minting and administrative functions (7.3 Access Control, 7.5 Governance). The batchMint function includes checks for MAX_MINT_COUNT and txHashes to prevent over-minting and double-spending, contributing to economic stability (7.4 Economic). A key economic risk is the immutability of initial liquidity parameters (POOL_SEED_AMOUNT, SQRT_PRICE_PAYMENT_TOKEN_FIRST). These fixed values, set at deployment, cannot be adjusted to dynamic market conditions, potentially leading to suboptimal liquidity provision or unfavorable initial pricing when the pool is finally created (7.4 Economic).
The Ping contract is implemented as a standard, non-upgradeable contract (7.7 Upgrades). It does not utilize any proxy patterns (e.g., UUPS, Transparent) or other upgradeability mechanisms. This design choice eliminates upgrade-related risks such as proxy misconfigurations, storage collisions, or insecure upgrade paths. However, it also means that any discovered vulnerabilities or desired feature enhancements would require a complete redeployment and migration of assets.
Prioritize implementing robust error handling and a recovery mechanism for the Uniswap V4 liquidity deployment process.
This is crucial to ensure the token's intended functionality and prevent it from becoming illiquid if the initial deployment fails. Additionally, review the immutability of initial liquidity parameters to determine if a more flexible approach, allowing for adjustments by a trusted role, would better serve the protocol's long-term economic health.
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, 202650Medium
- Sep 3, 202671High
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Frequently Asked Questions
What is the PING contract address?
The Ping contract on Base is 0xd85c31854c2b0fb40aaa9e2fc4da23c21f829d46. Compare it with the address the project itself publishes before trading: other contracts can carry the same name and ticker.
Is Ping a scam?
Quantum Audit's risk score for Ping is 50/100 (Medium risk) as of Sep 4, 2026, computed by a deterministic function from on-chain facts — Contract verified: Verified; Ownership: Renounced; Mint: No mint; Liquidity lock: Not locked; Upgradeability: Fixed code; Honeypot: None found; Buy / sell tax: 0% / 0%. A score is a dated snapshot of those facts, not a guarantee; each one is listed on this page.
Is PING liquidity locked?
Liquidity lock: Not locked (as of Sep 4, 2026). Total DEX liquidity: $368.9K.
Who holds PING?
As of Sep 4, 2026, the 10 largest holders own 51.5% of the supply. The Holders section on this page shows who they are by holder type.
Would You Like a More Detailed Audit of Ping?
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