nasdegen
Launch

For trading terminals

Indexing nasdegen launches

For Axiom, GMGN, DexScreener, Photon, BullX and any terminal that tags launchpads: which contracts create a nasdegen.fun launch, the events to watch, how to find each pool and how to place a launch in your columns. Addresses on this page are read from the site's live configuration. Machine-readable: indexing in /api/integrate/kit.json.

A launch is a (chain, token) pair.Watch the factories, follow the pool ids they announce, keep the raw event next to your normalised row.

Jump to the columns
01

Index launches

Identify by chain and token, never by name or pool alone.

A nasdegen.fun launch is identified by its chain and its token address (on Solana, the base mint). One token can trade in several pools, and a curve coin changes venue once, so key your row by (chain, token) and hang pools under it. Store the source event (emitter, transaction hash, log index, block hash) beside the normalised row: it is what lets you prove a launch came from one of the contracts below and repair the row after a reorg. Display data (name, logo, links) is off-chain metadata; fetch it separately and cache it.

Launch kinds

The API and the read model use three kinds: pool (a direct launch into a locked Uniswap v4 pool), curve (a bonding curve that graduates into a pool) and listing (an existing token brought into a locked pool). Solana launches are Meteora bonding curves and read as curve.

Creator and launcher

The launch event's launcher is the address that called the factory. When that is the LaunchAndBuy router, the real creator is LaunchedVia.creator in the same transaction (or creatorOf(token) on the router). The API's creator field already resolves this; show it, not launcher.

02

EVM sources

The contracts that create launches, per chain, from the deployed configuration.

Base

chain id 8453Basescan
RulesLaunchFactoryV3kind pool
0xb936057CE0e50891655e559A196F007E6ac72B00
FeeStyleLaunchFactorykind pool
0x99f05241BD59848080A54f3C9195AE186CA38e51
CreatorFeeLaunchFactorykind pool
0xCA39a6851AeCaA3221C8eEBF0EAD868AABb7383E
PegLaunchFactorykind pool
not deployed yet

Hooks on launch pools

LiquidityGatedirect and listing pools
0x5A56d12AdBD415021826B884ccFdF5a54cbD2800
CurveHookgraduated curve pools
0xeA1A065e89611999bADfcBa24305d71Ac2fBa844
FeeStyleHookfee-style pools
0x65F562786542c2cd26Cfa0f7925Da472d6aF6880
PoolManagerUniswap v4, every Swap
0x498581fF718922c3f8e6A244956aF099B2652b2b

Robinhood Chain

chain id 4663Blockscout
RulesLaunchFactoryV3kind pool
0xc03fc0f3D8Ba1Fe95D01212038721c5Ef7f8368a
FeeStyleLaunchFactorykind pool
0x6ae0BD0ffdA8Db5930774EAC67525E0049832a9c
CreatorFeeLaunchFactorykind pool
0x34967D54e4B45aeDeD25649741eA6188eBa20CaC
PegLaunchFactorykind pool
not deployed yet

Hooks on launch pools

LiquidityGatedirect and listing pools
0xdac33249139E490DAFA09219e1EE125bf6f4a800
CurveHookgraduated curve pools
0x7779d6EddAbb17E8153b1d3e6dfb1379887D6844
FeeStyleHookfee-style pools
0xFa0651e29D1690D2B32c5897AC6a175EAd5D2880
PoolManagerUniswap v4, every Swap
0x8366a39CC670B4001A1121B8F6A443A643e40951

BNB Chain

chain id 56BscScan
RulesLaunchFactoryV3kind pool
0x6A92BfcFaa107ba8686D4285521f5C7d67F16f6B
FeeStyleLaunchFactorykind pool
0x8AE2ea8Cbd61869f8dF32563ECC38AD62A8141a9
CreatorFeeLaunchFactorykind pool
0x31637Eb0FaA1fE3EBFcF2939424979fB6aac8734
PegLaunchFactorykind pool
not deployed yet

Hooks on launch pools

LiquidityGatedirect and listing pools
0xC210DE2457fBeC8a7A8C6D884cc2259E4C102800
CurveHookgraduated curve pools
0x5214be97Ac1D5F4d86a378A5B75B289f114ba844
FeeStyleHookfee-style pools
0xC1cB0e098E709e9eB35989C200FDde5e6812e880
PoolManagerUniswap v4, every Swap
0x28e2Ea090877bF75740558f6BFB36A5ffeE9e9dF

A blank means that contract is not deployed on that chain yet; nothing on this page is a placeholder. Pools indexed before the LiquidityGate existed are hookless, so always read the real hook from the factory's poolKeyOf or from hooks on the API row.

03

Events and pools

Signatures and topic0 computed from the ABI the site's own indexer decodes with.

Filter logs by the source addresses above, then follow the pool ids they announce on the PoolManager. Several factories emit a Launched with the same signature and topic0, so the emitter address is what tells them apart. Every pool id is the Uniswap v4 id of the PoolKey (keccak256(abi.encode(key))); the launch events carry it, so you rarely need to compute it.

LaunchFactory (kind pool). Direct launches: deploys the token, opens a Uniswap v4 pool and locks 100% of the supply as one single-sided position. One token can open several pools at once (a multi-pair launch).

PoolKey: currency0 = quote, currency1 = token (the factory mines a salt so the token sorts above its quote), fee = Launched.lpFee (10000 to 30000 pips), tickSpacing = 200, hooks = the chain's LiquidityGate. Read it with factory.poolKeyOf(token) (first pool) or factory.poolKeyAt(token, i) / factory.poolsOf(token).

