CRIUS Docs
API status Get API key
Concepts

Launch risk: snipers, insiders, wallet farms and uniform holders

How Crius spots insider control of a Robinhood Chain token with a clean contract (snipers, wallet farms, uniform holders, LP control) and the thresholds it uses.

Updated 2 min read

Launch risk is the risk that a token is controlled by a few people even though nothing in its contract says so. A renounced contract with locked liquidity can still be a pump and dump if insiders bought most of the supply in the first blocks, or spread it across hundreds of wallets they control. Crius looks for four patterns in every Robinhood Chain token’s launch and holders, and reports them in the launch object of /security and /bundles.

The four patterns

FlagWhat Crius looks forFlagged whenScore
insider_launchSupply bought in the first 10 blocks of trading (sniper_supply_pct, sniper_top_wallet_pct, sniper_wallets).One wallet bought 50%+ of supply, or all snipers together 80%+.−50, always high
wallet_farmAmong the top 500 holders (infrastructure excluded, 100+ needed), how often each leading hex digit appears. Chance is 1 in 16 (6.25%).One leading digit on 20%+ of those holders, and they hold 20%+ of supply.−50, always high
uniform_holdersNear-identical balances among the top 100 holders (within 5% of each other).25 or more holders with the same balance.−30
lp_single_walletThe wallet with the largest unlocked share of the token's liquidity, by USD across its pools (lp_top_wallet).One wallet holds 40%+ of all the liquidity, unlocked.−25

Snipers are counted from the token’s first trade. Robinhood Chain makes a block about every 100 ms, so the 10-block window is roughly the first second of trading: too fast for anyone who saw the token appear. A large sniped share isn’t proof of insiders on its own: sockets had 6 snipers taking about 30% and is a clean token. A single wallet taking half the supply before anyone else could buy is.

Wallet farms hide one holder behind many. When wallets are generated in bulk, their addresses often share a first character, and one character showing up on far more than 1 in 16 of the top holders, holding a fifth of the supply, is a pattern chance doesn’t produce. The wallet_farm object gives the prefix, wallets, holders_examined, share_pct against expected_pct: 6.25, and supply_pct.

Uniform holders are many wallets with the same balance: bots buying a fixed size, or supply handed out in equal slices to controlled wallets. The uniform_holders object gives holders, of_top and balance_pct (the balance they share, as a share of supply).

LP control is one wallet able to pull a large part of the market by withdrawing unlocked liquidity. See Check if a token’s liquidity is locked.

Uniform holders: Let's End AI

Let's End AI (0xc882f10529a5518ee3393af5a80e9ff00d38d44b) has over 12,000 holders. Are they real?

