What you are actually trading
Every commas token is priced against a collectible, not against SOL or a dollar peg. One million tokens represent one unit of that collectible: one PSA 10 card, or one floor NFT of a collection. A worked example:- A market is listed for PSA 10 Umbreon VMAX Alt Art. The card trades around $2,100 in the real world, so one full unit of tokens is worth about $2,100 of exposure, and each individual token about $0.0021.
- The card’s real price doubles over the next year. The token’s index doubles with it, and funding plus hedger arbitrage drag the token’s market price along. Your exposure doubled without you ever buying, grading, storing, or insuring a card.
- The card slumps 30 percent instead. Your token exposure slumps with it. This is price exposure in both directions, not a bet that only pays up.
1. Listing
A market is created for one collectible underlying: a specific card+grade (for example, PSA 10 of a given card), a basket of cards, or an NFT collection’s floor. Every launch gets its own market and its own token: the market’s identifier is unique per launch, so the same collectible can be launched against any number of times, each launch with its own curve, supply, and creator. The program-levelcreate_market is admin-gated in v1 and submitted by the launchpad service on the creator’s behalf, with listing criteria (sale frequency, depth, population) enforced at listing time. Creation initializes the market account, the synth mint (full supply preminted across the curve allocation, hedge reserve, and item reserve, mint authority revoked in the same transaction), a program-controlled SOL vault, and an AMM pool token account. See Listing a market.
2. The index goes live
The market’s price feed goes live: a signed relayer service that reads the collectible’s real prices from marketplaces (eBay and TCGplayer aggregates, Collector Crypt, Magic Eden), filters manipulation, and writes the result on chain as index observations, the price of one unit of the collectible in lamports. On chain, pushes are rate-limited, smoothed into a time-weighted EMA (the index TWAP), and checked against a circuit breaker that freezes the market if an observation deviates too far from the TWAP. How the price is estimated off chain is covered in Oracle & Relayer.Both halves are implemented in v1: the on-chain push, TWAP, breaker, and staleness guard, and the off-chain price feed (the relayer) that estimates and pushes prices (production card-price API sources are still pending).
3. Launch phase: the bonding curve


Two doors in, two doors out: the SOL legs pay the fee, the real item legs pay nothing.
4. Graduation
When the curve has raised its SOL target, the market auto-migrates:graduate is permissionless and the indexer keeper cranks it within seconds of the target being crossed, so no one has to press a button:
1
Insurance fund seeded
A configured share of the raised SOL can seed the market’s insurance fund; the launch convention sets it to zero so the full 100 SOL raise lands in the pool.
2
AMM seeded
The rest becomes the real SOL reserve of an internal constant-product AMM, paired against unsold curve-allocation synth at the curve’s closing price; the remaining unsold excess burns, so supply only shrinks after launch.
3
Market goes live
Status flips to Live. The mark price EMA initializes from the AMM spot, and the funding clock starts.