Eventtopic0Use
LaunchFactory.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI)0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9a new launch: token, tokenId (the locked position), launcher, quote, poolId, startTick, lpFee, supply, metadataURI. A multi-pair launch emits one per pool with the same token.
LaunchFactory.MultiPairLaunchedevent MultiPairLaunched(address indexed token, bytes32[] poolIds)0xa61112d06e0155d1f17b7bcef94fc48ca0406c6bc3152aca945cc8e835555479the full pool set of a multi-pair launch, in order
LaunchFactory.RewardPoolCreatedevent RewardPoolCreated(address indexed token, address indexed pool, address indexed quote)0xcccf10613f67792eecfb9a80ab0ceb4928e43c66255e7a39e9dd5a2dad5bc103the creator side of the fees goes to holders through this RewardPool
LaunchFactory.FeeVaultCreatedevent FeeVaultCreated(address indexed token, address indexed vault, address indexed quote, uint8 mode)0x255add866ba2eeef650e4e30a49e793bf95621d59796d33c2f5cfca46bc7300athe creator side of the fees goes to a FeeVault module (mode)

LaunchAndBuy (kind pool). A router that launches through the LaunchFactory and makes the creator's first buy in the same transaction. The factory then records the router as launcher.

PoolKey: the LaunchFactory's (the router only calls it)

Eventtopic0Use
LaunchAndBuy.LaunchedViaevent LaunchedVia(address indexed creator, address indexed token, uint256 tokenId, uint256 quoteIn, uint256 tokensOut)0x5bf63f84755bf9de4570848428b2e7a8fff53eb980b51ae4c555467365a14630the real creator of a router launch; quoteIn / tokensOut are the first buy. Show creator = LaunchedVia.creator (or router.creatorOf(token)), never the router.

ListingFactory (kind listing). An existing ERC-20 brought into a locked pool (no new token is deployed).

PoolKey: currency0 = quote, currency1 = token, fee = Listed.lpFee, tickSpacing = 200, hooks = the LiquidityGate. Read it with listingFactory.poolKeyOf(tokenId).

Eventtopic0Use
ListingFactory.Listedevent Listed(address indexed token, uint256 indexed tokenId, address indexed lister, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 amount, string metadataURI)0xad5a4aaa469875ff13658232c22a8ba97398205fa40bdf452cdbd83b1ee2d117a new listing: token, tokenId, lister, quote, poolId, startTick, lpFee, amount locked, metadataURI

CurveFactory (kind curve). Bonding-curve launches. Trading starts on a per-launch BondingCurve contract and moves to a locked Uniswap v4 pool at graduation.

PoolKey: ordered by address (token_is_currency0 says which side the token is), fee = 0 in the key (the CurveHook charges the fee), tickSpacing = 200, hooks = the CurveHook. Read it with curveFactory.poolKeyOf(token), valid before and after graduation.

Eventtopic0Use
CurveFactory.CurveLaunchedevent CurveLaunched(address indexed token, address indexed curve, address indexed launcher, address quote, address creatorFeeRecipient, uint256 supply, uint256 phantomQuote, uint256 graduationThreshold, uint16 feeBps, uint16 creatorTaxBps, string metadataURI)0x41a83fcb07d214b946bf3ed8ff5921bef5a4459be08287b8fe86e3de08103c08a new curve: token, curve (the BondingCurve to watch), launcher, quote, supply, phantomQuote, graduationThreshold, feeBps, creatorTaxBps, metadataURI
CurveFactory.CurveLaunchOptionsevent CurveLaunchOptions(address indexed token, uint32 snipeWindow, uint16 snipeStartBps, uint16 airdropBps, uint256 airdropTokens)0x718dd73f4177b643a4c4da4072fb4f3b3ca5d40c5714252c6b1a547aea4b8ecdsnipe shield and airdrop reserve, right after CurveLaunched
BondingCurve.CurveBuyevent CurveBuy(address indexed buyer, address indexed recipient, uint256 quoteIn, uint256 tokensOut, uint256 fee, uint256 tax)0xec36bf571f136799e8dc0b0b8bea4b04d8bd3d43de838aab0d5fc21d4cbfc455a buy on the curve (emitted by the per-launch curve address)
BondingCurve.CurveSellevent CurveSell(address indexed seller, address indexed recipient, uint256 tokensIn, uint256 quoteOut, uint256 fee, uint256 tax)0x8113d738abdcb6b38357e9d53a54a7157861a09031b453651f0fe7fe151f59dfa sell on the curve
CurveFactory.Graduatedevent Graduated(address indexed token, bytes32 indexed poolId, uint256 indexed tokenId, address quote, uint256 quoteAmount, uint256 tokenAmount, uint256 tokensBurned, uint160 sqrtPriceX96)0xd4df01b899fd11e56dd1988cc7505f0cb8fcbf6e06af3a4d3ee20936f3529072the curve moved into its v4 pool: poolId, tokenId, quoteAmount, tokenAmount, sqrtPriceX96. This is the Completed signal.
CurveFactory.Abandonedevent Abandoned(address indexed token, address indexed venue, uint256 refundQuote, uint256 refundSupply)0x56189f752f9a4ea9b583fa556ef1d10e6993eaa22c72ade4f03c9a63c80a5fdethe curve stalled and switched to refunds: trading is closed

RulesLaunchFactoryV3 (kind pool). Direct launches of a coin with trading hooks built into the token. The supply is locked in a v4 pool the same way as a LaunchFactory launch.

PoolKey: currency0 = quote, currency1 = token, tickSpacing = 200, hooks = the factory's RulesGate. Read it with rulesFactoryV3.poolKeyOf(token).

