Skip to content

Robinhood Chain·Scanned 05 Nov 2026, 18:20 UTC

PonsV2LauncherToken $SNOP

0x0f58e1a3754dfc352ffae8e962c729ede06a8c5e

Verdict

High risk

32/100 safety

SNOP token has no owner powers; curve buy/sell works at ~3% fee, but the site's dApp exit test was flagged

This is rated high risk mainly because a hard rule was triggered: the project website's own sell test was flagged, although it ran on a different token and returned about 98% of the funds, which looks like normal curve fees. The SNOP token contract itself has no owner powers and buying and selling work at about 3% fees. However, all trading money sits in an unverified bonding curve, the Pons platform owner can rescue funds in some situations, and the buyback-and-burn claim is not supported by on-chain data. Launch snipers took about 9% but have fully sold, and the creator holds nothing.

Score breakdown

  • Contract
    15
  • Token
    52
  • Social / X
    42
  • Website
    33

Higher is safer · 0 = worst · 100 = best

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

Narrative

Narrative not assessed: Trend Scout failed.

Key findings

  • CriticalWithdrawing through the dApp failed ("Sell SNOP CAT")
  • HighClaim contradicted: 100% of the protocol revenue will be used to buy back SNOP tokens.
  • MediumUnverified bonding curve holds 65.7% of supply and all reserves
  • MediumPons factory owner can rescue curve fees and stuck graduation funds
  • GoodSNOP token is a fixed-supply template with no owner powers

What would change the verdict

  • Raises safety:A clean dApp sell test of SNOP itself returns funds minus the documented ~3% curve fee → up
  • Raises safety:Bonding curve source is verified and shows no admin path to move ETH reserves → contract score up
  • Raises safety:Curve graduates and its Uniswap v4 position lands in the Pons LP locker → up
  • Lowers safety:Pons factory owner uses rescueSweptGraduation or rescue functions on SNOP funds → down

Unlock PRO for this project

A one-time payment adds hourly re-checks for good, a 7-day watch, questions to the jury, the launch map and deeper social forensics.

Post on XView on explorer ↗

Findings

13 findings