GET/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security
curl "https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security"
Real response 200 Captured Oct 28, 2026 · 140 lines (arrays trimmed)
{
"data": {
"contract": {
"blacklist": false,
"can_change_limits": false,
"can_change_tax": false,
"cooldown": false,
"implementation": null,
"is_proxy": false,
"mintable": false,
"owner": "0x0000000000000000000000000000000000000000",
"ownership": "renounced",
"pausable": false,
"proxy_kind": null,
"self_destruct": false,
"trading_switch": true,
"upgradeable": false,
"verified": "none"
},
"flags": [
"honeypot",
"unverified",
"uniform_holders"
],
"honeypot": {
"is_honeypot": true,
"reason": "simulated sell failed",
"selective": false
},
"hook": null,
"known_asset": false,
"launch": {
"flags": [
"uniform_holders"
],
"lp_top_wallet": {
"address": "0xabe3a51937eb4c76ab6449e9823dbffd4409776f",
"liquidity_usd": 8.58651,
"pct": 0.0253312
},
"sniper_supply_pct": 0.000299049,
"sniper_top_wallet_pct": 0.000299049,
"sniper_wallets": 1,
"sniper_window_blocks": 10,
"uniform_holders": {
"balance_pct": 0.112731,
"holders": 51,
"of_top": 100
},
"wallet_farm": null
},
"limits": {
"max_tx": "1000000000",
"max_tx_getter": "maxTxAmount()",
"max_tx_pct": 100,
"max_wallet": "1000000000",
"max_wallet_getter": "maxWalletSize()",
"max_wallet_pct": 100
},
"liquidity": {
"status": "burned",
"summary": {
"burned_pct": 99.9715,
"locked_pct": 0,
"next_unlock_ts": null,
"protocol_fee_pct": 0,
"unlocked_in_wallets_pct": 0.0284848,
"weighting": "by pool liquidity_usd"
}
},
"primary_dex": "uniswap_v2",
"risk": "critical",
"score": 0,
"tax": {
"buy_pct": 0,
"confidence": "high",
"realized": {
"buy_pct": 0,
"by_wallet_class": {
"dev_sell_pct": null,
"others_sell_pct": 0
},
"last_sample_ts": 1793224820000,
"max_sell_pct_seen": 0,
"samples": {
"buys": 27197,
"sells": 3423
},
"sell_pct": 0,
"window": "30d"
},
"sell_pct": 0,
"simulated": {
"amount_eth": 0.042454083286938696,
"buy_gas": 159144,
"buy_pct": 0,
"can_buy": true,
"can_sell": false,
"can_transfer": true,
"from": "eoa",
"revert_reason": {
"code": 3,
"data": "0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000245472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454400000000000000000000000000000000000000000000000000000000",
"message": "execution reverted: TransferHelper: TRANSFER_FROM_FAILED"
},
"router": "0x89e5db8b5aa49aa85ac63f691524311aeb649eba",
"sell_gas": 229228,
"sell_pct": null,
"transfer_pct": 0
},
"source": "realized",
"transfer_pct": 0
},
"tax_history": [
{
"from_block": 62239227,
"pct": 0,
"side": "buy"
},
{
"from_block": 62240181,
"pct": 0,
"side": "sell"
}
],
"tax_history_total": 2,
"tax_mode": "static",
"token": "0xc882f10529a5518ee3393af5a80e9ff00d38d44b"
},
"meta": {
"block": 100406838,
"block_age_ms": 1257,
"block_ts": 1793225081000,
"chain": "robinhood",
"finalized_block": 100397649,
"lag_ms": 14,
"safe_block": 100401329,
"simulation": "eth_simulateV1 via Uniswap V2 router at head"
}
}

What this tells you

  • launch.uniform_holders: holders: 51 of of_top: 100 hold the same balance, balance_pct: 0.112731 of supply each. Half of the top 100 holders look like one buyer repeated.
  • launch.flags: ["uniform_holders"], which adds uniform_holders to the token’s flags and costs 30 points.
  • launch.sniper_supply_pct is about 0.0003% with sniper_wallets: 1: the launch itself wasn’t sniped. Launch risk is about holders as much as about the first blocks.
  • launch.wallet_farm: null: no over-represented address prefix among the top holders.
Security checks reference Runs from your browser on the anonymous plan Data looks wrong? Report it

Where the numbers come from

  • Infrastructure is excluded from the holder checks: pools, the Uniswap v4 PoolManager, burn addresses and other labeled contracts aren’t holders, so they can’t make a token look concentrated or farmed.
  • Known assets (WETH, USDG, tokenized stocks) are skipped: they are issued and market-made from few wallets by design.
  • Tokens Crius didn’t see from their first mint have sniper_supply_pct: null: their launch isn’t in the indexed trades, so no sniper flag is set.
  • /bundles adds the detail: which wallets sniped, bundled buys, how the early buyers were funded and whether they still hold. Its insider_launch field is true for any of insider_launch, wallet_farm or uniform_holders. See Detect bundled launches, snipers and insiders.

Frequently asked questions

Can a token with a renounced contract and locked liquidity still be a rug?

Yes. If insiders bought most of the supply at launch, they can sell it into later buyers: no contract function is needed. That is what launch risk measures, and why insider_launch and wallet_farm make a token high risk whatever its score.

Doesn't the developer's first buy on a launchpad count as sniping?

It does count toward sniper_supply_pct, but a launchpad creator's first buy on the bonding curve is usually 20–40% of the supply, below the 50% one-wallet threshold. A token is flagged only when one wallet takes half the supply or all snipers together take 80%.

How fresh are the launch-risk flags?

They are recomputed at most every 10 minutes per token. Sniper numbers come from the launch and don't change; wallet-farm, uniform-holder and LP checks follow the current holders and liquidity.

Get your free Crius API key

Every example on this page works with a free key: higher rate limits than the anonymous plan, holders, wallets and the WebSocket stream. No card needed.

  • Robinhood Chain (4663) only, from our own archive nodes
  • REST + WebSocket
  • Pay on-chain or by card