Skip to content

Robinhood Chain·Scanned 06 Nov 2026, 13:06 UTC

PairLaunchToken $PAIR

0x3024d06034a3fc1faf85f11fabb491c25ff7e5fd

Verdict

Caution

57/100 safety

No owner powers, fixed supply, main-pool LP burned; sells work at 0% token tax — but snipers still hold 35%

The token contract itself is clean: fixed supply, no owner powers, and buying and selling work with no token tax, while the main pool's liquidity is permanently burned. The main risk is launch capture: 26 wallets bought about 35% of the supply in the first 10 seconds, many in same-block bundles funded by shared wallets, and they still hold nearly all of it — if they sell, the price can collapse. The project is also very new and anonymous, and the platform's factory code that manages pools was not available to review.

Score breakdown

  • Contract
    85
  • Token
    30
  • Social / X
    40
  • Website
    40

Higher is safer · 0 = worst · 100 = best

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

NarrativeHot

Trend scout · Grok 4.7 · X search via twitterapi.io

68/100 heat

A separate score, not part of the safety score: hype never makes a contract safer.

  • cross-chain liquidity
  • token launchpad
  • Robinhood Chain
Fit
Core: the product is this narrative
Buzz
Organic55 posts from 38 accounts; 11% of authors have accounts under 30 days old; 2 post(s) with engagement that does not fit the follower count.
Momentum
Project mentions jumped from about 59 to roughly 7,800 week over week (about 132×, rough and burst-sensitive); cross-chain liquidity talk fell about 64% to roughly 128.

$PAIR talk surged this week, mostly around a Robinhood Chain tool that launches a coin and pairs it with assets from other chains, plus Uniswap v4 trading. Posts mix product notes, price chatter, and launch calls; a few users say it is only a launchpad wrapper. Broader cross-chain talk is down.

Posts and accounts (5 posts)
  • @pair_cx · 06 Nov 2026, 12:14 UTC

    “A coin's price in ETH is two prices multiplied: the coin against its pair, and the pair against ETH.”

  • @kang1_wei · 06 Nov 2026, 12:42 UTC

    “allows tokens on the RH chain to form trading pairs with tokens from other chains.”

  • @coinpairfun · 28 Oct 2026, 14:05 UTC

    “Don’t $LAUNCH. $PAIR it.”

  • @SomeHad2Do · 28 Oct 2026, 19:32 UTC

    “$PAIR is another "custom launchpad" wrapper farming the paired-pool narrative with zero organic demand.”

  • @lindeng168168 · 06 Nov 2026, 12:58 UTC

    “新概念发射台 新币挂靠其他链的热门资产(SOL、LINK、BTC、PEPE、BONK、BNB 等)。”

Who pushes it

Competing for the same narrative

LaunchX, $LAUNCH

Posts, last 7 days vs the 7 before

  • project: ~7772 vs 59 (up 131.7× (rough))
  • cross-chain liquidity: ~128 vs 355 (down 64% (rough))
  • token launchpad: ~368 (no comparison)

~ = estimated from one page of results

Measured in code from 55 posts by 38 accounts: 11% fresh accounts (< 30 days), 0% near-copies, top 3 accounts wrote 24%.

X posts searched from 2026-10-07 to 2026-11-07 (UTC). Post links come only from the X search results.

MC at check
$254.2K
MC now
no live price
Since check
—
Liquidity
$68.9K

$PAIR · Live price chart

Live chart

The chart updates live; “MC at check” above is the market cap when this check ran.

LIVE
DexScreener · uniswap · pair 0x289a…b2e9

Key findings

  • HighDump risk: launch wallets still hold 34.9% of supply
  • MediumLaunch sniped: 26 wallets took 35% of supply in 10 seconds
  • MediumSeveral sniper wallets were funded by the same few wallets
  • LowLaunch hook charges a fixed swap fee to platform and creator
  • GoodFixed-supply token with no owner, mint, fee or blacklist powers