Risks (8)

  • CriticalWithdrawing through the dApp failed ("Sell SNOP CAT")honeypotDeterministic

    We ran the project's own dApp on a local fork. The "Sell SNOP CAT" step did not work. Expected: It isn't real money and no one can withdraw it. (source: https://snopfamily.app/docs). Observed: wallet +0.0098 ETH, -5858334.81 SNOPCAT; contracts: 0xbd75…4800 (site-mention) +5858334.81 SNOPCAT, 0xbd75…4800 (site-mention) -0.0098 ETH; 2 tx (approve ok, sell ok). returned 0.0098 ETH of 0.01 ETH deposited (98.01%) | driver: done — Successfully sold all SNOPCAT back for ETH.. Money deposited may be impossible to take out.

    Evidence

    • forkdApp test "Sell SNOP CAT" on a local fork (https://snopfamily.app/launchpad/0xb980c97daf4b5cf8ad71fdda9d8e40c49c8df955)
      Show source
      wallet +0.0098 ETH, -5858334.81 SNOPCAT; contracts: 0xbd75…4800 (site-mention) +5858334.81 SNOPCAT, 0xbd75…4800 (site-mention) -0.0098 ETH; 2 tx (approve ok, sell ok). returned 0.0098 ETH of 0.01 ETH deposited (98.01%) | driver: done — Successfully sold all SNOPCAT back for ETH.
    • forkdappTests: Sell SNOP CAT — approve + sell
      Show source
      returned 0.0098 ETH of 0.01 ETH deposited (98.01%)
    • forkdappTests: Sell SNOP CAT — approve
      Show source
      exact 5858334.81 SNOPCAT

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

  • HighClaim contradicted: 100% of the protocol revenue will be used to buy back SNOP tokens.claims-mismatchDeterministic

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

    Evidence

    • Show source
      The tech is working as expected, and 100% of the protocol revenue will be used to buy back $SNOP
    • on-chainTransfer events of 0x0f58e1a3754dfc352ffae8e962c729ede06a8c5e to burn addresses + balanceOf(0x…dEaD)

    Confirmed by: facts

  • MediumUnverified bonding curve holds 65.7% of supply and all reservesliquidityAI

    The token has not graduated. All trading runs through the curve 0xC41C…1963, which holds 65.74% of supply plus the ETH reserves (about $2,224). Its source is not verified. Its ABI exposes sweepFees, rescueFees, setCreatorFeeRecipient, setBuybackEnabled, exemptFromSnipeTax and graduate, but we cannot see who may call them or what they move. If one of these were callable by an admin and could move reserves, holders' exit liquidity would be at risk. This is an unknown, not proof of abuse: the simulation shows normal buying and selling today.

    Evidence

    • on-chainlaunchpad.relatedContracts: bonding curve 0xC41C81891d0809C45483DCde823F7810634A1963 verified=false
    • on-chaintopHolders: 0xC41C81891d0809C45483DCde823F7810634A1963 pct 65.7412 (bonding curve)
    • staticcurve function table: sweepFees(uint256), rescueFees(), setCreatorFeeRecipient(address), graduate(address) — access unknown (unverified)

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

  • MediumPons factory owner can rescue curve fees and stuck graduation fundsliquidityAI

    The Pons V2 factory owner (0x263e…19Dd) has rescueCurveFees(address) and rescueSweptGraduation(address,address). The second one sends tokens and ETH out. A constant GRADUATION_RESCUE_DELAY of 7 days exists. The likely path: if graduation is swept from the curve but the Uniswap v4 pool is not created, the owner can move those funds to an address of its choice after the delay. That would take the liquidity meant for the DEX pool. forceSweptGraduation is also owner-only. The exact conditions cannot be read because the factory source was omitted. This is a platform-wide trust assumption, not specific to SNOP.

    Evidence

    • codePonsV2LaunchFactory.sol:L1254-L1286
      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:L1222-L1227
      Show source
      function rescueCurveFees(address token) external onlyOwner nonReentrant {
              LaunchedToken storage launch = _launchedTokens[token];
              if (!launch.exists) revert TokenNotFound();
              PonsV2BondingCurve(payable(launch.curve)).rescueFees();
          }
    • codePonsV2LaunchFactory.sol:L1109-L1124
      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);
          }
    • on-chainPonsV2LaunchFactory param GRADUATION_RESCUE_DELAY = 604800

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

  • MediumSnipers and a funded bundle took 9.2% at launch, now sold outsnipersAI

    Eight wallets bought 9.19% of supply in the first 100 blocks (10 seconds). Four of them bought 2.62% in the same block and were funded by one address (0x5309…f32f). The snipers now hold 0%, so this supply is no longer a dump risk, though their selling already happened. One other funded cluster (0xd833…, 0xcc61…) still holds 1.67%. Top-10 non-infrastructure holders own 21.6%, and the largest single wallet holds 4.16%.

    Evidence

    • on-chainsnipers.pctSupplyBought = 9.1946, snipers.pctSupplyHeldNow = 0
    • on-chainbundles[0]: block 106412725, commonFunder 0x53091256ebd2d8aa37b45536a5fd864ca764f32f, pctSupply 2.6193
    • on-chainclusters[0]: funder 0xada5bb90d0de0bd1b6f3938708f49295a8d1f7cb pctSupplyHeldNow 1.6688
    • on-chaintop10Pct = 21.628

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

  • LowPons factory owner can raise snipe tax for future launches unboundedfeesAI

    The Pons V2 factory owner (0x263e…19Dd) can call setSnipeTaxStartBps and setSnipeTaxSeconds, and the setters have no bounds. The current values are 9900 bps (99%) decaying over 3 seconds. If the owner set a long duration and these values applied to a live curve, early buyers could be taxed close to 100%. The curve keeps its own snipeTaxStartBps()/snipeTaxSeconds() getters, which suggests values are copied at launch, so SNOP's already-launched curve is probably unaffected. This cannot be confirmed because the curve is unverified and the factory source was omitted. The current snipe tax for SNOP is 0.

    Evidence

    • codePonsV2LaunchFactory.sol:L564-L571
      Show source
      function setSnipeTaxStartBps(uint256 bps) external onlyOwner {
              if (bps != 0 && (bps <= MAX_TOTAL_TRADE_FEE_BPS || bps > MAX_SNIPE_TAX_START_BPS)) {
                  revert InvalidBasisPoints();
              }
              snipeTaxStartBps = bps;
              emit SnipeTaxStartBpsUpdated(bps);
          }
    • codePonsV2LaunchFactory.sol:L579-L584
      Show source
      function setSnipeTaxSeconds(uint256 secondsWindow) external onlyOwner {
              if (secondsWindow == 0 || secondsWindow > MAX_SNIPE_TAX_SECONDS) revert InvalidSnipeTaxWindow();
              snipeTaxSeconds = secondsWindow;
              emit SnipeTaxSecondsUpdated(secondsWindow);
          }
    • on-chainPonsV2LaunchFactory params: snipeTaxStartBps = 9900 (99%), snipeTaxSeconds = 3, bounds unbounded (no require in setter)
    • on-chaintoken.notes: curve snipeTaxNow=0bps over 3s

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

  • LowSide Uniswap v4 pool has ~$1 of unlocked wallet-held liquidityliquidityAI

    Besides the curve, there is a Uniswap v4 pool (0xed3ea09af57c8147723d8a2184d6708c76ebba0062901ca5f8c4a4820bb343c9) with about $1 of liquidity. Its positions are held by three ordinary wallets and are not locked. This is not the official graduated pool, since the curve has not graduated. The wallets can withdraw at any time. Trading there carries extreme price impact. Use the bonding curve.

    Evidence

    • on-chainliquidity: uniswap-v4 0xed3ea09af57c8147723d8a2184d6708c76ebba0062901ca5f8c4a4820bb343c9 liquidityUsd=1 lpLockedPct=0 lpBurnedPct=0
    • on-chaintoken.notes v4 position liquidity holders
      Show source
      0x0ff786e026c2fbd585e8b6adc2ec01e3559a1137 [other: wallet (unlocked)] 37.4638%
    • Show source
      Launch and trade tokens on Robinhood Chain. Fixed supply, locked liquidity, and a curve that opens the moment you sign.
    • on-chainLP status of Uniswap v4 pool 0xed3ea09af57c8147723d8a2184d6708c76ebba0062901ca5f8c4a4820bb343c9
      Show source
      lpBurnedPct: 0, lpLockedPct: 0, lpHeldByDeployerPct: 0
    • on-chainUniswap v4 position liquidity holders for pool 0xed3ea09af57c8147723d8a2184d6708c76ebba0062901ca5f8c4a4820bb343c9
      Show source
      0x0ff786e026c2fbd585e8b6adc2ec01e3559a1137 [other: wallet (unlocked)] 37.4638%, 0x2a26d20747edb78f6d4876ed29f78c4863b99e1a [other: wallet (unlocked)] 35.5144%, 0x9fb7c7e375ce6d1f51d6a8ca85034c21819535f4 [other: wallet (unlocked)] 27.0216%

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

  • LowLinked site is a new copycat launchpad registered just before launchwebsiteAI

    The token's on-chain website, snopfamily.app, is not a project page for SNOP. It is a separate token launchpad called "Snop" with its own contracts: a LaunchFactory at 0xCd3B…36fF owned by 0x9cA5…9244, a MemeHook, vaults, and unverified curves. The token description says "Inspired by Pons. Rebuilt as Snop." The domain was created at 02:47 UTC on 2026-11-05, about 23 minutes before SNOP was deployed, and has no archive history. The site's contracts do not control SNOP, which runs on the Pons V2 factory. Users who launch or trade on the Snop site rely on a different and very new owner. That owner can change the fee policy for future launches without limit and can rescue stuck launch funds to itself after 7 days.

    Evidence

    • on-chainsite.domainCreatedAt = 2026-11-05T02:47:53.325Z; contract.deployedAt = 2026-11-05T03:10:42.000Z; waybackSnapshots = []
    • Show source
      Snop | Token launchpad on Robinhood Chain
    • on-chaindescription() = Inspired by Pons. Rebuilt as Snop. Built to revive.
    • codeLaunchFactory.sol:L104-L107
      Show source
      function setFeePolicy(FeePolicy calldata policy) external onlyOwner {
              _feePolicy = policy;
          }
    • codeLaunchFactory.sol:L269-L276
      Show source
      /// @notice Last resort for a launch stuck in the swept phase for 7 days. Funds go to the owner (a Safe) for manual refunds.
          function rescue(address token) external onlyOwner {
              LaunchedToken storage t = _launched[token];
              if (t.phase != PHASE_SWEPT || block.timestamp < t.sweptAt + RESCUE_DELAY) revert WrongGraduationPhase();
              t.phase = PHASE_RESCUED;
              BondingCurve(payable(t.curve)).rescueTo(owner());
              emit Rescued(token, owner());
          }

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