Eventtopic0Use
RulesLaunchFactoryV3.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI)0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9the same shape and topic0 as LaunchFactory.Launched: filter by emitter address to tell them apart
RulesLaunchFactoryV3.RulesLaunchedevent RulesLaunched(address indexed token, (bool,bool,uint16,uint16,uint32,uint16,uint32,uint16) rules, (bytes32,uint32,address,uint256,uint32,uint32,uint32,uint16,uint32,uint16,uint32,uint8,uint32,uint8,bool,uint32,bool,uint32,uint32,bool,uint32,address,uint16,uint16,uint16,uint32) extra, (uint32,uint16,bool,uint32,uint16,uint32,uint16,uint64,uint16,address,uint32) ext3, bytes custom)0x8814196990c3901203cbc45a6454adf6deda7fb5cc6a78ca4dea727e49600395the coin's hooks, as set at launch

FeeStyleLaunchFactory (kind pool). Direct launches into a dynamic-fee pool whose hook sets each swap's LP fee.

PoolKey: currency0 = quote, currency1 = token, fee = 0x800000 (the v4 dynamic-fee flag), tickSpacing = 200, hooks = the FeeStyleHook. Read it with feeStyleFactory.poolKeyOf(token); the fee a swap pays now is feeStyleHook.quoteFee(key, params).

Eventtopic0Use
FeeStyleLaunchFactory.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI)0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9the same shape and topic0 as LaunchFactory.Launched, with lpFee = 0x800000
FeeStyleLaunchFactory.FeeStyleLaunchedevent FeeStyleLaunched(address indexed token, bytes32 indexed poolId, (uint24,uint24,uint32,uint24,uint24,uint32,uint24,uint16) style)0x5b492c33b9824503eda545b651c3b5b6ce6836c950a2792c1f6a95fa07246016the fee style (base fee, sniper decay, volatility and size terms)

CreatorFeeLaunchFactory (kind pool). Fee-style launches with creator-fee options fixed at launch: creators paid in the quote only, and/or a fee stream the current recipient can hand off. Its own locker (CreatorFeeLocker) emits the launch locker's fee events.

PoolKey: The same key as a FeeStyleLaunchFactory pool: currency0 = quote, currency1 = token, fee = 0x800000, tickSpacing = 200, hooks = the FeeStyleHook. Read it with creatorFeeFactory.poolKeyOf(token).

Eventtopic0Use
CreatorFeeLaunchFactory.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI)0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9the same shape and topic0 as LaunchFactory.Launched, with lpFee = 0x800000
CreatorFeeLaunchFactory.FeeStyleLaunchedevent FeeStyleLaunched(address indexed token, bytes32 indexed poolId, (uint24,uint24,uint32,uint24,uint24,uint32,uint24,uint16) style)0x5b492c33b9824503eda545b651c3b5b6ce6836c950a2792c1f6a95fa07246016the fee style (same topic0 as FeeStyleLaunchFactory's)
CreatorFeeLaunchFactory.CreatorFeeOptionsevent CreatorFeeOptions(address indexed token, uint256 indexed tokenId, bool quoteOnly, bool transferable)0xaf2513c666eb29ade040ea060cf9c320ad858cba2070421eba7c48659f30217equoteOnly and transferable, fixed forever at launch
CreatorFeeLocker.HandedOffevent HandedOff(uint256 indexed tokenId, address indexed from, address indexed by, (address,uint16)[] recipients)0x13391dca3ad6cec9e09e262a5d501e6f4523162ef29608ea183df13e1913c306a creator recipient's future fees moved (two steps, by that recipient); recipients is the full new list

PegLaunchFactory (kind pool). uPEG launches: every whole unit of the coin is a numbered object on an ERC-721 mirror, the supply locked 100% in a pool like a direct launch.

PoolKey: currency0 = quote, currency1 = token, tickSpacing = 200, hooks = the factory's gate. Read it with pegFactory.poolKeyOf(token).

Eventtopic0Use
PegLaunchFactory.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI)0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9the same shape and topic0 as LaunchFactory.Launched
PegLaunchFactory.PegLaunchedevent PegLaunched(address indexed token, address indexed mirror, uint256 objects, uint256 unit, string baseURI)0x1e440301214979a0c9c137b856311a367ea03f9fdc1d896ed6eb2f4382c74766the mirror, object count and unit
Tradestopic0Use
PoolManager (Uniswap v4).Swapevent Swap(bytes32 indexed id, address indexed sender, int128 amount0, int128 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick, uint24 fee)0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112fevery trade on a launch pool after it opens (topic1 = poolId). Curve trades before graduation are CurveBuy / CurveSell, not Swap.

Quote asset: the quote field of the launch event; the zero address is the chain's native coin. Amounts are raw integers in the quote's decimals; the launched token has 18. The full event catalogue, including fee and payout events, is on the Integration kit.

04

Terminal columns

New, Almost bonded, Completed. Curve coins have a real graduation; direct pools do not.

Curve coins (CurveFactory)

New from CurveLaunched. Almost bonded once progress reaches 80% (our suggestion; pick your own), where progress = raised / graduationThreshold and raised = getReserves().quoteReserve - phantomQuote on the curve contract (API: curve_raised / graduation_threshold). Completed on Graduated: it carries the v4 poolId, from then on trades are Swap events on that pool. After Abandoned the curve is refunding and trading is closed: drop it from the columns.

Direct pools (suggestion)

