Skip to content

Robinhood Chain·Scanned 05 Nov 2026, 01:11 UTC

PonsV2LauncherToken $CD

0x32e6d0ebcdd5c25fae26d13b6d79b2496dc6f6cc

Verdict

Caution

61/100 safety

Token has no owner powers; buys and sells work at 2.5% fee, but about 25% of supply was bundled at launch.

The CD token contract itself is clean: fixed supply, no owner powers, and buys and sells work at a fixed 2.5% fee. The main risks are the launch and the story. About a quarter of supply was bought in bundled wallets in the first blocks, and liquidity is only about $2k. The project's posts say its OTC marketplace is live, but its own site still shows a demo with no markets and an admin key with no multisig.

Score breakdown

  • Contract
    85
  • Token
    45
  • Social / X
    40
  • Website
    35

Higher is safer · 0 = worst · 100 = best

Yes
2.5%
None (no owner role)
0% / 0%

Key findings

  • MediumOne funder's 4 wallets bundled 6.02% of supply
  • MediumPons factory owner controls fee and graduation-rescue paths
  • MediumPosts say the OTC market is live; the site shows a demo with 0 markets
  • LowThin liquidity: about $2k on an ungraduated bonding curve
  • GoodToken is a fixed-supply Pons template with no owner powers

What would change the verdict

  • Raises safety:Curve graduates to Uniswap v4 with LP held by the Pons locker → up
  • Lowers safety:Pons factory owner uses rescueSweptGraduation to move reserves somewhere other than the pool → down
Post on XView on explorer ↗

Findings

11 findings

