Skip to content

Robinhood Chain·Scanned 05 Nov 2026, 00:43 UTC

PonsV2LauncherToken $VOTC

0x01f27bcfcdf8e10796d6021c57114874961086c7

Verdict

Caution

64/100 safety

Ownerless fixed-supply Pons token; buys/sells work at ~3% curve fee; bundles and clusters hold a notable share.

The VOTC token contract itself is clean: a verified Pons template with fixed supply and no owner powers, and buys and sells work with about a 3% curve fee. The main concerns are the project's buyback-and-burn promise, which on-chain data does not support (zero buyback burns so far), and coordinated bundles and wallet clusters holding a notable share of a thin, ungraduated curve. The bonding curve holding most of the supply is unverified, and the Pons platform owner keeps timelocked fee-redirect and rescue powers. The project, its site and X account are all one day old and anonymous.

Score breakdown

  • Contract
    85
  • Token
    52
  • Social / X
    45
  • Website
    38

Higher is safer · 0 = worst · 100 = best

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

Key findings

  • HighClaim contradicted: Platform fees collected in ETH are used to buy back and burn $VOTC on Pons on a verifiable schedule.
  • MediumUnverified bonding curve holds 56% of supply and buyers' ETH
  • MediumPons factory owner keeps timelocked fee-redirect and rescue powers
  • MediumLaunch bundles and a funder cluster hold a notable share
  • GoodToken is a fixed-supply Pons template with no owner powers

What would change the verdict

  • Raises safety:On-chain buyback-and-burn transactions funded by platform fees appear → website/social up
  • Lowers safety:Pons owner proposes redirecting this launch's creator fees or repoints the locker/vault factory → down
Post on XView on explorer ↗

Findings

12 findings