Positive signals (4)

  • PositiveSNOP token is a fixed-supply template with no owner powersownershipAI

    SNOP is the standard PonsV2LauncherToken: a plain OpenZeppelin ERC-20 with burn. The whole supply is minted once to the bonding curve in the constructor. There is no owner, no mint after deployment, no fee, blacklist, pause or transfer hook. The deployer and launchFactory addresses are immutable labels only and give no control over the token. Slither reported no issues and the facts layer found no privileged functions. No one can change the token's own transfer rules.

    Evidence

    • codePonsV2LauncherToken.sol:L21
      Show source
      contract PonsV2LauncherToken is ERC20, ERC20Burnable {
    • codePonsV2LauncherToken.sol:L44-L71
      Show source
      constructor(
              string memory name_,
              string memory symbol_,
              string memory logo_,
              string memory description_,
              Socials memory socials_,
              address deployer_,
              address curve_,
              address launchFactory_,
              uint256 supply_
          ) ERC20(name_, symbol_) {
              if (deployer_ == address(0) || curve_ == address(0) || launchFactory_ == address(0)) {
                  revert ZeroAddress();
              }
    • 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;
                  }
              }
    • on-chaincontract.privileges = [] ; static.issues = []

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

  • PositiveSimulated buy and sell work with about 3% curve feeshoneypotAI

    A real buy and sell were simulated on the bonding curve. Both succeeded. A second wallet that received tokens by transfer could also sell, and a sell one hour later worked. The measured buy cost was 2.98% and the sell cost 3%. This matches the curve configuration of a 1% protocol fee plus a 2% creator tax. Wallet-to-wallet transfers carry no tax. The snipe tax has already decayed to 0.

    Evidence

    • forksimulation: canBuy=true buyTaxPct=2.98 canSell=true sellTaxPct=3 transferTaxPct=0
      Show source
      second wallet (received via transfer) could sell
    • on-chainlaunchpad.fees
      Show source
      protocol fee 1%; creator tax 2%; launch snipe tax decays to 0 over 3s (now 0 bps)

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

  • PositivePons LP locker cannot withdraw liquidity after graduationliquidityAI

    After graduation, the Uniswap v4 position NFT goes to the Pons locker 0x2674…4952. The locker has no withdraw or arbitrary-call function. Its owner can only set the factory once and cannot renounce. Once SNOP graduates, its official DEX liquidity should be permanently locked. SNOP has not graduated yet.

    Evidence

    • codePonsV2LaunchLocker.sol:L11-L20
      Show source
      /**
       * @title PonsV2LaunchLocker
       * @notice Permanently holds the graduated Uniswap V4 position NFT for every
       * pons v2 launch. Unlike v1's locker, there is no `collectFees()` here: fee
       * collection and distribution belong entirely to PonsV2MemeHook and
       * PonsV2FeeEscrow, since a V4 position accrues fees inside the singleton
       * PoolManager rather than on the NFT itself. This contract exposes no
       * withdrawal or arbitrary-call function, so locked liquidity can never be
       * removed by an administrator.
       */
    • codePonsV2LaunchLocker.sol:L60-L66
      Show source
      function setFactory(address factory_) external onlyOwner {
              if (factory != address(0)) revert AlreadyInitialized();
              if (factory_ == address(0)) revert ZeroAddress();
              factory = factory_;
              emit FactorySet(factory_);
          }

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

  • PositiveCreator wallet holds no SNOP and never soldinsidersAI

    The only creator-declared (snipe-tax-exempt) wallet is the deployer 0x50Dd…c6EA. It now holds 0% and has sold 0%. Instead it burned 1.4047% of supply to the dead address across 11 transactions. No hidden dev allocation exists: the token mints everything to the curve.

    Evidence

    • on-chaininsiders[0]: 0x50dd640ff465f1ea4f49d7206bdebbf0b6e5c6ea pctSupplyHeldNow 0
    • on-chainburns.by: deployer pct 1.4047 count 11; deployerSoldPct = 0

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