A direct, listing, hooks, fee-style or uPEG launch is a fully liquid locked pool from its first block. There is no curve and no graduation event. If your terminal needs a bonded column anyway, we suggest a market-cap milestone: Almost bonded from $28,000 FDV, Completed from $35,000 FDV (the FDV the site's standard Solana curve graduates at), New below. This is a proposal, not anything the contracts know; market cap equals FDV because the whole supply is in the pool or in wallets.

Multi-pair launches

One token, 2 to 4 pools, each with its own quote. The factory emits one Launched per pool with the same token, then MultiPairLaunched(token, poolIds). Show one launch with several pairs, and sum volume across them.

Solana

Every Solana launch is a curve: Completed when the DBC pool migrates to DAMM v2. Progress = quoteReserve / migrationThreshold on the pool account. Details in section 06.

Curve state from the APIShell · curl
# curve rows carry everything the column needs
curl -s "https://nasdegen.fun/api/launch/list?chain=base&sort=new&limit=200" \
  | jq '.launches[] | select(.kind == "curve") | {token, graduated, refunding, curve_raised, graduation_threshold, pool_id}'

Multi-pair launchesShell
# every pool of a multi-pair launch: one token, 2 to 4 pools
cast call <LaunchFactory> "poolsOf(address)" <token>

# the same from the API: one row per token, pools[] lists every pool id
curl -s "https://nasdegen.fun/api/launch/list?chain=base&sort=new&limit=50" | jq '.launches[] | {token, kind, pools: [.pools[].pool_id]}'

05

Fees and locked liquidity

Facts a terminal can show in a launch badge.

Fee split

Every trading fee is split by contract: 30% to the protocol's FeeRouter and 70% to the creator side (the beneficiaries named at launch, or the coin's holders through a RewardPool or a FeeVault module). The locker's Paid events name the actual recipients.

Locked liquidity

On every EVM launch the position is held by an ownerless locker with no withdraw, transfer or decrease function; only fees leave it. Graduated curve positions sit in the CurveLocker under the same rule. On Solana the config locks 100% of the migrated LP permanently.

06

Solana

Meteora Dynamic Bonding Curve (DBC), under a nasdegen partner config.

DBC programwhere every launch is created
dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN
DAMM v2 programwhere a curve migrates
cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG
Launch vault programrouted launches: pool creator = PDA ["launch", mint]
7wFFThJSfjDWXyWTztxfLrY5uuxAaSpGesiG1CA37oHA
Partner walletfeeClaimer and leftoverReceiver on every config
EfDn8an5ARYYwFkGjv2XrecZaPczoeiij4U8fQ9YcepP

Pre-funded partner configs

