# 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.

Source: https://docs.crius.sh/concepts/launch-risk/ · Updated 2026-10-28

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`](https://docs.crius.sh/reference/security/security-checks/) and [`/bundles`](https://docs.crius.sh/reference/wallet-graph/snipers-bundles-clusters/).

## The four patterns

| Flag | What Crius looks for | Flagged when | Score |
| --- | --- | --- | --- |
| `insider_launch` | Supply 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_farm` | Among 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_holders` | Near-identical balances among the top 100 holders (within 5% of each other). | 25 or more holders with the same balance. | −30 |
| `lp_single_wallet` | The 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](https://docs.crius.sh/guides/check-liquidity-locked/).

Example [Anonymous · no key · 1 credit](https://docs.crius.sh/reference/security/security-checks/)

### 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**

```bash
curl "https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security");
const { data, meta } = await res.json();
```

**Python**

```python
import requests

r = requests.get(
    "https://api.crius.sh/v1/robinhood/token/0xc882f10529a5518ee3393af5a80e9ff00d38d44b/security",
)
body = r.json()
print(body["data"])
```

**Real response 200 Captured Oct 28, 2026 · 140 lines (arrays trimmed)**

```json
{
  "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](https://docs.crius.sh/reference/security/security-checks/) Runs from your browser on the anonymous plan [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20Uniform%20holders%3A%20Let's%20End%20AI&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fconcepts%2Flaunch-risk%2F%23uniform-holders%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Ftoken%2F0xc882f10529a5518ee3393af5a80e9ff00d38d44b%2Fsecurity%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

## 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](https://docs.crius.sh/guides/detect-bundles-and-snipers/).

## 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.

## Related

[Guide **Detect bundles & snipers** Find out who bought a Robinhood Chain token's launch, how much of the supply snipers and bundles took and whether they still hold it, with a real insider launch that fell 97%. Read](https://docs.crius.sh/guides/detect-bundles-and-snipers/) [Guide **Read a bubble map** Get a Robinhood Chain token's top holders as a graph, with the funding and transfer links that group them. Real examples, with and without clusters. Read](https://docs.crius.sh/guides/read-a-bubble-map/) [Guide **Token security score** Score any Robinhood Chain token from 0 to 100 with one API call. Honeypot, buy and sell taxes, owner powers, LP locks, v4 hook risk and insider launches, with real examples. Read](https://docs.crius.sh/guides/token-security-score/) [Concept **Holder classes** How the Crius API tells real holders from pools, the PoolManager, lockers and contracts, and how it tags devs, snipers, whales and smart accounts. Read](https://docs.crius.sh/concepts/holder-classes/) [API reference **Snipers, bundles & clusters API** Snipers (bought within the first blocks after trading opened), bundles, funding clusters and the share of supply they hold. Read](https://docs.crius.sh/reference/wallet-graph/snipers-bundles-clusters/)