Risks (8)

  • HighClaim contradicted: Platform fees collected in ETH are used to buy back and burn $VOTC on Pons on a verifiable schedule.claims-mismatchDeterministic

    The project claims buyback & burn, but none of the 1 burn(s) seen was preceded by a buy from a pool in the same transaction (0.0% of supply burned in total).

    Evidence

    • Show source
      Fees in ETH buy back and burn $VOTC.
    • on-chainTransfer events of 0x01f27bcfcdf8e10796d6021c57114874961086c7 to burn addresses + balanceOf(0x…dEaD)
    • Show source
      Where the fees go: Every deal on VeilOTC pays a small platform fee in ETH. That ETH buys $VOTC on the market. That $VOTC gets burned. Anyone can check the burns on-chain
    • on-chaintoken.burns: burnedPct=0.0033, count=1, ongoing=false, buybackBurns=0, complete=true
    • on-chaintoken.burns.by: address=0x1f2a189e3c4021b71caafbc1d5de8cb2b74485ec, kind=holder, pct=0.0033, count=1, buyback=0
    • codePonsV2LauncherToken.sol:L16-L19
      Show source
      * `ERC20Burnable` lets any holder voluntarily burn their own balance; the
       * protocol's buyback mechanism does not use it, bought-back tokens are
       * locked into `PonsV2BuybackVault` for a five-year vest instead of being
       * burned.
    • Show source
      Burns are confirmed working ✅
    • on-chaintoken.burns: burnedPct=0.0033, burned=33254723571838324558302, count=1, ongoing=false, buybackBurns=0, complete=true
    • Show source
      ETH routed to buybacks
      0.0
    • Show source
      Burn not yet confirmed - Fee-to-buyback path unverified
    • on-chaindescription param: Platform fees buy back and burn $VOTC.
    • on-chainburns: burnedPct 0.0033, buybackBurns 0

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

  • MediumUnverified bonding curve holds 56% of supply and buyers' ETHotherAI

    The curve contract holds 56.49% of the token supply and all of the ETH paid in by buyers. Its source is not verified. Its interface exposes fee-moving functions: sweepFees, rescueFees and setCreatorFeeRecipient. It also has initialize and graduate. In the factory code these are reached only through owner-gated or factory paths (rescueCurveFees, _setCreatorFeeRecipient, graduate). Even so, without the curve's own source we cannot confirm who may call them. We also cannot confirm that the curve has no other way to move its reserves. Holders depend on the curve behaving like the documented Pons template.

    Evidence

    • on-chainrelatedContracts: bonding curve 0xc606FA41068e0A620D3433014fd15135BDcD460a verified=false
    • on-chaintopHolders: 0xc606FA41068e0A620D3433014fd15135BDcD460a pct 56.4937 (bonding curve)
    • codePonsV2LaunchFactory.sol:L1222-L1226
      Show source
      function rescueCurveFees(address token) external onlyOwner nonReentrant {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              PonsV2BondingCurve(payable(launch.curve)).rescueFees();
          }

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

  • MediumPons factory owner keeps timelocked fee-redirect and rescue powersownershipAI

    The factory owner is 0x263e…19Dd, and ownership cannot be renounced. Its powers: (a) It can redirect this launch's creator fees, and the creator's vested buyback tokens, to any address. This needs a 3-day public timelock and a 3-day execution window. (b) It can push the curve's pending fees straight out to the fee recipients (rescueCurveFees). (c) It can force-sweep a curve's reserves into the factory, but only when the curve is ready to graduate and a Uniswap seed is not viable. (d) It can send a swept launch's whole ETH and token reserves to any address. This is only possible after the launch has sat 7 days in the Swept phase without anyone seeding the pool. Anyone can seed the pool earlier with createGraduatedPool, which closes this path for good. These are platform-wide powers, bounded by timelocks and preconditions. They are not an instant rug path.

    Evidence

    • codePonsV2LaunchFactory.sol:L946-L957
      Show source
      function setCreatorFeeRecipient(address token, address newRecipient) external onlyOwner {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              if (newRecipient == address(0)) revert ZeroAddress();
      
              uint256 effectiveAt = block.timestamp + CREATOR_FEE_RECIPIENT_TIMELOCK;
              uint256 expiresAt = effectiveAt + CREATOR_FEE_RECIPIENT_EXECUTION_WINDOW;
              pendingCreatorFeeRecipient[token] =
                  PendingCreatorFeeRecipient({newRecipient: newRecipient, effectiveAt: effectiveAt, expiresAt: expiresAt});
      
              emit CreatorFeeRecipientChangeProposed(token, launch.creatorFeeRecipient, newRecipient, effectiveAt, expiresAt);
          }
    • codePonsV2LaunchFactory.sol:L1109-L1123
      Show source
      function forceSweptGraduation(address token) external onlyOwner nonReentrant {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              if (launch.phase != GraduationPhase.NotGraduated) revert WrongGraduationPhase();
              PonsV2BondingCurve curve = PonsV2BondingCurve(launch.curve);
              if (!curve.readyToGraduate()) {
                  revert PonsV2BondingCurve.NotReadyToGraduate();
              }
              if (_graduationSeedable(token, launch, curve.realQuoteReserve(), curve.tokenReserve())) {
                  revert GraduationStillViable();
              }
      
              _sweepCurve(token, launch, curve);
              emit LaunchForceSwept(token);
          }
    • codePonsV2LaunchFactory.sol:L1254-L1285
      Show source
      function rescueSweptGraduation(address token, address recipient) external onlyOwner nonReentrant {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              if (launch.phase != GraduationPhase.Swept) revert WrongGraduationPhase();
              if (recipient == address(0)) revert ZeroAddress();
      
              uint256 availableAt = launch.sweptAt + GRADUATION_RESCUE_DELAY;
              if (block.timestamp < availableAt) revert GraduationRescueTooEarly(availableAt);
      
              uint256 quoteAmount = launch.sweptQuote;
              uint256 tokenAmount = launch.sweptTokens;
              address pairToken = launch.pairToken;
      
              launch.sweptQuote = 0;
              launch.sweptTokens = 0;
    • codePonsV2LaunchFactory.sol:L630-L632
      Show source
      function renounceOwnership() public pure override {
              revert OwnershipCannotBeRenounced();
          }
    • on-chainfactory owner = 0x263ed295dAFaE1d9AAdD6E56c4B6F9f38eE019Dd

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

  • MediumLaunch bundles and a funder cluster hold a notable shareholdersAI

    Three same-block bundles bought 8.44%, 6.27% and 1.14% of supply right after launch. The curve was created at block 106169711; the bundles came at blocks 106169724–106169978. The 6.27% bundle is two wallets, 0xb5c4… and 0xee1d…, that still hold 2.43% and 3.03%. Separately, five top holders were all funded by 0xf70d…dbef. Together they hold 7.82% now. A second cluster holds 2.66%. Only the deployer was declared as an insider, and it holds 0%. If these coordinated groups sell together, the price on the thin curve can drop sharply.

    Evidence

    • on-chainbundles: block 106169978 pctSupply 8.441; block 106169735 pctSupply 6.2712; block 106169724 pctSupply 1.1393
    • on-chainclusters: funder 0xf70da97812cb96acdf810712aa562db8dfa3dbef, 5 wallets, pctSupplyHeldNow 7.8214
    • on-chaintop10Pct 24.9992; holdersCount 69

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

  • LowPons owner can repoint the LP locker and buyback vault factoryownershipAI

    The same owner (0x263e…19Dd) controls both the LP locker and the buyback vault. In each, it can call setFactory to change which address counts as the 'factory'. In the vault, that address may call updateCreatorRecipient. The locker and vault sources were omitted, so we cannot check whether a new factory could also pull out locked positions or vested tokens. This needs trust in the Pons owner.

    Evidence

    • on-chainPonsV2LaunchLocker setFactory(address) [owner] @PonsV2LaunchLocker.sol:L60-L66; owner = 0x263ed295dAFaE1d9AAdD6E56c4B6F9f38eE019Dd
    • on-chainPonsV2BuybackVault setFactory(address) [owner] @PonsV2BuybackVault.sol:L98-L104; updateCreatorRecipient [factory]

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

  • LowNot graduated; tiny unofficial Uniswap v4 pools are unlockedliquidityAI

    The launch is still on its bonding curve (graduated=false), with about $3,132 of liquidity. Three Uniswap v4 pools already exist, holding $15, $8 and $1. Their positions belong to third-party addresses, not the Pons locker, and they are not locked or burned. They are not the official graduation pool. Trade on the curve or wait for graduation. At graduation, the factory code mints a full-range position and locks it in the Pons LP locker.

    Evidence

    • on-chainliquidity: uniswap-v4 pools liquidityUsd 15 / 8 / 1, lpLockedPct 0; pons-v2-bonding-curve liquidityUsd 3132
    • codePonsV2LaunchFactory.sol:L1386-L1402
      Show source
      (int24 tickLower, int24 tickUpper) = _fullRangeTicks(launch.tickSpacing);
              positionId = positionManager.nextTokenId();
      
              uint256 nativeValue = _fundGraduationExecutor(currency0, currency1, amount0, amount1);
              graduationExecutor.mintFullRangePosition{value: nativeValue}(
                  token,
                  key,
                  tickLower,
                  tickUpper,
                  sqrtPriceX96,
                  amount0,
                  amount1,
                  currency0,
                  currency1,
                  policy.protocolFeeRecipient

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

  • LowWebsite domain registered under an hour before launchwebsiteAI

    veilotc.trade was registered at 2026-11-04T19:43:38Z, and the token was deployed at 20:10:58Z the same day. There are no Wayback snapshots. The dApp tests were skipped because the site did not respond, so the claimed OTC escrow product could not be checked.

    Evidence

    • Show source
      VeilOTC: Trade big. Stay private.
    • on-chainsite.domainCreatedAt 2026-11-04T19:43:38.000Z; contract.deployedAt 2026-11-04T20:10:58.000Z
    • forkdApp tests stopped after 9 min (the site did not respond) — skipped

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

  • LowSite copy button shows a garbled string, not the token addresswebsiteAI

    On the homepage, the app page, and the Hawking page, the text next to the $VOTC Copy button is not the contract address. Anyone who copies that string will not get 0x01f2…86c7 and could paste a useless or wrong value. The real address is in the X bio and on the Pons launch page.

    Evidence

    Confirmed by: grok-4.7 · Disputed by: gpt-5.6-sol

Positive signals (2)

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

    VOTC is the standard PonsV2LauncherToken: plain OpenZeppelin ERC20 plus voluntary self-burn. The whole supply is minted once, to the bonding curve, in the constructor. There is no owner, no further mint, no fee, no blacklist and no pause in the token. The 'deployer' field is only a label and grants no rights. Nobody can change how transfers work.

    Evidence

    • codePonsV2LauncherToken.sol:L21-L71
      Show source
      contract PonsV2LauncherToken is ERC20, ERC20Burnable {
          struct Socials {
              string twitter;
              string telegram;
              string discord;
              string website;
              string farcaster;
          }
      
          error ZeroAddress();
      
          address public immutable deployer;
          address public immutable launchFactory;
          address public immutable curve;
    • codePonsV2LauncherToken.sol:L13-L15
      Show source
      * allocation are the only limits on a large buy. `deployer` is carried here
       * as immutable reference data for off-chain attribution only, and confers no
       * privileges over the token.
    • codeERC20.sol:L176-L204
      Show source
      function _update(address from, address to, uint256 value) internal virtual {
              if (from == address(0)) {
                  // Overflow check required: The rest of the code assumes that totalSupply never overflows
                  _totalSupply += value;
              } else {
                  uint256 fromBalance = _balances[from];
                  if (fromBalance < value) {
                      revert ERC20InsufficientBalance(from, fromBalance, value);
                  }
                  unchecked {
                      // Overflow not possible: value <= fromBalance <= totalSupply.
                      _balances[from] = fromBalance - value;
                  }
              }
    • staticslither 0.11.6: issues = [] ; privileges = []

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

  • PositiveSite admits escrow and settlement are visible on-chainwebsiteAI

    The site does not claim wallets or settlements are hidden. It says escrow deposits and settlement stay visible on-chain, and that only the offer terms live in the link. That is a narrower privacy claim than many OTC pitches.

    Evidence

    • Show source
      No, and we will not pretend. Escrow deposits and settlement are visible on-chain.

    Confirmed by: grok-4.7, gpt-5.6-sol

Notes (2)

  • InfoBuys and sells work on the curve with about 3% feesfeesAI

    A fork simulation bought and sold on the bonding curve. A second wallet that received tokens by transfer could also sell, and selling still worked one hour later. The effective tax was 2.98% on the buy and 3% on the sell. That matches the curve's 1% protocol fee plus the 2% creator tax. Plain wallet-to-wallet transfers are untaxed. These rates are fixed for this launch; the factory caps creator tax at 10% when a token is launched.

    Evidence

    • forkcanBuy=true buyTaxPct=2.98 canSell=true sellTaxPct=3 transferTaxPct=0
    • forkcurve fees: feeBps=100, creatorTaxBps=200
    • codePonsV2LaunchFactory.sol:L545-L554
      Show source
      /**
           * @notice Adjusts the ceiling a creator's chosen trade tax is validated
           * against at launch time. Already-launched tokens keep the immutable
           * tax rate they launched with regardless of later ceiling changes.
           */
          function setMaxCreatorTaxBps(uint256 bps) external onlyOwner {
              if (bps > MAX_CREATOR_TAX_CEILING_BPS) revert InvalidBasisPoints();
              maxCreatorTaxBps = bps;
              emit MaxCreatorTaxUpdated(bps);
          }

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

  • InfoAlert bot's 57% top-10 claim does not match on-chain holderssocialAI

    A caller account posted an entry signal saying the top 10 hold 57%. The on-chain basics given for this review say top 10 hold about 25%. Treat that post as an unverified alert, not as holder concentration.

    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

    The token itself is a verified, immutable Pons template with no owner powers and working sells, but the unverified curve and the Pons factory owner's timelocked powers need trust.

    Why this score

    Raised the score

    • Verified fixed-supply template with no owner, mint, blacklist or pause
    • Buy, sell, transfer-then-sell and delayed sell all pass
    • About 3% curve fee, untaxed wallet transfers
    • Slither found no issues

    Lowered the score

    • Bonding curve holding 56% of supply is unverified
    • Pons factory owner keeps timelocked fee-redirect and rescue powers
    • Locker and vault factory address can be repointed by the Pons owner
  • Token

    weight 30%
    52

    Holder base is small and young, with same-block bundles and funder clusters controlling a meaningful share on a thin, ungraduated curve.

    Why this score

    Raised the score

    • Deployer holds 0% and was not funded with tokens
    • Top 10 non-pool holders about 25%
    • At graduation liquidity goes to the Pons LP locker

    Lowered the score

    • Same-block bundles bought about 16% of supply at launch
    • One funder cluster holds 7.8% across five wallets
    • Only about $3.1k liquidity and 69 holders
    • Small unofficial v4 pools are unlocked
  • Social / X

    weight 15%
    45

    Brand-new anonymous X account whose 'burns confirmed working' post is not backed by on-chain or on-site evidence.

    Why this score

    Raised the score

    • Posts are consistent with the site
    • No credible third-party rug or honeypot warnings found

    Lowered the score

    • Account and project created the same day, 39 followers
    • Anonymous team
    • 'Burns are confirmed working' post contradicted by zero buyback burns
  • Website

    weight 10%
    38

    Domain registered under an hour before launch, its core buyback-and-burn claim is contradicted on-chain, and its product claims could not be tested.

    Why this score

    Raised the score

    • Honest framing that escrow and settlement are visible on-chain

    Lowered the score

    • Buyback-and-burn claim contradicted by on-chain burns
    • Domain registered under an hour before token launch
    • Copy button shows a garbled string instead of the contract address
    • OTC escrow product untestable; site unresponsive