SOL9 decimals, quote So11111111111111111111111111111111111111112
7ehAFn91xgYPgwRBiQi6TAbPgrkJKB61XkiLGq3Kv5xR
AAPLx8 decimals, quote XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp
GbUeiVP77naQzV51aCtvMDbRmJXHE4jMTr5CXEfXm7dR
AMC6 decimals, quote AMC1qwR9KhiyrQBRPrxnfo4JfMeMZqEBvt5tgTytNNoc
9k6PzCLgUuxgKyW7D6yBNwZPczpnbH75yvLSVrBLmtwn
AMD6 decimals, quote AMD8XwJXgQ9WV45Wyj9yFLejxzf2J6VM1PJY8bJEjeES
A1B99ZbGJa4iHxsCUhtWbwUXgmGWhJQFqeBU2X2HKyNG
AMDx8 decimals, quote XsXcJ6GZ9kVnjqGsjBnktRcuwMBmvKWh8S93RefZ1rF
55QiJ8VmetkuqFHATyhP1q7L1bNyddauLxYjJzjMktd5
AMZNx8 decimals, quote Xs3eBt7uRfJX8QUs4suhyU8p2M6DoUDrJyWBa8LLZsg
5G1X77gmyT62gVp3CmkAiErrebxqKc3gqbX8T9iw6fiK
ARM6 decimals, quote ARMbSB1MBRQrY6PNMao1HdQ431VafC6JRJCsGZ2Yv3iJ
2wMudRfdEW9aBpkV52mJ2djoUaomMRyFQo1CSBaJGUpV
AVGOx8 decimals, quote XsgSaSvNSqLTtFuyWPBhK9196Xb9Bbdyjj4fH3cPJGo
HEV2NJv6ZXs72tH875iwj5E6d9525a7ooAtTgYsUGvBV
BA6 decimals, quote BArimz1PcKZr8PcPh3tcZ2dg4S7FJLk3cw6R5F8GsHKg
CeSt7PkwESa9G6RcNYCYXvtvTnMTVnJEih5THX3eM6bV
BABA6 decimals, quote BABANGA4JE7Kkam4nTrALAwAVgsNJUuFJnnkF7S16BZp
2jsSCEVWJmY5UHNU1ZCmeFh2QAjPaCorcm7GBMor4Wwv
BB6 decimals, quote BBosJLw8ZzoATiEyywiifx7AgmrD2Cm3XjFWbhbRhChy
BkFARHVyfUnGYXxK5Jr6fWFjxTR7rViC8MK55LDPTqJS
BOT6 decimals, quote BoTx8y9ynfdxf5ZjWtCoBVkff52qKA82ysaLU8ZM6d8T
4Wjvmeh1REFaGa2RUpgXzdwegJoazTNUfwp4ehbAHo4q
BRK.Bx8 decimals, quote Xs6B6zawENwAbWVi7w92rjazLuAr5Az59qgWKcNb45x
3ojza6fCRLKHdCWyLgU9wY5ZJagseYyVepTFCBhZszqw
BROS6 decimals, quote BRVaZKg6J9iF2BEsdpsxJ9NyvN9PPxPZuoQUX2v8qqkk
7rp6UVRxbGKVEEGy3ikYdZka3tw7HxUgtZpPd1FHus7g
BULL6 decimals, quote BULL151gUXcFV5wXEUqu9Am2L7Qt4bTJRLRuAUjkcspC
GCpuoTMAjmmuBgF1u8nUGgbHxRmi4gon9vfj7redX84A
COINx8 decimals, quote Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu
3AUiFgysyAzVdfFnhBi4qz7izdTWMvLVSSoH6p7AGCVW
COPX6 decimals, quote CzLTZppPdZtTjyq3WGpHLstoc3GLhu7zH5Zg6xUa6Gv5
5xZ5uX9fPh3Qu4ETvx6hhEpsWEKh5ZDvVqNuurDbVo5H
COST6 decimals, quote CZEB3WNZuF2Yz1z2H81RcCk8T7fsw82KB33zqamASVsg
ETmNGXBfDLNpRYPAwzMaEYEczoNYAc8PLP8AQ4v4x16X
CRCLx8 decimals, quote XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1
5YiKpChebtwkcWDzJJyPCN5vQHnGDj86qL37Hd1Ha38x
CRWV6 decimals, quote CRWVJeR2yEZuDUKYfGuKCHvLz8ywn4LGvovHfy5WiFmi
F5JY3nJ3gC2xXoxGhJTuPswgPUpvNb876jpGQkt5uwez
CYPH6 decimals, quote CYPHuMmCL1GxJWa2tsPhLKykC7GrHJTCHwbXD4g5uawK
9jtuCQUkTVw1incawhwvPuWW2nT9FLdZtkCUGNh45omt
DELL6 decimals, quote DELL2aRKQz7DMq5DrKLtkn47ZCnbxXPZXrSGbkmd13wy
HaehzbT1YwjQiDQHbBUqHHUxDmnRYjfNVmK29vpoJhtq
DFDVx8 decimals, quote Xs2yquAgsHByNzx68WJC55WHjHBvG9JsMB7CWjTLyPy
DGkdKVLWTY8EzoT52y8jAJ7HCk7fdXMGUBU2GHMdHsFq
DJT6 decimals, quote DJTu7vi8norVzdVAffgvb39VP7wjKeTsgaMBJrzfxvoF
HzMB4kMAHyvVsDRgLeYSEb5VEf1ycBFpdXditZ9LunrA
DKNG6 decimals, quote DKNGQFNGQmoBdXSRGKJ8tTu7uPDasw5JDcfMmWniNfow
EHvdAi4Nzn2RKTssRkFDzQ21J9TezBRfVhjytBZY8FHY
DNUT6 decimals, quote DNUTsCvKbKwu2RM72cUuW3TD9YpzArzACcqYQssjPLSk
66Ek5VkjUSFKhhUKracUdYMfhGCTJWBYUcRLAXvCpn2Y
DRAM6 decimals, quote DRAMjSWR7HRfJKjRkvQWYL2bcaejaVhuxEcjf4pAY4Cw
B8Hc4ab8hsD2ZTtTRJArBDtioUBqHXaggiizQSa5weHh
EWY6 decimals, quote EWY4owSJYMpwN33qGDu5gGxpkQkpMJu8ZUsQJaNZG5dv
CikZ18jhraeh8p4FUfsThnsDK4oTjbHn53d6ShnQzqYv
FLWS6 decimals, quote FLWSojG1gB5VStYR3Sb4nQFRt43UBYkqih1j2CpVLqgd
EWtawFwrHXw1SAZdYT6FL6Kca3m75zq7M4WtBZm1rzhC
FLY6 decimals, quote FLYRq3en8r2Z69gN3KyAnDrvnitEJNkwPYY7favinHeD
4v3feB6EeLa1kznKqaiZxJ8hgFXwvigVTfwtWLWPTTaJ
FWDI6 decimals, quote FWDtiB5fXHdVAewPqvHPL2dh4aBC1C6GacQbePoQXKjz
C1HpbizWjzs1K5NMcQ9jUbE3cqZkQCKFFC4Yf6FZnKJw
GLDx8 decimals, quote Xsv9hRk1z5ystj9MhnA7Lq4vjSsLwzL2nxrwmwtD3re
F8qQrVnW6JbVv9fTc2qngZkT1UujL89cDwsJRhTiSBvz
GMEx8 decimals, quote Xsf9mBktVB9BSU5kf4nHxPq5hCBJ2j2ui3ecFGxPRGc
3QuPipg9Tyhwgug3mMLCMcF6Qh5AJkPxzZQcr2gy5sPu
GOOGLx8 decimals, quote XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN
6xDretBvDiqrrQ1H15AU9jF67PcSvPEJ5i29uVMewf7n
GPRO6 decimals, quote GPRR2u6NS5yBQHWGauoJ9HXgjrTH8dDsrBfTV5zAYvDH
7JeFYCksszFtt1puuh5XF5PhWKf1StAo8yBxno5gSPGo
GRND6 decimals, quote GRNDYDpqwpCm6jVxpbh4xT5AM4r3p391qYsKTHqgaET2
2athFeFh9U1cw3VNyp5WX2HZoohJyDwmmy9Em2oqMsRe
HIMS6 decimals, quote HiMSSzzwkZkrXJ4PGVJRdtfLaANeAztjjcgk5Dxe7Lwx
8zE6mTU4vE9yGtUWanwEdAxfdAoTMUxjS8UVryt4erHw
HOOD6 decimals, quote HooDYv5RewLRiMLnEVq3VJqdqxhuE6c5eYvqejMC3e9A
7jqVkk3EkeB9Ub5ajKrm7CDBm7zfQCzf61RvKLgof817
HOODx8 decimals, quote XsvNBAYkrDRNhA7wPHQfX3ZUXZyZLdnCQDfHZ56bzpg
6J3PheKzqkhfjgmmrdaXgQdcnbYaaKmjmrKAhuSiyJG7
HTZ6 decimals, quote HTZsLG4zqaNvWMwXSLHH3GG5KyJpKwpBRsKVdMG6hvzP
8xPqTxTTqz4FqTvjNkmtVn5vDwrWakXFHGH78GPtzH8n
IBM6 decimals, quote BMKdM4yUxX12moFqVk195k7coMbaybd4RUKCUdm7D1Sk
AG6FykvzS6MuFyYhydGgMCiHzXaJeAC6JZoNaisWhjUo
INTC6 decimals, quote iNTCy1qTsUEZQe3DSocLz1ZXXai34Gdw8THQh5rxFaF
8doiZF8cFn6HVhN9PwMxo4EVFBJU5kzkC6apZHrwY4EZ
INTCx8 decimals, quote XshPgPdXFRWB8tP1j82rebb2Q9rPgGX37RuqzohmArM
9CGUjGZNZbPzkHy97C7MsXXt2kDMFvDKov9pHZKMLKTe
IONQ6 decimals, quote NQ5hSuXQZrbnrwcDVk2qN73njjd3E3v3badYHnj5thF
9KndMDPnUj7quVLB5Hycqswgi8aMRD6yzD9jMC24qrg4
IREN6 decimals, quote RENzhrJQgmAnfcLhU1U5XwAMc6TC15UA6jCbPBaasnj
myvHkPZugtkeYzNpYubJiuk8b9TNYjCz7zhGSyGMJo4
JNJ6 decimals, quote JNJg1znKdF712Phe7L7z52AATAvEjEytBdN2w8Lnh1Y
ALwZFbfbC4tAbQGykLWqmzEFQ9dteyqoXUt93DjmnM28
KOx8 decimals, quote XsaBXg8dU5cPM6ehmVctMkVqoiRG2ZjMo1cyBJ3AykQ
A8TXHBkWwa4j9Y88jY6mu39jDErK9NzduBVhQTVFHSuH
LLY6 decimals, quote LLYuwZ33keFihgwoxXsBawy31AiRFLFSva32TYq5TvD
5bsdUVixUbai3eAm9owtfvviHk4cqZ1RdELtFr4J4BHB
LMT6 decimals, quote LMT3i1BHgixFqPUgcyteJhnEz2dpy9i3cYy4pi9BoeV
3sz4474VdJUygp8nVTAqbRCAR2YefBp41k9j1G5M66Z6
LULU6 decimals, quote LULUmT9VMttkfAJE236LXJcYJ2tTP7nunrSWR5G1BdS
AQotLToEtksnV7kCnbybYj1FrJMuEteqZjJFGVg61d28
LUV6 decimals, quote LUV9GB51PNZNRyzzyYK3rtqFfvDvWtRiXZ34wVq2HrX
DkoXXkkcV68DwL7Q36NsK74CgvFdQu7ZHd1FSsqki4mC
MCDx8 decimals, quote XsqE9cRRpzxcGKDXj1BJ7Xmg4GRhZoyY1KpmGSxAWT2
D3kmQn4pDUvaXpVB5cRjv8uT6bMYcGUVNycLBK3djNnv
METAx8 decimals, quote Xsa62P5mvPszXL1krVUnU5ar38bBSVcWAB6fmPCo5Zu
Fub35Nj5PCbF5QAwyTcxPAhAvHwTsESVcfrxomsjVLiW
MGM6 decimals, quote MGMuubtUEirmkhfEQdmGUh4pr7HuUdMWcZXFtpPbVJD
8L1YqrvgpStidxBsxWftYdkZs49fxrkmLxexYk7tXbWD
MRNA6 decimals, quote MRNAzXzhNcaEXJPibHEn8cd4vyekCDiivTyEwswLUCT
4833HFRRLTpaqYj8gL6911i938t6TWESVZJx1H5Au9eb
MRVL6 decimals, quote MRVLSjkR2ceUBukujaD3xCyHP1H3B2SzpsNTZF546jo
ExhHscTrtGfxmQiZzFZ5CrbNJxEgZ9QMxwnfDvYPNC32
MSFTx8 decimals, quote XspzcW1PRtgf6Wj92HCiZdjzKCyFekVD8P5Ueh3dRMX
EHtYWMhUyd98BcPgafDTk97BP6rYCnqhnPZXhCK1DjFs
MSTR6 decimals, quote MSTRdWXMeZxdE8osAQy3fA4rvTY5rgummDSMEx6U7Nz
136CYfjkSkVFoo6tgjnrryVdBxdiNtmAmcJtQesqmG3D
MSTRx8 decimals, quote XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ
BNus5twQyFPFsVeX9PCjzhUYUZexSoqUvBMRXmnt5v2m
MU6 decimals, quote MUxEsUKSMACyw5fZf68wxf5FLnZVhtU9CwH8uNNGay1
F6ihMTXZAHStZ4CRLteRiAp89JRAc2GBKynFzLbQ5gSV
NBIS6 decimals, quote NBiSF3UaVUFtRzHwAfxyHsBCAZWGEKnMpewAE4oh7BG
6VvQHDJU1gHJC2JaFqvHYACEihjCZU8S8UCBr3e8xkar
NKE6 decimals, quote NKEda5nHhNGgjrE9nDdMvaEmkmJ96qqxzBVZEcKmjSg
GqPqi31os5XXf5f7KHVFHc1FStwGXDd7L4UgVkye2zc1
NOK6 decimals, quote N7Q5fYX7YRnDQksfdBKnoUb3awm92n7QNAD35X3Rq1X
CLWiX9ES1995MHEsKcpQkju8tgkTjvA5jWf1xBKroWS
NVDAx8 decimals, quote Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh
Dz3apfCkKpj1efqyARtBuDSy8d1rvkcTUhPFaaTeri98
PFE6 decimals, quote PFER6ENqP8r8NF3CqVt4mFowxsin3V5MLidBNQFCC3x
8RKjU5b3kGtwkFJHAkoLRt5A41re3DT3w7BaGWy1CT2u
PLTRx8 decimals, quote XsoBhf2ufR8fTyNSjqfU71DYGaE6Z3SUGAidpzriAA4
EAsDrnvAANuNQyL1bxmSQ2x65UqtW6UqD3iWd7PsY8bY
PTN6 decimals, quote PTNzAfFAB4LvoUQEUUGrFMyUoRLExMYjH6CcfyQfsVP
E8S8yRCrLFk9RQUtzKbYzAJHu9n4t7CLCdWDKfJhd216
QQQx8 decimals, quote Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ
6TDxvF6AbfSo79sCiFSvR51JBvGzELJgVF2mHm1ttvNh
QUBT6 decimals, quote QUBTAD8C9bMU9LvmMNgKPhrmBGbHvxpu6vfWQtThxxw
349SaZU59TzgGcNoLQtPrv2VaiuXevQtvkCokcSoYkDZ
RBLX6 decimals, quote RBLXDGRD64AtRamHMFVcjqne3Ar7NLWtFtYNtsrf1cE
Aw5LkR4SQCHyNNX3JfmJDLeeQf9TrqjW6z5uj8rAbueQ
RDDT6 decimals, quote RDDTGbhHwVXfyCvQMXzzowKjf5qrYBZAnehoXW83ooh
37yqc5YTeKv14YZyKR9EP2usA9exusfiEsbzNZbWSMqk
RIVN6 decimals, quote RcZmt84VMJv9bDhKqmw1uWDahYrUT468VwAChTnfD8p
B2okNmG8tcbwTv3SLfND1JdUs1ddi5aXArxKCDfx2K4y
RUM6 decimals, quote RUMsPfFZFnN1ZmGANwP7FNMJMjKH4m9RiMePrtVtLe7
ERfXv2WtQvb1ty8TJTX9R6vD3LrcHB37TH428rKzmfZg
SCHH6 decimals, quote SCHHJ3jRdSjeFEVAaLrnYdx3Brphn92Ys7z1qkiCtPX
FN9BJH59qW2W2rXyKqKLe3mKPnh68DtEgWt748Bo5QwG
SHOP6 decimals, quote SH55hfaipFAbwT42nQYhRoM5o5t61QpkmJ6p62vXB3m
AHn9BkkQZQ724EVw83MQNWncG4HCvastZJ3umYqJZenS
SKHY6 decimals, quote SKHYhSjuRWHgikq8eRKbtBbpABgJSkd7ytQV14i9EQ3
BbXZSpmz48xocM1kp75gA5HUeFazLR8DK3W9woZqkTHx
SNAP6 decimals, quote SNAPcESrvnH8yUdgeMF6xm1hym9b6hW6s8YeqeHdZFz
BSDBjwrFxM82oeV9wBP9MREGincXPiUXpuw5rpcRYsJ6
SNDK6 decimals, quote SNDKbwMUQvZhnLnxLduradgLHG5KrPuKwpnrkkGRhfH
Ay78yCwnDM75WHWToaf9Xx7ortpovHRWZ2ES5w4rYzvz
SPCX6 decimals, quote SPCXxcqXj6e5dJDVNovHN8744zkbhM2bYudU45BimGb
CpGQYMbcow7Dd5i1awDZbR2EuXhezpsgeEryqhkQAm1r
SPCXx8 decimals, quote Xs3oZwbHvqis4NYcf4YKWmEia2eC84wSiVrcYcTqpH8
AnyGYjN4PzfgjZL3VXwTJ6My5ku579HmziZdeLrKxLd7
SPHR6 decimals, quote SPHRp8cZaSQBTp1KMNP4V1X821SXhXWt4Q2yLdyHzju
J84ssxaVWmzTMocZ5gaxbzmie4unKQnxCRqSdRSQSxGW
SPYx8 decimals, quote XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W
FCTbM2qGiKuygXeXDtc5YSKae3Ai53whSVPENyurRyWj
SQQQ6 decimals, quote SQQQAa3gUxgnqcEsdjPA4RQNQBgB97TnG2hJhk2WaGE
D24td9UxL5sFWATYKPCfbnqZ4MwLhYs6zmgtKHSg9RTn
STRCx8 decimals, quote Xs78JED6PFZxWc2wCEPspZW9kL3Se5J7L5TChKgsidH
6imhjgtzTfTmnEUwrGdxVyfhf3SezLozHTgciURRuBfh
TQQQx8 decimals, quote XsjQP3iMAaQ3kQScQKthQpx9ALRbjKAjQtHg6TFomoc
14ngBeyZFt4mwjXhwWXQqFqByT7CeGfcfqZuYNnWyaRx
TSLAx8 decimals, quote XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB
9DgKyzWS2uDTJRh4bsYtp8hPTjyVwh31bTF2AiPYAFyg
TSMx8 decimals, quote XsafvsGtzFqqHgTnA3aPC83EAMkacU5mcGtcSayhpVV
96ix9VkYsXxYTWfJYLn1pJqgEiMmCmyjUb6oCYZ2H7Pf
TTWO6 decimals, quote TTWofwAge91oFhZs7kpQdyrVRkmevgM88xijGvQFbKo
GER69ZiJ87VutENtm1mcYUeHZa5ZzSQ1naMZP6KKP4TT
UPS6 decimals, quote UPSqUeMHcWbkdg784XuBUEF9DtySSnW9ur5LAVdcuB9
7qsgRQtEZo8h1Z4C1Em6zbq5z5bPfk3SKhbLjC4U7qon
URA6 decimals, quote URARfsinxCRw4JpvQhuT4CxavdZXZEMjv9ZwWmWpwag
CNqwYn6sW6FapP8yRrsc8oExSu4KYreWSJxbHqwq4dsM
USO6 decimals, quote USNv3NkKA27Dh4nsHJDPhW4VoEcTQmjoZyJt2dqdwFu
9YmgwTFzARFuUqyntwJwLJhrRUwbPRYi3Gb6oGjvGEup
WEN6 decimals, quote WENAZ2WyPbmgvUcKfQ8hyMDfBQP9bZ65hsZ5KTFrRGZ
CMAKHkYchgDKoGhEAj1cU3BPuYTKc2FX6vkzDmnJpVJK
WULF6 decimals, quote WULFeyfrj1VJKD9HhRTcW8R4g5HefUA11HDEdBv2WxD
DgX9qaxVmu4LnsaAMazxwZtqNuM5qeC4Gvi5nfVq4WV
ZEC8 decimals, quote A7bdiYdS5GjqGFtxf17ppRHtDKPkkRqbKtR27dxvQXaS
E25nGnQeRSE1eXvQmnF1DXAHeJXFvX67hEmUV3qvHqzH

