---
name: stonkfun-registry
description: "The stonk.fun coin registry and mechanism. Load whenever a stonk.fun coin, a Solana stock-paired coin, a bare Solana mint, or any stonk.fun APR / holder-yield claim comes up, and before comparing stonk.fun to long.xyz, pons or any other launchpad."
---

# stonk.fun registry

Solana launchpad at **stonkfun.xyz**, X **@launchonsf**. Launches coins paired against tokenized stocks, pre-IPO stocks, currencies, leverage tokens, SOL or any custom mint. Platform token **$STONK `6GmAFSYs4gk3FDao5FzzySQpPZaWsa4rUJHacpMpUNgx`**.

Companion memory: `/areas/stock-paired-venues.md`, `/areas/clanker-stonkfun.md`, `/areas/stonkfun-holder-apr.md`.

---

## 0. HOLDER YIELD: MEASURE IT, NEVER ESTIMATE IT FROM VOLUME. Run this first on any APR claim.

Every "X% APR" board for stonk.fun coins (including @AgentChud's 9 Sep 2026 ten-coin board) is `volume x tax / eligible holdings`. That method is wrong in both directions and only lands near the truth by accident. Measure instead:

```python
# two snapshots, hours apart, then difference distributedTokens (quote units)
import json,urllib.request,time
U={"User-Agent":"Mozilla/5.0"}
def rw(m): return json.load(urllib.request.urlopen(urllib.request.Request(f"https://www.stonkfun.xyz/api/rewards?mint={m}",headers=U),timeout=30))
def mk(m): return json.load(urllib.request.urlopen(urllib.request.Request(f"https://www.stonkfun.xyz/api/public/v1/tokens/{m}",headers=U),timeout=30))["data"]["token"]["market"]
# snapshot A now, save {t, distributedTokens}; snapshot B >= 12h later, then:
# paid_per_day = (B.distributedTokens - A.distributedTokens) * B.quotePriceUsd / hours * 24
# apr_floor    = paid_per_day * 365 / marketCapUsd * 100
```

Rules that came out of the 10 Sep 2026 audit (details in `/areas/stonkfun-holder-apr.md`):
- **Difference `distributedTokens`, never `distributedUsd`.** The USD field is lifetime tokens repriced at the CURRENT quote price, so a USD delta across time is mostly the quote asset moving.
- **There is no payout time series.** `/rewards/history`, `/payouts`, `/tokens/{mint}/payouts` all 404. Two snapshots with a long gap is the only method. A 5-minute sampler loop dies when the container sleeps; one long gap is better anyway.
- **Real payouts ran 1.5x to 2.8x above `DEX volume x tax`** (ZCAT paid $573,302/day on $6.8M volume; 3% of that is $204k). The Token-2022 transfer fee hits every transfer, not only swaps. So volume-based numerators undercount.
- **`token-holders?mint=` returns only the top 100 wallets** plus three `excludedOwners`, and omits the pool vault. It cannot give "eligible holdings". Use full market cap as the denominator, call it the floor, and say so.
- Always state the drag the board footnotes and a buyer feels: the tax is paid on your own entry and exit (about 6% round trip at 3%), only wallets >= $20 are paid, payouts fire in batches at `minDistributionUsd` (ZCAT $50,000, small coins $2,000 to $4,000), 2.5% operating fee, and the yield does nothing for price (AGI lost 37% of cap in the same 26.6h it paid 1.35%/day).
- Legacy reward coins with `tax_bps=0` (CLANKER, FRIES, BUTTHOLE) pay from 85% of a 4% pool fee on the stonk pool only. Their APR is a different, weaker mechanism; never rank them beside transfer-tax coins as if equal.
- Audit result for the record: 24h column roughly right for ZCAT, KNOTS, BTC, AGI, USEFUL, FRIES; PURR, LOOM, RAYCAT overstated 1.5x to 1.8x; every 3d column overstated except KNOTS.

---

## 1. THE FULL COIN LIST. Do not re-scrape it by hand.

**Maintained on the kookwatch droplet, refreshed daily at 05:20 UTC by cron.**

```
script   /opt/stonkfun/stonkfun.py        log /opt/stonkfun/run.log
outputs  /opt/launchwatch/pub/stonkfun.csv        all coins (~23,000 rows, ~6.7 MB)
         /opt/launchwatch/pub/stonkfun_top.csv    top 500 by market cap
         /opt/launchwatch/pub/stonkfun_meta.json  row count, platform stats, revenue
served   http://159.223.88.168/stonkfun.csv  ·  /stonkfun_top.csv  ·  /stonkfun_meta.json
```

Fetch it from a session (Desktop Commander `start_process`, run from the Mac):
```bash
ssh -i ~/kookwatch/id_kookwatch -o StrictHostKeyChecking=no root@159.223.88.168 \
  'grep -i ",TICKER," /opt/launchwatch/pub/stonkfun.csv'
# or the whole top table
ssh -i ~/kookwatch/id_kookwatch root@159.223.88.168 'cat /opt/launchwatch/pub/stonkfun_top.csv'
```
**The cloud container cannot reach 159.223.88.168 (503 from the egress proxy).** Read the files over ssh from the Mac, or regenerate from the API below.

Columns: `name, symbol, mint, quote_symbol, quote_name, quote_mint, category, mode, tax_bps, flywheel, status, launchpad, mcap_usd, peak_mcap_usd, vol24_usd, liq_usd, price_usd, created_at, graduated_at, pool, website, twitter`.

---

## 2. THE PUBLIC API. No key, no signup. This is the real unlock.

Base: `https://www.stonkfun.xyz/api/public/v1`

| endpoint | gives |
|---|---|
| `/tokens?sort=marketcap&limit=25&page=N` | the universe. **`limit` is hard-capped at 25, paginate with `page=`.** Response is `data.tokens`, with `data.pagination.total` and `totalPages` |
| `/tokens?sort=newest` | live launch feed |
| `/tokens/{mint}` | mode, tax, quote, status, market, plus a `launch` object with the **creator wallet** and start market cap |
| `/tokens/{mint}/rewards` | lifetime tokens distributed to holders, payout count, holder count, last payout. No USD, no history |
| `/tokens/{mint}/burns` | burns recorded by the platform (**undercounts, see traps**) |
| `/tokens/{mint}/airdrop` | whether it launched with an airdrop carve-out |
| `/rewards` | every reward launch that has ever paid |
| `/revenue` | platform revenue, buybacks, burns by source |
| `/stats` | totals, graduation config |
| `/pairs` | every quote asset you can launch against |

Internal endpoints (same host, `/api/...`, also open, richer):

| endpoint | gives |
|---|---|
| `/api/rewards?mint=` | `distributedTokens`, `distributedUsd` (repriced at current quote price), `pendingTaxTokens`, `pendingTaxUsd`, `minDistributionUsd`, `minHoldingUsd` ($20), `operatingFeeBps` (250), `transferTaxBps`, `holderCount`, `lastPayoutAt`. The yield-measurement endpoint |
| `/api/token-holders?mint=` | top 100 wallets only, `supplyTokens`, `excludedOwners`, raw `accounts` list. No pool vault |
| `/api/burns?mint=` | burns valued at burn time |
| `/api/flywheel?mint=` | top-15 buyback membership history |
| `/api/rewards-overview?limit=25` | platform totals and the reward leaderboard |

Full scrape of ~23,000 coins is 900+ pages, about 8 minutes from the droplet and about 20 from the cloud container. Pace at 0.15s.

---

## 3. THE MECHANISM, verified on chain 8 Sep 2026

### Two launch modes, mutually exclusive
| | **standard ("fee coin")** | **reward coin** |
|---|---|---|
| pool fee | 1%, optional 2% tier | always 1% |
| who earns | **creator takes 0.5% of every trade** (1.5% on the 2% tier), claimed manually | **no creator fee at all** |
| holder payout | none | **1% or 3% transfer tax, fixed permanently at launch, paid to holders IN THE QUOTE ASSET, on every transfer, on any venue** |
| token program | classic SPL `Tokenkeg…` | **Token-2022 `Tokenz…` with a real `transferFeeConfig`** |

Older reward launches carry no transfer-fee extension and instead pay holders from **85% of their 4% pool fee**. In the CSV those show `mode=reward, tax_bps=0`.

### Launch-time levers
- **Dev buy up to 50% of supply**, filled in the same atomic bundle as the pool opening, so it cannot be front-run.
- **Airdrop up to 50% of supply** to the quote token's holders (top100 to top5000), snapshot frozen before the mint exists.
- Initial supply is **1,000,000,000** (verified on freshly launched mints).
- Graduation at **$40,000 market cap**. Only about **5% of launches graduate**.

### Three value-accrual routes, all running
1. **~60% of platform revenue buys $STONK on the open market and burns it.**
2. **The flywheel**: a share of every v3 pool fee buys back and burns the **top 15 coins by market cap**, weighted, every few minutes. `flywheel=1` in the CSV.
3. **The reward transfer tax**, paid to holders in the quote asset.

### Platform scale, 9 Sep 2026
~23,000 coins · 1,175 graduated · total pad market cap ~$458M · lifetime revenue $5.25M · $3.12M of $STONK bought back · $3.65M of burns · **DefiLlama independently lists StonkFun at ~$242k of revenue in 24h** · rewards-overview 9 Sep: $23.25M distributed over 7.40M payouts to 641,850 holders across 7,866 coins.

### vs long.xyz (the Robinhood Chain benchmark)
| | long.xyz | stonk.fun |
|---|---|---|
| token | byte-identical clone, tax impossible | real mint, tax possible but fixed at launch |
| curve | none, straight into a live v4 pool, never graduates | bonding curve, graduates at $40k, ~5% make it |
| liquidity | **locked** | pool vault after graduation |
| holder rewards | **none** | **yes, the whole design** |
| dev buy at launch | no | **up to 50% of supply** |
| platform token | none | $STONK, bought and burned |
| buys back its own coins | no | yes, top 15 |

**long.xyz is the safer primitive, stonk.fun is the richer one.** Say both.

---

## 4. TOP 60 BY MARKET CAP, 9 Sep 2026 05:00 UTC

| # | coin | mint | quote | mode | tax | mcap |
|---|---|---|---|---|---|---|
| 1 | STONK | `6GmAFSYs4gk3FDao5FzzySQpPZaWsa4rUJHacpMpUNgx` | SPYX | standard | - | $148,620,608 |
| 2 | ZCAT | `HcRLc9VDgjLeK154xDawfb1dmVJ98DoSqcwTHGqiDeJR` | ZEC | reward | 3% | $107,528,858 |
| 3 | KNOTS | `8RVBk8vxLiUHueLUW1f4izFVqN3nWippLhkohKg6EGkS` | STONK | reward | 3% | $19,184,342 |
| 4 | PURR | `8RNUw4N655VSrZKuhGdywhbSMDTrheguFPfxbpE2NZHQ` | HYPE | reward | 3% | $7,751,431 |
| 5 | CTO | `8K5X85PAJHAAVSvYaAzgVPPAPsqqHmvx16ZyBiscYF8L` | VIDAX | standard | - | $5,325,011 |
| 6 | BTC | `E4Ap4icMLwKot8rkkTbq5JkS5kZxt5XCE3yfxbzYBjHx` | WBTC | reward | 3% | $4,339,464 |
| 7 | AGI | `CaWZeUM4FvX9dPkjGc2xHS6tSN3qJfTWyvaG77aM5o7h` | ANTHROPIC | reward | 1% | $3,449,906 |
| 8 | CLANKER | `7LA4wwjoXU4hAdwX1eT5ouuSsMrHq9wHQBfAyPfJK1eQ` | ROBOSTRATEGY | reward | - | $3,391,428 |
| 9 | RAYCAT | `CFNRDaxFcvRwRSNnA5cHrCCr6AHhk9dNkHWpRUjNupFL` | RAY | reward | 3% | $3,230,993 |
| 10 | 🎒 | `ZesMGYmokFiEuDvNzWeMhB7jxF6eUW8c512vwSKSTNK` | BP | reward | 1% | $3,184,562 |
| 11 | BUTT | `2pouN3by7twkiZGy5aEKYUpf78ALDpKRTNu2WsQkpkqt` | TAO | reward | 3% | $3,019,396 |
| 12 | MONEROCHAN | `39HqgQ18g9R33sUfKq1TjX4sbKrgTb4YntnBCFhURJvy` | XMR | reward | 3% | $2,760,081 |
| 13 | LOOM | `CB1YQfUzgsnaCd93cZLdiX1uASW7utWBaYMUsvcwNUBV` | SOL | reward | 3% | $2,430,994 |
| 14 | USEFUL | `GWTP6M5bxhaJ1k2Kxvf8hhYaHE6jZMhh4cKzFuCpnc83` | USELESS | reward | 1% | $2,191,560 |
| 15 | FRIES | `7hGgx1VtNTj193fFXXuMEkp1MRV6JbWYgMBhHRYxaxu2` | MCDX | reward | - | $2,010,206 |
| 16 | S3 | `Bs5PmEnm1ugySurQCohqQP5oJyQRw83BgEArNrkzL5p4` | HYPE | reward | 3% | $1,889,844 |
| 17 | BUTTHOLE | `7ssJZGFT3twGqeYA1kvpoMWwZYvMZvrMEbjRaWgg46BL` | ANTHROPIC | reward | - | $1,756,538 |
| 18 | LEVERCAT | `AGi2s9zPRPHs3zEDPhPTroumTEXK5ufymYSfEFndCSSW` | xSOL | reward | 3% | $1,583,653 |
| 19 | XBT | `BLLieANeMifThH5gBeKRaNixYJPkf7fuM13VZfJ5STNK` | WBTC | reward | 3% | $1,443,120 |
| 20 | MUCHWOW | `GLRyB95LzCyyY8TVfwZVDyrVcZuSJPJJoaPTnyWs89mv` | DOGE | reward | 3% | $1,392,330 |
| 21 | UBI | `Lyi47medADEVDd5hxJo1mbxhnBct841sFpcGRyHTuwp` | USDC | reward | - | $1,333,355 |
| 22 | TREE | `8xH8ikqGXNTSYmmUVakCE2tVwU7aYJwz2JZkqAjW88sG` | APPLX | reward | 3% | $1,103,734 |
| 23 | NEARKAT | `6UtY9iTZMQQ5QZVrbzFnNaJntV7oySm9k97mvwnuZcxr` | NEAR | reward | 3% | $987,893 |
| 24 | MAXI | `4xSfWrG9VkyNbnCNvB6opKEex2ebXmCZCiied84fZisB` | DFDV | reward | 3% | $980,242 |
| 25 | tip | `Fhxcx7cHmhDkfwziHyCwN8vQRvEFRK3zezokaE8gL5q7` | JTO | reward | 1% | $976,004 |
| 26 | 🕯️ | `7zW2s4GE5i4y3MCCmFSEh7n2CB7S8aRDfvJpYYAtsQ1H` | LIT | reward | 3% | $965,009 |
| 27 | DEX | `FFT4bgyrvzyB5TKAziLkAzBj8mboduzJeDdZ27TU4FHm` | STONK | reward | 3% | $940,236 |
| 28 | ASH | `vAddewUHuYgRDrL6n3kXtBXMT635evJz8K93j6Wm1Ba` | SV151 | reward | 1% | $840,806 |
| 29 | STONKS | `DC6HP2A7SUy49WeazfeWgbwxVpzKdEPuB46mtb7XBzWx` | STONK | reward | - | $745,098 |
| 30 | GTA6 | `4kjruqGHDsSqkMdFfCjV7Vb62HPFhtXyWc2t6JpQzDnz` | TTWO | reward | - | $646,397 |
| 31 | UBER | `HHig4peAgZqdAV17XuuAdojYSYLhsctjTEvT2kq9FkNA` | wXRP | reward | 3% | $644,469 |
| 32 | ZDOG | `EbT2jpoeRJVFNWAFJE97EGfQF3iwHsEY8sh17fGbL5ER` | ZEC | reward | 1% | $594,200 |
| 33 | MANLET | `HxQhDGYqyjorgogMJx7YbBHADEDxuHhLnMMmr6VYpyn` | ANSEM | reward | - | $572,284 |
| 34 | GPT | `8RAFGyzajpYX96ppL7MXEL5DwjBSnbAqjBTfhUXDhVYj` | OPENAI | reward | 3% | $537,875 |
| 35 | CONST | `oWeyEsRQa7SWRbEiW1QNxZJhwmjnefD6HGtXqKqfv3r` | TAO | reward | 3% | $495,728 |
| 36 | (blank) | `DFwtrY9pNRHoYF4RKt8ueQ4WBa96Stw8VuaGNnZLSTNK` | XMR | reward | 3% | $405,839 |
| 37 | DEGS | `8HKQfbm1Unb4aLcgrXCvP2DBLfk2wtcJ2AtR7grzpcvg` | SILVER | reward | 3% | $403,511 |
| 38 | BOOMER | `8iBSN84vSpZAhMCin81YS9FBgiuQhKns2udaZ8qTzkh5` | BRKX | reward | 1% | $377,987 |
| 39 | PONZI | `5dRHKSymMTTx64YmtdjDqeqt2PPt5MTaTSthToDD94NW` | MSTRX | reward | 3% | $361,822 |
| 40 | INCOGINU | `Cp6AVzuSJ8pDCkYGBxAX3p9Dk77pHSsd35yHh19GJC3i` | XMR | reward | 1% | $354,767 |
| 41 | POKEMON | `B5ANwoWkptDv1QszdPHXjCF2gTWdo27FGLffdfXzzoe6` | CARDS | standard | - | $324,273 |
| 42 | LMEOW | `476MWyHnzcUc2jAnBxdqVBFZpArT3VGGwPsUHjnjA3GC` | WETH | reward | 3% | $321,235 |
| 43 | STONKCAT | `DkPQvrx7CDYrL4HfHijz6GqZLYm7Pd4rm1kTiumLFwhS` | STONK | reward | 3% | $319,775 |
| 44 | POPDAT | `AB2XFaiL9ZCPtJhFC1xMGfYR19kJuwBpoWgi67EVQZic` | POPCAT | reward | 3% | $308,124 |
| 45 | FROGE | `GhuEi5AWtZaWuAda4ysJwMTzU8oMdjiL1bz6eziptT2p` | OPENAI | reward | - | $306,272 |
| 46 | CARTEL | `43PtU7KfanxMp6vqgANug7Do59sWs4ntq8zivt1BPo5z` | SPCXX | reward | 3% | $300,220 |
| 47 | MARKET | `DUZN7M6ezXez9UVrou4N8UEGRkwnbWmXqqZgEKiZCrnN` | GPRO | reward | 3% | $298,485 |
| 48 | RUNNER | `6UymExPNxsyZwWzaPVvgjWy315yjSSupB8CKFbyjUEp3` | NIKE | reward | 1% | $294,963 |
| 49 | KIRKINATOR | `2YGDVkt2NFtb9xZmgndZaDPsMgFwNLdTwsV5QiGUPhmc` | ANDURIL | reward | - | $286,306 |
| 50 | RUNNER | `CcBBc1kwfzz4uYHgmGZVC3eAAkw2SnChhoKPMpZTRiBh` | DOGE | reward | 3% | $248,750 |
| 51 | STONKGUY | `ATaKBKZCAuiPoxq85UiCQc2uJcFrEfxVY6HLUF4FEi9C` | STONK | reward | 1% | $244,578 |
| 52 | POLLY | `AdfCFpku5yhixaJXvxdNpJcHqEWX4iMstueY4us2h3eJ` | PENGU | reward | 3% | $241,818 |
| 53 | GUT | `GxFZAkFEeEhoPXaL7Tyq6AMcbsmt5WrEbPDTg58EbCwV` | POLYMARKET | reward | 3% | $238,528 |
| 54 | NUTZ | `F7mxDioYiZx5bJ752PU6mmCGD8vbrx7Nx8KBN4cfitpc` | TAO | reward | 3% | $235,974 |
| 55 | LIGER | `J36mBMBFnGznSibqSemkCFnT2BNvaxNsxDMNS2mYLeA9` | LIT | reward | 3% | $221,014 |
| 56 | GEMS | `JD4S4a4CZ7XQoFUhHBPWK42nBvEdzMzXrJBfXBYWQCJg` | STONK | standard | - | $218,481 |
| 57 | PIGEONS | `2pwCdsf3KmoQFihDDtxMyPwrTJmimTA8sTBBn57robN6` | PLTRX | standard | - | $218,449 |
| 58 | SNFT | `CoxCrJAy4T669g8UwUJzMaUYvoUHBvGPxxXLitf7sEAr` | STONK | standard | - | $215,871 |
| 59 | SNFT | `Hqe464ggFzDvhdYTxiKa731TW3Qtf8AsvFQbMvyGfQB1` | STONK | standard | - | $213,414 |
| 60 | SNFT | `CpL8JfzujK9W1FpoqxXbHYFbdinhtHEtWqxY2nEyyzM5` | STONK | reward | 3% | $207,052 |

Ticker collisions are everywhere (three SNFT, two RUNNER, several CLANKER and CTO). **Always resolve by mint, never by symbol.**

---

## 5. HOW TO SCREEN A STONK.FUN COIN

Run these five, in order. Each one is cheap.

1. **`/tokens/{mint}`** for mode, tax, quote, creator, status, peak market cap.
2. **`getTokenSupply`** on the Solana RPC. **`1,000,000,000 minus supply` is the true burn.** The per-token `/burns` endpoint undercounts badly (TREE reported 3.0M burned against 33.1M actually gone).
3. **`getAccountInfo`** on the mint, jsonParsed. Confirm `mintAuthority: null` and `freezeAuthority: null`, and read `extensions.transferFeeConfig` to verify the tax on chain rather than trusting the API.
4. **`getTokenAccountsByOwner(creator, {mint})`.** Balance greater than zero means the dev still holds; a zero-balance account that exists means the dev held and sold; no account at all means the dev never took a position.
5. **`advanced-api-v2.pump.fun/coins/top-holders/{mint}`** for the holder list, then classify each address with `getAccountInfo`: owner `11111111111111111111111111111111` is a wallet, anything else is a pool vault. **The Raydium CLMM vault is normally the #1 holder, so excluding it is what makes the concentration number honest.**
6. **If yield is part of the thesis, run section 0** and quote measured payouts per day, never a volume-derived APR.

### Traps that have already cost a run
- **pump.fun's `isDev` / `isSniper` / `isBundler` flags are always false on stonk.fun coins.** They are computed for pump.fun launches only. Never report them.
- **`frontend-api-v3.pump.fun/coins/{mint}` works for stonk.fun mints** and returns `platform: "stonkfun"` plus `program`. That is the cheapest way to confirm a mint came from this pad. The `?platform=` filter on the list endpoint is **ignored**, so it cannot enumerate.
- **The stonkfun.xyz /revenue, /rewards and /flywheel pages all render $0.00 until the JS loads.** That is a placeholder, not the state. Read the API.
- **DexScreener sums pairs where the coin is the QUOTE as well as the base.** Filter to `baseToken.address == mint` or liquidity and volume come back inflated (STONK read $64.7M instead of its own book).
- **A tokenized stock's DexScreener "market cap" is the wrapped float, not the company.** RoboStrategy is a $650M NASDAQ fund whose on-chain wrapper is only ~$318k.
- **`distributedUsd` in `/api/rewards` is repriced at today's quote price.** Differencing it over time measures the quote asset's price move, not payouts. Difference `distributedTokens`.