Robinhood Chain·Scanned 06 Nov 2026, 13:06 UTC
PairLaunchToken $PAIR
Verdict
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
- Contract85
- Token30
- Social / X40
- Website40
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.”
- @SomeHad2Do · 28 Oct 2026, 19:32 UTC
“$PAIR is another "custom launchpad" wrapper farming the paired-pool narrative with zero organic demand.”
Who pushes it
- @JosephLatty777 · 2.6K followers
- @coinpairfun · 518 followers
- @CryptoooSpidey · 2.9K followers
- @kang1_wei · 2.8K followers
- @Henry_wuhao · 1.8K followers
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
Live chart
The chart updates live; “MC at check” above is the market cap when this check ran.
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.
Findings
13 findingsRisks (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: 0x3024d06034a3fc1faf85f11fabb491c25ff7e5fdShow 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%85The 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%30Capped · max 45launch 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%40The 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%40The 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