woopwoop

Accounts

woop_core's accounts for a coin: layouts, addresses and how to find them.

Every account starts with Anchor's 8-byte discriminator. Integers are little-endian. The full layouts are in the interface file; the SDK decodes them all.

Addresses

AccountSeeds (program E9bG…ag39z)
Curve (the coin's market, then its pool)["curve", mint]
CurveConfig (fees, windows; one)["curve_config"]
Creator lock["curve_lock", mint]
Position (a wallet in a coin)["curve_pos", mint, wallet]
Order (a wallet's Fair Block order)["curve_order", mint, wallet]
ExitOrder (an Exit Queue order)["curve_exit", mint, wallet, [slot]]
QuotePrice (a pair token's USD price)["curve_price", quote_mint]

Token accounts are associated token accounts. Coins always use Token-2022; the pair token uses its own program (Curve.quote_token_program):

VaultOwnerToken
Coin vault (the curve's coins, then the pool's)the Curvecoin, Token-2022
Quote vault (the curve's pair token, then the pool's)the Curvepair token
Lock vault (the creator's locked coins)the creator lockcoin, Token-2022

Finding coins

ts
// every woop coin: one call
const curves = await connection.getProgramAccounts(WOOP_PROGRAM_ID, {
  filters: [{ memcmp: { offset: 0, bytes: bs58.encode(Buffer.from([191, 180, 249, 66, 180, 71, 51, 182])) } }],
});

New coins appear as a CurveLaunched event (see indexing) and as a new Curve account.

Curve

408 bytes. The fields a trading screen needs:

OffsetFieldType
8mintpubkeyThe coin
40creatorpubkey
72quote_mintpubkeyThe pair token
104quote_token_programpubkeyToken or Token-2022
136statusu80 created, 1 trading, 2 sold out, 3 graduated, 4 refund
137v0u64Virtual quote the curve opens with
145reserveu64Real quote in the curve (after graduation: the pool's quote)
153owedu64The creator's launch advance still owed (priced like reserve)
161advanceu64
169soldu64Coins sold off the curve (raw, 6 decimals)
177creator_lockedu64The creator's locked coins
233launched_ati64
243block_idu64The current Fair Block
251block_openboolA Fair Block is collecting orders: instant trades pause
252block_closes_ati64
344pool_baseu64After graduation: the pool's coins
352graduated_ati64
388refund_ati64Refunds start then, if it hasn't graduated
396opening_endsi64End of the 60 s fair opening

The rest (fees owed, the open block's totals, the creator's vesting) is in the interface file.

Price and market cap

On the curve (status 1), in raw units (pair token's smallest unit per raw coin):

text
price = (v0 + reserve + owed) / (1_111_111_111_111_111 − sold)

After graduation (status 3) it's the pool's ratio: price = reserve / pool_base.

Multiply by 10^(6 − pair decimals) for whole units, and by 1,000,000,000 for the market cap in the pair token. The curve sells out at 760,000,000 coins (sold = 760_000_000_000_000). Every coin opens at the same USD market cap and graduates at about ten times it.

Metadata

The name, ticker and metadata URI are on the mint (Token-2022 metadata pointer and token metadata extensions). The URI's JSON has image, description, and extensions with website, twitter, telegram and banner.