What would change the verdict

  • Lowers safety:Sniper and bundle wallets sell their remaining ~35% of supply into the pool → down
  • Raises safety:Pair publishes the factory and fee-math source, showing administrator powers cannot affect live pools → up
  • Lowers safety:Commonly funded sniper clusters are linked to the creator or Pair treasury → 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 (5)

  • HighDump risk: launch wallets still hold 34.9% of supplyholdersDeterministic

    Sniper / insider / bundled launch wallets still hold about 34.9% of the supply. If they sell, the price can collapse — current dump pressure is HIGH.

    Evidence

    • on-chainheld now: snipers 34.9172%, insiders 0%, clusters 15.88%

    Confirmed by: facts

  • MediumLaunch sniped: 26 wallets took 35% of supply in 10 secondssnipersDeterministic

    The launch was captured: 26 wallets bought 35% of the supply within 10 seconds. A small, fast group set the early price and could sell into everyone who bought later — bad for launch fairness and a strong insider/bot signal. They now hold 34.9% of supply, so current dump pressure from them is HIGH.

    Evidence

    • on-chainsnipers: windowBlocks=100, wallets=26, pctSupplyBought=35.0028, pctSupplyHeldNow=34.9172
    • on-chaintoken.snipers: windowBlocks=100, pctSupplyBought=35.0028, pctSupplyHeldNow=34.9172
    • on-chaintoken.bundles: block 107569809 wallets 0xd90973f4afcaffef2cdd8f7a45d26c935d7c863b, 0x1a1c1a261feff6a212cad16dce268e6b93a675aa, 0x67166ec3ae38acece24c535d6347dac0af7aeb5b, 0xfc9a73bcc05846df8e74af1e2d39f839a5976939 pctSupply 6.655

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

  • MediumSeveral sniper wallets were funded by the same few walletsinsidersAI

    Five funder wallets each funded 2 to 3 of the sniper or bundle wallets. For example, 0xd29c…7978 funded three wallets that now hold 4.49%. Across the five clusters about 15.9% of supply is held. This suggests a few actors are spreading large positions over many wallets. Funding lookups were capped at 25 of 29 wallets, so the real clustering may be larger.

    Evidence

    • on-chaintoken.clusters funder 0xd29c85f15df544ba632c9e25829fd29d767d7978 wallets 0xd1f7d991199a6ef4aa373585f9f85477468a8b2a, 0xd90973f4afcaffef2cdd8f7a45d26c935d7c863b, 0x0aec4305d10906efa7efa29efe7fc155f9811e6c pctSupplyHeldNow 4.4914
    • on-chaintoken.clusters funder 0xa8ad2e87e2043711d8bec77e8bc3e2683c0ab6bd pctSupplyHeldNow 3.9239
    • on-chainFunding lookups capped at 25/29 wallets

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

  • LowLaunch hook charges a fixed swap fee to platform and creatorfeesAI

    The main pool's hook (0x92Aa…68Cc) takes a fee in the quote currency on every swap using its return-delta permissions. The fee goes to PairFeeVault, which credits a share to an immutable platform recipient (0x2BaE…2123) and a share to the creator's recipient. The creator extra tax is set once at registration and capped at 900 bps (9%). The fee schedule changes with time since launch through PairFeeMath, whose source was not provided. There is no setter, so nobody can raise the fee after launch. Buyers using the Pair router or the Universal Router who are on the creator's declared exemption list get a discount, but only on buys in the first 3 seconds.

    Evidence

    • codePairLaunchHook.sol:L135-L146
      Show source
      if (
                  pools[id].token != address(0) || exemptions.length > 64 || creator == address(0) || token == quote
                      || extra > 900 || address(key.hooks) != address(this) || key.fee != 0
                      || (key.tickSpacing != 200 && key.tickSpacing != 1)
                      || Currency.unwrap(key.currency0) >= Currency.unwrap(key.currency1)
              ) revert Invalid();
              bool token0 = Currency.unwrap(key.currency0) == token;
              if (
                  (token0 ? Currency.unwrap(key.currency1) : Currency.unwrap(key.currency0)) != quote
                      || (!token0 && Currency.unwrap(key.currency1) != token)
              ) revert Invalid();
              pools[id] = Config(token, quote, uint64(block.timestamp), extra, token0, false, initialPrice);
    • codePairLaunchHook.sol:L259-L273
      Show source
      if (params.amountSpecified == 0 || params.amountSpecified == type(int256).min) revert Invalid();
              bool buy = params.zeroForOne != p.token0;
              bool discounted = buy && block.timestamp < uint256(p.launchedAt) + 3 && _isExempt(id, sender, params);
              (, uint16 bonus, uint16 rate) =
                  PairFeeMath.rates(p.creatorTaxBps, block.timestamp - p.launchedAt, buy, discounted);
              bool quoteSpecified = (params.amountSpecified < 0) == buy;
              uint256 fee;
              if (quoteSpecified) {
                  fee = params.amountSpecified < 0
                      ? PairFeeMath.fromGross(uint256(-params.amountSpecified), rate)
                      : PairFeeMath.onTop(uint256(params.amountSpecified), rate);
              }
              if (fee > uint256(uint128(type(int128).max))) revert AmountTooLarge();
              cached = SwapCache(keccak256(abi.encode(sender, id, params, data)), fee, rate, bonus, buy, quoteSpecified);
              return (IHooks.beforeSwap.selector, toBeforeSwapDelta(int128(uint128(fee)), 0), 0);
    • codePairLaunchHook.sol:L310-L315
      Show source
      if (fee != 0) {
                  (uint256 platform, uint256 creator, uint256 bonus) = PairFeeMath.split(fee, p.creatorTaxBps, s.bonus);
                  // Quote-backed claims settle alongside the swap, including a new pool's first buy.
                  manager.mint(address(vault), uint256(uint160(p.quote)), fee);
                  vault.credit(id, platform, creator, bonus);
              }
    • codePairFeeVault.sol:L82-L92
      Show source
      function _credit(bytes32 id, uint256 platform, uint256 creator, uint256 bonus) private {
              if (!registered[id]) revert Invalid();
              address asset = quote[id];
              uint256 total = platform + creator;
              uint256 next = liabilities[asset] + total;
              if (manager.balanceOf(address(this), uint256(uint160(asset))) < next) revert Invalid();
              liabilities[asset] = next;
              claimable[id][platformRecipient] += platform;
              claimable[id][creatorRecipient[id]] += creator;
              emit FeesAccrued(id, asset, creatorRecipient[id], platform, creator, bonus);
          }

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

  • LowPool factory source unavailable, so its admin powers are unverifiedotherAI

    In afterSwap, when the curve's quote counter reaches its threshold, the hook calls factory.graduateV4(). Adding liquidity before activation also asks factory.locker(). The factory (0x20aa…b281) is immutable in the hook, but its source was omitted. Its admin powers cannot be checked: it has an immutable administrator 0x6516…005a and an economicsSigner. If graduateV4 could revert, the swap that crosses the threshold would revert. The simulation shows trading working today.

    Evidence

    • codePairLaunchHook.sol:L317-L327
      Show source
      uint256 threshold = curveThreshold[id];
              if (threshold != 0 && !curveGraduated[id]) {
                  // A sell pays out only quote that earlier buys put in, so this never floors in practice. Flooring at zero
                  // keeps the counter from ever being able to revert a sell.
                  uint256 counted = curveQuote[id];
                  curveQuote[id] = s.buy ? counted + quoteAmount : (quoteAmount < counted ? counted - quoteAmount : 0);
                  if (curveQuote[id] >= threshold) {
                      curveGraduated[id] = true;
                      IPairV4Graduation(factory).graduateV4(p.token);
                  }
              }
    • codePairLaunchHook.sol:L193-L198
      Show source
      function _seeding(address sender) private view returns (bool) {
              address locker = IPairLockerFactory(factory).locker();
              if (sender == locker) return true;
              IPairPositionSeeder seeder = IPairPositionSeeder(locker);
              return sender != address(0) && sender == seeder.positions() && seeder.seeding();
          }
    • on-chainPairV4Factory param administrator = 0x6516E8dcaA228CE98a7932Cc8EB4b2540854005a; economicsSigner = 0xbCc830E6Ed38236df56Ab414e43C03Bb630e64C9

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