Recognise a launch. A DBC pool is a nasdegen.fun launch when its config account names the partner wallet as feeClaimer (and as leftoverReceiver). The configs listed here are the pre-funded ones; a coin paired with any other quote gets its own config, created by the launcher at launch time with the same partner wallet, so match on the config's feeClaimer rather than on this list alone.

Creator. The pool's creator field is the launcher's wallet, or, for a launch routed through the launch vault program, that program's PDA ["launch", mint]. In both cases the launcher is the fee payer of the launch transaction.

Graduation. When a curve reaches its migration threshold the pool migrates to a Meteora DAMM v2 pool (the config's migration option is MET_DAMM_V2) and the LP is permanently locked. Progress = quoteReserve / migrationThreshold from the DBC pool account. The "Hooks forever" curve size is built never to graduate: keep it in its curve column.

Fees. Of the trading fee left after Meteora's own share, the creator side gets 70% and the partner 30%, the same split as on the EVM chains.

Metadata. The mint's Metaplex uri points at /api/launch/solana/meta/<mint> on this site (name, symbol, description, image, external_url, website, twitter, telegram, tweet, extensions).

07

Finality and reorgs

What the site itself does, so your numbers can match ours.

EVM

The site's own indexer stays 10 blocks behind the head (never fewer than 3) and re-checks the block hashes it has stored; a block whose hash changed is dropped and its launches rebuilt from the canonical chain. Show head-of-chain launches if you want speed, but key them by (chain, token) and be ready to drop them when their block is replaced.

Solana

The site's Solana reader (solana/trades.mjs) reads signatures and transactions at finalized, about 13 s behind confirmed, after an audit found confirmed trades that were later forked out. Use confirmed for a fast first display if you like, and finalized for anything that ranks, pays or is stored for good. A signature missing from finalized history (getSignatureStatuses with searchTransactionHistory) is dropped.

08

Metadata and public APIs

Off-chain, on this domain, no API key.

EVM: the metadataURI in Launched, CurveLaunched and Listed is https://nasdegen.fun/api/launch/meta/<launcher>/<key>; /api/launch/meta/<token>?chain= answers the same JSON by token address. Solana: the mint's uri is https://nasdegen.fun/api/launch/solana/meta/<mint>. EVM fields: name, symbol, description, image, external_url, x; Solana answers the Metaplex shape (name, symbol, description, image, external_url). Logos uploaded here are 512 x 512 WebP files at an immutable URL; list and feed rows carry the same image_url. The creator can edit metadata, so cache it for minutes, not forever.

Public reads a terminal can pollPer-IP limit
GET
/api/launch/list

90 requests per minute per IP, then 429.

cache: public, s-maxage=2, stale-while-revalidate=10
GET
/api/launch/live

120 requests per minute per IP, then 429.

cache: public, s-maxage=2, stale-while-revalidate=10
GET
/api/launch/search

60 requests per minute per IP, then 429.

cache: public, s-maxage=5, stale-while-revalidate=30
GET
/api/launch/candles

60 requests per minute per IP, then 429.

cache: public, s-maxage=5, stale-while-revalidate=30
GET
/api/launch/feed

No per-IP limit. Cache as the header says.

cache: public, s-maxage=2, stale-while-revalidate=10
GET
/api/launch/meta/{token}

No per-IP limit. Cache as the header says.

cache: public, max-age=300
GET
/api/launch/solana/meta/{mint}

No per-IP limit. Cache as the header says.

cache: public, max-age=300
GET
/api/stream

6 requests per minute per IP, then 429.

cache: no-store (opens per minute; one connection lasts about 290 s)
GET
/api/integrate/kit.json

No per-IP limit. Cache as the header says.

cache: public, s-maxage=60, stale-while-revalidate=300

Unknown query parameters on the cached endpoints are refused with 400. When the database is busy a read answers 503 with retry-after: keep your last data and retry. For anything real-time use the stream instead of polling. Every endpoint, with parameters: /api/openapi.json.

09

Tag us

A request, if your terminal shows launchpads.

If you label launches by launchpad, we would ask that launches from the sources above show nasdegen.fun, with our logo (/brand/mark-512.png, or /brand/mark.svg) and a link to https://nasdegen.fun. If you show a one-line description, ours is "the most customizable launchpad". More logo sizes are on the Integration kit.

Questions, corrections or a missing field: tell us.@nasdegen on X