Risks (6)

  • MediumOne funder's 4 wallets bundled 6.02% of supplysnipersDeterministic

    4 wallets funded by the same address 0x5309…f32f bought 6.02% of the supply together (block 104953925). Spreading one buyer over many wallets hides how much a single entity controls.

    Evidence

    • on-chainbundles with commonFunder 0x53091256ebd2d8aa37b45536a5fd864ca764f32f: 4 wallets, pctSupply 6.02
    • on-chainbundles[block 104953924].pctSupply = 11.6613 (wallets incl. 0x6c29068a174bc7465aaeb60811f306f9648cc5b2, 0x87e405d07fcfc07886ecca83d3be5f5036c73dd7)
    • on-chainbundles[block 104953925].commonFunder = 0x53091256ebd2d8aa37b45536a5fd864ca764f32f, pctSupply 6.0231
    • on-chainclusters funder 0xf70da97812cb96acdf810712aa562db8dfa3dbef pctSupplyHeldNow 1.675
    • on-chaintop10Pct = 28.4249

    Confirmed by: facts, claude-opus-5.5, grok-4.7, gpt-5.6-sol

  • MediumPons factory owner controls fee and graduation-rescue pathsotherAI

    The launchpad factory is owned by 0x263e…19Dd. Through the factory, the owner can: pay out pending curve fees directly with rescueFees (the payees are fixed: the protocol recipient and the creator); change the creator fee recipient (a 72-hour timelock applies to the creator path); turn the buyback on or off; and call rescueSweptGraduation, which moves tokens and ETH after a graduation stalls (a 7-day delay constant exists). The curve's own reserves can only leave through graduate(), which runs only once the curve is sold out. The factory source was not provided, so where rescueSweptGraduation sends funds cannot be checked. This is launchpad-wide trust in the Pons owner, not a power specific to this token.

    Evidence

    • codePonsV2BondingCurve.sol:L850-L871
      Show source
      function rescueFees() external onlyFactory returns (uint256 protocolAmount, uint256 creatorAmount) {
              uint256 pending = quoteFeeBalance;
              uint256 tax = creatorTaxBalance;
              if (pending == 0 && tax == 0) revert ZeroAmount();
      
              protocolAmount = (pending * protocolFeeShareBps) / BASIS_POINTS;
              creatorAmount = pending - protocolAmount + tax;
      
              quoteFeeBalance = 0;
              // Symmetrical with the sweep. This pays the creator their whole
              // bucket, earmark included, so leaving the earmark behind would let a
              // settled claim survive into the next accrual and divert fees the
              // creator has not earned yet into the vest.
              buybackQuoteBalance = 0;
              creatorTaxBalance = 0;
    • codePonsV2BondingCurve.sol:L598-L601
      Show source
      function graduate(address recipient) external onlyFactory returns (uint256 quoteOut, uint256 tokenOut) {
              if (graduated) revert AlreadyGraduated();
              if (recipient == address(0)) revert ZeroAddress();
              if (!readyToGraduate()) revert NotReadyToGraduate();
    • staticPonsV2LaunchFactory rescueSweptGraduation(address,address) [owner] @PonsV2LaunchFactory.sol:L1254-L1286 — sends tokens out, sends ETH; GRADUATION_RESCUE_DELAY = 604800
    • on-chainPonsV2LaunchFactory owner = 0x263ed295dAFaE1d9AAdD6E56c4B6F9f38eE019Dd

    Confirmed by: claude-opus-5.5 · Disputed by: gpt-5.6-sol

  • MediumPosts say the OTC market is live; the site shows a demo with 0 marketsclaims-mismatchAI

    The X account tells holders the marketplace is live on Robinhood Chain mainnet, with active fills and an offer book. The same project's pages still call the trade flow a preview where no funds move, label the markets view a demo showcase, and list 0 tokens. Docs also still describe the build as not yet handling real mainnet funds and the page header still says the deployment is live on testnet. Buying $CD for a working OTC desk is not what those pages show.

    Evidence

    Confirmed by: grok-4.7, gpt-5.6-sol · Disputed by: claude-opus-5.5

  • LowThin liquidity: about $2k on an ungraduated bonding curveliquidityAI

    The token trades only on its Pons bonding curve, which holds about $2,064 of real liquidity. The two Uniswap v4 pools show no tracked liquidity. Large sells will move the price sharply. Graduation to Uniswap v4 (with LP going to the Pons locker) happens only after the sellable allocation is bought out.

    Evidence

    • on-chainliquidity: pons-v2-bonding-curve 0x413b9CfA87DFbc2A2021e5E31F38E77FcC82C184 liquidityUsd 2064; uniswap-v4 pools liquidityUsd 0; graduated=false

    Confirmed by: claude-opus-5.5, grok-4.7, gpt-5.6-sol

  • LowCreator is snipe-tax exempt; holds 0.8% and has not soldinsidersAI

    The creator, 0x332B9991…, was declared at launch and is exempt from the snipe tax. It now holds 0.81% and has not sold (deployerSoldPct 0). It also funded wallet 0x24a4d86c…, which now holds 0%. The creator also receives the 1.5% creator tax on every trade and the creator share of fees. This is small today, but it is insider activity worth watching.

    Evidence

    • on-chaininsiders: 0x332b9991e2ead67b7fac08dd653e21fa67937a6f declared by creator at launch (snipe-tax exempt), pctSupplyHeldNow 0.8062; 0x24a4d86c8a76b00ee9566ed9c9ff4f0c3faf0da7 fundedBy deployer, pctSupplyHeldNow 0
    • codePonsV2BondingCurve.sol:L332-L335
      Show source
      function exemptFromSnipeTax(address account) external onlyFactory {
              snipeTaxExempt[account] = true;
              emit SnipeTaxExempted(account);
          }

    Confirmed by: claude-opus-5.5 · Disputed by: grok-4.7, gpt-5.6-sol

  • LowSingle admin key can pause Counter OTC fills, with no multisigwebsiteAI

    The project's OTC settlement contract (CounterSettlement) never holds user funds. Trades move directly between the two wallets using signed orders. Its owner (0x9178B573…) can pause all fills and choose which tokens are supported, but cannot move user funds. The scripted website test only wrapped 0.1 ETH into WETH and then timed out. No OTC fill was observed, so the product claim is unverified. The website domain was registered on 2026-11-02, one day before the token launched.

    Evidence

    • codeCounterSettlement.sol:L249-L262
      Show source
      function setFillsPaused(bool paused) external onlyOwner {
              fillsPaused = paused;
              emit FillsPausedSet(paused);
          }
      
          function setTokenSupported(address token, bool supported) external onlyOwner {
              if (token == address(0)) revert ZeroAddress();
              if (token == paymentToken && !supported) {
                  // the payment token is immutable; de-listing it would make every pair invalid.
                  revert TokenNotSupported(token);
              }
              supportedTokens[token] = supported;
              emit TokenSupportSet(token, supported);
          }
    • forkdappTests swap: observed
      Show source
      wallet no balance change; 1 tx (deposit ok) | driver: timeout — goal time cap reached
    • on-chainsite.domainCreatedAt = 2026-11-02T07:47:19.170Z
    • Show source
      Counter currently uses a single admin wallet — the same wallet used for contract deployment on both testnet and mainnet. There is no multisig on this build.

    Confirmed by: claude-opus-5.5, grok-4.7, gpt-5.6-sol

Positive signals (2)

  • PositiveToken is a fixed-supply Pons template with no owner powersownershipAI

    The CD token is the standard Pons V2 launch token: an OpenZeppelin ERC-20 plus voluntary burn. Its whole supply is minted once, in the constructor, to the bonding curve. It has no owner, no mint function, no fees, no blacklist, no pause and no transfer hooks. The stored deployer address is reference data only and grants no control. Nobody can change balances or block transfers at the token level.

    Evidence

    • codePonsV2LauncherToken.sol:L21
      Show source
      contract PonsV2LauncherToken is ERC20, ERC20Burnable {
    • codePonsV2LauncherToken.sol:L55-L71
      Show source
      if (deployer_ == address(0) || curve_ == address(0) || launchFactory_ == address(0)) {
                  revert ZeroAddress();
              }
      
              deployer = deployer_;
              // Passed explicitly rather than read from msg.sender: PonsV2LaunchFactory
              // deploys this token indirectly through PonsV2LaunchDeployer to keep its
              // own bytecode under EIP-170's size limit, so msg.sender at construction
              // time would otherwise resolve to that deployer helper, not the factory.
              launchFactory = launchFactory_;
              curve = curve_;
              logo = logo_;
              description = description_;
              _socials = socials_;
    • on-chainprivileges = [] ; isProxy = false ; slither issues = []

    Confirmed by: claude-opus-5.5, gpt-5.6-sol

  • PositiveBuys and sells work in simulation at a fixed 2.5% feehoneypotAI

    In the fork simulation a buy and a sell on the bonding curve both went through. A second wallet that received tokens by plain transfer could also sell, and selling still worked one hour later. The roughly 2.5% cost on each trade is the curve's 1% protocol fee plus the creator's 1.5% tax. Both rates are fixed in the curve when it was deployed and cannot be raised later. The launch snipe tax has already decayed to 0. Plain token transfers carry no tax.

    Evidence

    • forkcanBuy=true buyTaxPct=2.48 canSell=true sellTaxPct=2.5 transferTaxPct=0; second wallet (received via transfer) could sell; sell after +1h: ok
    • codePonsV2BondingCurve.sol:L109-L114
      Show source
      uint256 public immutable feeBps;
          // Creator-chosen at launch, capped by the protocol at launch time. Kept
          // entirely separate from feeBps: it is layered on top of the base trade
          // fee, not part of the protocol/buyback/creator split, and is paid to
          // the creator in full.
          uint256 public immutable creatorTaxBps;
    • codePonsV2BondingCurve.sol:L222
      Show source
      if (feeBps_ + creatorTaxBps_ > MAX_TOTAL_TRADE_FEE_BPS) revert InvalidFeePolicy();

    Confirmed by: claude-opus-5.5, grok-4.7, gpt-5.6-sol

Notes (3)

  • InfoUniswap v4 hook only routes swaps to the curve and has no adminotherAI

    PonsCurveAggregator is a single shared hook that lets Uniswap v4 routers trade the curve. It accepts exact-input swaps only and forwards each one to curve.buy or curve.sell. It has no owner setters, and its pool fee is fixed at 0. It refuses trades once the curve is closed or a buy would only partly fill, which is documented behaviour and not a sell trap.

    Evidence

    • codePonsCurveAggregator.sol:L152-L179
      Show source
      function _conductSwap(Currency settleCurrency, Currency takeCurrency, SwapParams calldata params, PoolId poolId)
              internal
              override
              returns (uint256 amountSettle, uint256 amountTake, bool hasSettled)
          {
              if (params.amountSpecified >= 0) revert ExactOutputNotSupported();
              Market memory m = _market(poolId);
              amountTake = uint256(-params.amountSpecified);
              poolManager.take(takeCurrency, address(this), amountTake);
      
              if (_isBuy(m, params.zeroForOne)) {
                  // refuse a partial fill up front: the curve would refund the rest, which a v4 exact-input swap cannot
                  uint256 expected = _quoteBuy(m.curve, amountTake);
                  uint256 quoteBefore = takeCurrency.balanceOfSelf() - amountTake;
                  if (takeCurrency.isAddressZero()) {
    • codePonsCurveAggregator.sol:L35-L36
      Show source
      uint24 public constant POOL_FEE = 0;
          int24 public constant TICK_SPACING = 1;

    Confirmed by: claude-opus-5.5

  • InfoX account is new and small, consistent with a new projectsocialAI

    @usecountertech was created the day before the token deploy, has 35 followers and 0 following, and its posts are all about Counter. That fits a brand-new project. Mentions are mostly generic collab asks, not a wave of identical paid shills. No named team is shown, so any 'doxxed' claim would be unverifiable — none was made.

    Evidence

    Confirmed by: grok-4.7

  • InfoScanner bot claims only partly match our factssocialAI

    Larpcheckbot replied that the markets page is empty and that docs disagreed with 'live' posts. The markets page we opened does show 0 tokens. Its claim that the project names two different contract addresses is the token CA versus CounterSettlement, which the account itself separated. Bot holder counts (34–43) are close to the 38 holders in our facts, not a contradiction. Do not treat the 31–51/100 scores as on-chain proof.

    Evidence

    Confirmed by: grok-4.7, claude-opus-5.5, gpt-5.6-sol

Score breakdown

Higher is safer. The overall is the weighted average of the assessed parts, then capped by hard facts.

  • Contract

    weight 45%
    85

    Verified fixed-supply template token with no owner powers and working buys and sells; residual trust sits with the Pons factory owner.

    Why this score

    Raised the score

    • Verified, non-upgradeable token with no owner, mint, pause or blacklist
    • Buy, sell, transfer-then-sell and delayed sell all passed in simulation
    • Fixed 2.5% curve fee (1% protocol + 1.5% creator), 0% transfer tax
    • Slither found no issues

    Lowered the score

    • Pons factory owner controls fee rescue and graduation-rescue paths
    • Factory source omitted, so the rescue destination is unverified
  • Token

    weight 30%
    45

    About a quarter of supply went to same-block bundles at launch, and liquidity is only about $2k on an ungraduated curve.

    Why this score

    Raised the score

    • Deployer holds 0.8% and has not sold
    • Several bundle groups have already sold out to 0%
    • No deployer rug history in the facts

    Lowered the score

    • About 25% of supply bought in launch-block bundles
    • One funder's 4 wallets took 6% of supply
    • Thin liquidity: about $2,064 on the bonding curve, not graduated
    • Only 38 holders
  • Social / X

    weight 15%
    40

    A one-day-old, small X account claims the marketplace is live, which the project's own site does not support.

    Why this score

    Raised the score

    • Account is on-topic and shows no wave of paid shills
    • Account clarified which address is the settlement contract

    Lowered the score

    • Posts say fills are live while the site shows a demo with 0 markets
    • Account created a day before launch, with about 35 followers
    • No named team
  • Website

    weight 10%
    35

    Brand-new site whose own pages describe a preview or demo and testnet status, contradicting the 'live' claims.

    Why this score

    Raised the score

    • Docs openly describe the admin powers and limits
    • A settlement contract is deployed and verified

    Lowered the score

    • Domain registered one day before the token launch
    • Markets page shows a demo with 0 tokens
    • Docs say a single admin key with no multisig, and status 'live on testnet'
    • Site test completed no OTC trade