Positive signals (3)

  • PositiveFixed-supply token with no owner, mint, fee or blacklist powersownershipAI

    PairLaunchToken is plain OpenZeppelin ERC20 plus ERC20Permit. The full supply of 1,000,000,000 tokens is minted once in the constructor. The only added function is burn(), which burns the caller's own tokens. There is no owner, no mint after deploy, no fee, no blacklist, no pause and no proxy, so nobody can change how the token itself behaves. Slither reported no issues.

    Evidence

    • codePairLaunchToken.sol:L6-L20
      Show source
      /// @notice Fixed supply, ordinary transfers. No wallet cap, holding tax, blacklist or mint authority.
      contract PairLaunchToken is ERC20, ERC20Permit {
          uint256 public constant INITIAL_SUPPLY = 1_000_000_000 ether;
      
          constructor(string memory name_, string memory symbol_, address liquidityOwner)
              ERC20(name_, symbol_)
              ERC20Permit(name_)
          {
              _mint(liquidityOwner, INITIAL_SUPPLY);
          }
      
          function burn(uint256 amount) external {
              _burn(msg.sender, amount);
          }
      }
    • on-chaincontract.isProxy = false; privileges = []
    • staticslither 0.11.6: issues = []

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

  • PositiveBuys and sells work in simulation at 0% token taxhoneypotAI

    A real buy and sell on the Uniswap v4 pool both succeeded. Token-level tax was 0% on buy, sell and transfer. A second wallet that received tokens by transfer could also sell, and a sell one hour later worked. The swap fee charged by the launch hook is included in the quotes. No code path in the token or the hook blocks sellers once the pool is active.

    Evidence

    • forkcanBuy=true, canSell=true, buyTaxPct=0, sellTaxPct=0, transferTaxPct=0
    • forksecond wallet (received via transfer) could sell; sell after +1h: ok

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

  • PositiveMain pool liquidity is burned and cannot be withdrawnliquidityAI

    In the main pool, 100% of the v4 position liquidity belongs to 0x...dEaD, so nobody can withdraw it. The hook has no beforeRemoveLiquidity permission, so it cannot stop liquidity removals in other positions either.

    Evidence

    • on-chainuniswap-v4 0x289aac1a4d…: v4 position liquidity holders: 0x000000000000000000000000000000000000dead [burned: burn address] 100%
    • on-chainliquidity pool 0x289aac1a4d7719f5f8bd30fa51da5e7bb903e251d99a621afc7b31d0a2e6b2e9 lpBurnedPct=100, liquidityUsd=74109
    • codePairLaunchHook.sol:L115-L122
      Show source
      function getHookPermissions() public pure returns (Hooks.Permissions memory p) {
              p.beforeInitialize = true;
              p.beforeAddLiquidity = true;
              p.beforeSwap = true;
              p.afterSwap = true;
              p.beforeSwapReturnDelta = true;
              p.afterSwapReturnDelta = true;
          }

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

