bubble trap
method 1.6, generated from the scanner's own constants

How Bubble Trap draws a map.

Every rule, and the exact number it uses. If a number on this page changes, the method version changes with it and old maps are never mixed with new ones.

The scan

Five reads, in order. Each streams to the page while it runs, so the map builds in front of you.

  1. 1
    Token
    getAsset

    Name, symbol, decimals, supply.

  2. 2
    Holders
    getTokenAccounts

    Every token account, summed per owner, up to 12,000 accounts. The top 100 are mapped. Bubbles are on screen now.

  3. 3
    Wallet history
    getTransactionsForAddress

    Each holder's last 60 transactions, biggest holders first. For a young wallet that is its whole life: first SOL, first buy, the reload and every transfer.

  4. 4
    Older wallets
    first SOL + token account

    When the history is longer, the first SOL and the oldest token account transactions are read too. Both are cached forever.

  5. 5
    Links
    launch window + rules

    Everyone who got the token in its first slots, then the rules below. Links land on the map live.

A fresh scan costs roughly 1,500 to 3,500 Helius credits. Funding and first buys are stored permanently, so a rescan only reads new holders.

A line between two bubbles has one of these causes, and each carries the transaction signature that proves it. Linked wallets form a cluster; a cluster that contains the deployer, or a wallet it funded, is marked as the deployer's. One transaction draws one line: when it fits several rules, the strongest wins.

Transfer
Any transfer between two top holders, of any token or SOL, from each holder's last 60 transactions.
Intermediary
An unnamed outside wallet that sent SOL (0.05+) or this token to 2+ holders, or collected this token from them. Exchanges, named services and wallets touching 40%+ of holders are excluded.
Funded
A top holder, or the deployer, sent another top holder its first SOL.
Same funder
2+ top holders got their first SOL from one wallet with no known name. Exchanges, bridges and protocols never count.
Token transfer
A holder's first tokens came straight out of another holder's wallet, not a pool, curve or program.
Fee paid by
Another top holder, the deployer, or one unnamed wallet paying for 2+ holders signed and paid a holder's first buy. Named relayers are excluded.
Loaded before buying
The last SOL a wallet received before its first buy, within 72h, came from another holder, the deployer, or one unnamed wallet shared by 2+ holders. From an exchange it counts only as a batch: 3+ withdrawals from one hot wallet, at most 10 minutes apart, amounts within 10%.

Bought together

Bundlers spread SOL through fresh wallets so no transfer ever joins them. What they cannot hide is timing. A group is 3+ wallets whose first buys land within 2 slots, or 2+ that bought in the creation block. Each group is rated by these signals:

One fee payer
One wallet paid the fee for 2+ of the buys. On its own this makes a group high confidence.
Same size
SOL spent spreads less than 12% of the median.
Same Jito tip
Half or more paid an identical tip to a Jito tip account.
Fresh wallets
Half or more were funded less than 6h before their first buy.
Reloaded
Half or more received SOL less than 6h before their first buy, however old the wallet.
Launch block
The buys landed within 2 slots of creation. Counts as two signals.

High: a shared fee payer, or two signals. Medium: one signal. Low: timing alone, listed but never drawn or scored.

Launch window

Every transaction of the token from its creation slot through the 2 slots after it is read, all pages. Each balance change is a take (from the curve, a pool or the mint), a pass (wallet to wallet) or a sell back, so nothing counts twice. The Launch tab shows supply taken per slot, SOL spent, Jito tips, buys paid by another wallet, and what the launch wallets and their receivers still hold.

A wallet is fresh when its first SOL arrived less than 6 hours before its first buy.

Score

The holder score starts at 100 and loses points per signal, each measured as a share of supply: penalty = min(max, max(0, share − free) × weight). The caps add up to 100.

InputFreeWeightMax
Top 10 wallets20%×0.510
Clustered wallets0%×130
Bought together0%×125
Still held by the launch bundle0%×1.515
Deployer and its links0%×215
Fresh wallets0%×0.255
Clean80+Watch60+Concentrated40+Heavy0+

The score describes a holder list. It does not say a token is good or bad, and it does not accuse anyone.

Labels

Known entities come from Helius identity data: exchanges, protocols, market makers. Exchange wallets never join a cluster. Rule labels (Deployer, Burned, Program) are derived from the chain. A label changes the name on a bubble, never the lines around it.

Limits

  • Only the top 100 holders are drawn and scored.
  • Funding is the first SOL a wallet received. A wallet funded through an exchange does not link by funding; it can still land in a group.
  • Two-hop funding is not followed yet. A bundler who withdraws from an exchange at random times and amounts can still pass.
  • A group is evidence of coordinated timing, not proof of one owner. Bots chasing the same launch can look alike.
  • Finished maps are cached for 90s. Rescan reads everything again.

Bubble Trap runs on the MIT licensed scan engine from the open source Glass project. Rules live in src/lib/graph.ts, thresholds in src/config/site.ts.