Stoke

Stoke v1 for terminals

Programs, the pool API, pricing, events and trading: everything to list Stoke v1 coins.

Stoke v1 is Stoke's pool: a Uniswap v4-style hooked pool on Solana. Every coin launches on a bonding curve with virtual liquidity and graduates, inside the buy that completes it, into its own pool with locked liquidity. This page is everything a terminal or aggregator needs to list Stoke v1 coins and let its users trade them.

Programs

WhatAddress
PoolManager (pools, swaps, vaults)3EK8eA2473durhf2oKJzYk827GN56DHEZRMnSbuuBngm
Launch hook (curve, fees, graduation)CAcC7pz43rLg14jAE8iR3w3sgXcd2GGtoeFWUBB1SGVq
Coin token programToken-2022 (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb), 6 decimals, metadata extension
QuoteWrapped SOL (So11111111111111111111111111111111111111112)

Pool API

Public, read-only JSON, CORS open, refreshed every few seconds. The full reference is the open API; for listing pools you need:

  • GET https://usestoke.xyz/api/v1/pools: every pool: mint, name, symbol, icon, creator, the launch and pool accounts, status (curve or graduated), price in SOL and USD, market cap, fee and its split, liquidity, curve progress, volume and links (the coin's page, its own website and socials, and Solscan for each account).
  • GET https://usestoke.xyz/api/v1/pools/{mint}: one pool, read fresh, with its fee zones.
  • GET https://usestoke.xyz/api/v1/pools/{mint}/trades, /holders and /quote?side=buy&amount=0.5: its trades, holders, and a quote computed exactly as the programs do.

Liquidity is reported the way it works: on the curve, virtualSol (built-in depth that sets the price from the first trade, 240 SOL) plus realSol (buyers' SOL the curve holds and pays sellers from); after graduation, lockedSol and lockedTokens in the pool, which can never be removed.

Trading

POST https://usestoke.xyz/api/v1/pools/{mint}/trade (also at /api/trade/{mint}) builds an unsigned transaction for any wallet, against the curve or the pool, whichever the coin is on. Body: { "side": "buy", "wallet": "<pubkey>", "sol": 0.5, "slippageBps": 300 } or { "side": "sell", "wallet": "<pubkey>", "pct": 100, "slippageBps": 300 }. It returns { "txs": [{ "label", "tx" }] }: base64 versioned transactions for the wallet to sign and send, in order. Each is simulated first.

To build swaps yourself, call the PoolManager's swap on the coin's pool with the launch hook's accounts appended, exactly as the hook publishes them for the pool (PDA ["hook-accounts", pool] under the launch hook: an 8-byte magic, a count, then pubkey + writable flag each). Coins with fee zones publish a third account, their zones account (writable); swaps without it fail. Every trade, from any app, runs through the hook, so fees and rules always apply.

Pricing

On the curve

Constant product on the launch account's virtual reserves: k = virtual_quote × virtual_token, price = virtual_quote / virtual_token SOL per raw token. A buy of x lamports pays the fee first (x × fee_bps / 10,000), then receives virtual_token − ⌈k / (virtual_quote + x − fee)⌉ tokens. Every coin opens at about 206 SOL of market cap and graduates when the curve has raised 400 SOL (about 1,467 SOL of market cap).

After graduation

A v4-style concentrated-liquidity pool (full-range liquidity plus a buy-side floor position, both owned by the hook). Price comes from the pool's sqrt_price (Q64.64). The pool's own LP fee is 0; the coin's fee is taken by the hook in SOL.

Rules every trade follows

RuleDetail
FeeSet per coin by its creator at launch, 0.25%–2.5% of the SOL side; 30% creator, 30% holders (paid hourly), 40% the coin's reserves (real SOL in the curve, then the locked pool). No protocol share.
Anti-snipeBuys in the coin's first 3 slots (about a second) pay 90%; those tokens are burned. The creator's launch buy is exempt. Sells are never taxed.
Locked liquidityEvery position belongs to the hook, which has no instruction to remove one.
Creator sellsFee-free up to what the creator bought at launch.
Coin hooks (optional, per coin)A program the creator added at launch, called before every trade: it can refuse the trade or set its fee, up to 10% (with a fee zone, a sell pays the higher). Its three accounts are in the pool's published hook accounts: pass them like the rest. `hook: true` in the pool API marks these coins, and quotes include the hook.
Fee zones (optional, per coin)Market cap bands where sells pay a higher fee, up to 10%: a sell pays the highest zone fee its price passes through (start to end). Off for good once the coin holds above its top zone for 5 minutes. While on, exact-output sells are refused. `feeZones: true` in the pool API marks these coins.

Events

Anchor events in program logs (Program data:, base64; the first 8 bytes are sha256("event:Name")):

EventWhenFields
LaunchedA coin launcheslaunch, mint, creator, pool, raise_target, snipe_fee_bps, snipe_slots, launch_fee, fee_bps
CurveTradeEvery curve trademint, trader, is_buy, quote, tokens, fee, snipe, burned, virtual_quote, virtual_token, real_quote, real_token
GraduatedThe buy that completes the curvemint, pool, liquidity, quote, tokens
PoolFeeEvery trade after graduationmint, trader, is_buy, fee (the PoolManager's swap event carries the amounts)
HolderRewardsWithdrawnHourly holder payoutsmint, amount
FeeZonesSetA coin launches with fee zonesmint, zones (from_mcap, to_mcap in lamports of SOL market cap, sell_fee_bps)
FeeZonesOffA coin's zones switch off for goodmint, mcap
Listing Stoke v1, or need something else (an SDK, test coins)? Message @use_stoke on X.