Notes (1)

  • InfoOne-time burn: 1.4% of supply sent to a burn addressburnDeterministic

    1.4% of the supply ever minted is burned, in 11 burn transfer(s), last 2026-11-05. Burned by: the deployer 0x50dd…c6ea (1.4%, 11 burns). This happened once, around launch; there is no sign of a continuing burn mechanism.

    Evidence

    • on-chainTransfer events to 0x0 / 0x…dEaD and balanceOf(burn addresses) of 0x0f58e1a3754dfc352ffae8e962c729ede06a8c5e

    Confirmed by: facts

Score breakdown

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

  • Contract

    weight 45%
    15
    Capped · max 15

    dApp test "Sell SNOP CAT" failed — funds may not be withdrawable → max 15

    The SNOP token itself is a clean fixed-supply template, but a hard rule caps this part because the website's dApp sell test was flagged, and the curve holding all reserves is unverified.

    Why this score

    Raised the score

    • Fixed-supply ERC-20 with no owner, mint, blacklist or pause
    • Fork simulation: buy and sell work at about 3% curve fees
    • Wallet-to-wallet transfers carry no tax
    • Pons LP locker has no withdrawal function

    Lowered the score

    • dApp 'Sell SNOP CAT' test flagged as failed (98% returned, different token)
    • Unverified bonding curve holds 65.7% of supply and all ETH reserves
    • Pons factory owner can rescue curve fees and stuck graduation funds
    • Snipe-tax setters for future launches have no upper limit
  • Token

    weight 30%
    52

    Launch sniping was moderate and the snipers have exited, the creator holds nothing, but liquidity is small and the buyback claim is not backed by on-chain burns.

    Why this score

    Raised the score

    • Creator wallet holds 0% and has sold 0%
    • Snipers now hold 0%; largest wallet holds 4.2%
    • Entire supply minted to the curve, no hidden dev allocation

    Lowered the score

    • Snipers bought 9.2% in the first 10 seconds, including a 2.6% funded bundle
    • Buyback & burn claim contradicted: burns were not buybacks
    • Only about $2.2k of curve liquidity; not graduated
    • Side Uniswap v4 pool has ~$1 of unlocked liquidity
  • Social / X

    weight 15%
    42

    Little verified social data was collected, and one key tweet about buybacks is contradicted by on-chain facts.

    Why this score

    Raised the score

    • X account linked on-chain from the token

    Lowered the score

    • Tweet claiming 100% revenue buybacks is contradicted on-chain
    • OSINT review failed, so account age and authenticity are unverified
  • Website

    weight 10%
    33

    The linked site is a brand-new copycat launchpad registered minutes before launch, not a SNOP project page, with mixed claim accuracy.

    Why this score

    Raised the score

    • Fixed-supply claim confirmed
    • Site trade flow used exact-amount approvals

    Lowered the score

    • Domain registered about 23 minutes before the token deployed, no archive history
    • Site is a separate 'Snop' launchpad with a different owner, not a SNOP project page
    • 'Locked liquidity' claim not shown for this token's existing v4 pool