Notes (5)

  • LowPair treasury can withdraw its separate backstop ETH at willotherAI

    PairBackstop says the owner can take back only uncommitted ETH. In practice withdraw() lets owner 0x6516…005a send any amount of its balance anywhere. This only affects Pair's separate pair-pool reserve top-ups, not this token's pool or LP. Holders should not count on the backstop as a guarantee.

    Evidence

    • codePairBackstop.sol:L74-L80
      Show source
      function withdraw(uint256 amount, address to) external {
              if (msg.sender != owner || to == address(0)) revert Unauthorized();
              (bool ok,) = to.call{value: amount}("");
              if (!ok) revert Invalid();
              emit Withdrawn(to, amount);
          }
      }

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

  • InfoHook and fee vault have no owner and fixed wiringotherAI

    PairLaunchHook and PairFeeVault have no owner variable. Their manager, factory, router, vault and platformRecipient are all immutable. The factory-only functions (register, prepareGraduation, registerV4Curve, activatePool) are one-shot per pool: they revert if already set and only move a pool forward. None of them can pause an active pool or redirect fees. Fee claims are pull-based and backed by v4 claim balances that are checked against liabilities.

    Evidence

    • codePairLaunchHook.sol:L44-L47
      Show source
      IPoolManager public immutable manager;
          address public immutable factory;
          address public immutable router;
          PairFeeVault public immutable vault;
    • codePairLaunchHook.sol:L200-L211
      Show source
      function registerV4Curve(bytes32 id, uint256 threshold) external {
              if (msg.sender != factory) revert Unauthorized();
              if (pools[id].token == address(0) || active[id] || curveThreshold[id] != 0 || threshold == 0) revert Invalid();
              curveThreshold[id] = threshold;
          }
      
          function activatePool(bytes32 id) external {
              if (msg.sender != factory) revert Unauthorized();
              if (!pools[id].initialized || active[id]) revert Invalid();
              active[id] = true;
              delete graduationPrice[id];
          }
    • codePairFeeVault.sol:L11-L14
      Show source
      IPoolManager public immutable manager;
          address public immutable factory;
          address public immutable hook;
          address public immutable platformRecipient;
    • codePairFeeVault.sol:L94-L104
      Show source
      function claim(bytes32 id, address recipient) external nonReentrant returns (uint256 amount) {
              if (recipient == address(0) || !registered[id]) revert Invalid();
              amount = claimable[id][msg.sender];
              if (amount == 0) revert Invalid();
              claimable[id][msg.sender] = 0;
              liabilities[quote[id]] -= amount;
              claiming = true;
              manager.unlock(abi.encode(uint8(0), quote[id], recipient, amount, address(0)));
              claiming = false;
              emit Claimed(id, msg.sender, recipient, quote[id], amount);
          }

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

  • InfoSmall side pools have liquidity that owners can withdrawliquidityAI

    Three other v4 pools for PAIR (about $5.6k, $710 and $247) have liquidity held by ordinary wallets that can withdraw it at any time. These are minor venues; the main $74k pool has burned liquidity.

    Evidence

    • on-chainuniswap-v4 0x2b8b9241b0…: v4 position liquidity holders: 0x7268612153394b0a3212c8ee55d5acf4f7ad3419 [other: wallet (unlocked)] 26.5139%
    • on-chainliquidity pool 0x2b8b9241b0cb150debc10c641ff0926a59bde67a3102ec52ff720786526e6d18 liquidityUsd=5574 lpBurnedPct=0 lpLockedPct=0

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

  • InfoWebsite domain is 10 days old; launch flow could not be testedwebsiteAI

    The pair.cx domain was registered on 2026-10-27, about 10 days before analysis. The scripted 'Launch a coin' website test timed out with no transaction, no approval and no balance change. That does not show a fund-handling problem; the UI flow simply could not be verified.

    Evidence

    • Show source
      Pair: launch on Robinhood Chain, pair with a coin from any chain
    • on-chainsite.domainCreatedAt = 2026-10-27T22:21:44.000Z
    • forkdappTests 'Launch a coin': timeout — goal time cap reached; 0 tx

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

  • InfoWeek-old anonymous X account with no named teamsocialAI

    Pair’s X account and domain both appeared about a week before the token went live. The account has 57 followers and three posts, all from launch day, and neither the profile nor the site names a person, company, docs, or audit. That is a young anonymous launch, not by itself proof of a rug. There is no deployer history in the facts given, and search did not turn up credible third-party scam reports about this contract.

    Evidence

    • Show source
      Pair is live on Robinhood Chain, and the creator picks it. ... CA: 0x3024d06034a3fc1faf85f11fabb491c25ff7e5fd
    • Show source
      Launch your coin on Robinhood Chain and pair it with ETH, a Robinhood token, or SOL and other top coins from Solana, Ethereum, Base and BNB Chain. Every coin trades on Uniswap v4.

    Confirmed by: grok-4.7 · Disputed by: 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 is a plain fixed-supply ERC20 with no owner, and buys and sells work at 0% token tax; unreviewed factory and fee-math sources cost a few points.

    Why this score

    Raised the score

    • Fixed supply, no owner, mint, blacklist, pause or proxy
    • Buy, sell, transfer and delayed sell all passed simulation at 0% token tax
    • Hook and fee vault are ownerless with immutable wiring
    • Slither reported no issues

    Lowered the score

    • Launch hook takes a platform/creator swap fee (creator part up to 9%)
    • Factory, fee-math and locker sources not provided; factory admin powers unverified
  • Token

    weight 30%
    30
    Capped · max 45

    launch wallets still hold 34.9% of supply → max 45

    Main-pool liquidity is burned, but 26 sniper wallets bought 35% of supply in the first 10 seconds and still hold nearly all of it, much of it bundled and commonly funded.

    Why this score

    Raised the score

    • Main pool liquidity ($74k) held by the burn address
    • Deployer holds no tokens and has no known rug history

    Lowered the score

    • 26 wallets sniped 35% of supply within 10 seconds
    • Launch wallets still hold 34.9% — high dump pressure
    • Same-block bundles in 9 blocks
    • Five funder wallets each funded 2-3 sniper wallets (~15.9% held)
    • Smaller side pools have unlocked liquidity
  • Social / X

    weight 15%
    40

    The X account is about a week old, has few followers and no named team, though no credible scam reports were found.

    Why this score

    Raised the score

    • No corroborated scam or rug reports found
    • Posts describe the product consistently with the on-chain setup

    Lowered the score

    • X account created about a week before launch, 57 followers
    • Anonymous team, no docs or audit referenced
    • One user alleged a bundle at launch (matches on-chain bundling)
  • Website

    weight 10%
    40

    The site is a 10-day-old single marketing page with no team or docs, and its fee and pairing claims could not be verified.

    Why this score

    Raised the score

    • Site describes Uniswap v4 trading, which matches the observed pool

    Lowered the score

    • Domain registered about 10 days before analysis
    • One-page site with no docs or team
    • Fee and reserve claims unverifiable
    • Launch flow test timed out