Docs

How a Waggle coin works.

Everything below is pump.fun’s, Jupiter’s or Solana’s. Waggle is a website that builds transactions for programs already on chain, and a list it reads back from the chain.

Quoted in a stock

pump.fun’s bonding-curve program accepts a short list of quote mints besides SOL: USDC and a set of tokenized stocks (xStocks) it admits through its QuoteControl account. A coin created with create_v2 and quote_mint = NVDAx trades against NVDAx on its curve, and every fee the curve charges — pump.fun’s and the creator’s — is charged in NVDAx. Waggle lists exactly the stocks pump.fun’s program accepts today: 22, read from the program by tools/scan-stocks.mjs.

When the curve sells out, pump.fun migrates the coin to its AMM, PumpSwap, still quoted in the stock. The creator fee continues there, and the payment below sweeps it in.

The crew is locked

pump.fun’s fee program (pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ) lets a coin’s creator move its creator fee into a sharing config: up to ten wallets with shares in basis points that add to 10,000. Waggle’s launch does it in the transaction right after the create:

  1. create_fee_sharing_config — the curve’s creator becomes the sharing config, so no single wallet can collect the fee;
  2. update_fee_shares_v2 — sets the crew and sets admin_revoked = true in the same instruction. It can never be called again.

Waggle allows up to 8 wallets, not ten: a payment names every wallet and its stock account, and the fork run measured that a ten-wallet payment cannot fit in one Solana transaction (1,232 bytes), so a crew of ten could never be paid. Eight fits, at 1,180 bytes.

pump.fun keeps one power over every coin on its platform: its community-takeover (CTO) process, run by pump.fun, can reassign a coin’s creator fees. That is pump.fun’s rule, not ours, and Waggle cannot change it.

Anyone pays the crew

Creator fees accumulate in pump.fun’s creator vault for the sharing config (and, after graduation, in PumpSwap’s). distribute_creator_fees_v2 is permissionless: whoever sends it pays the network fee, and every crew wallet receives vault × share ÷ 10,000 of the stock, its token account created on the spot if it has none. Waggle’s “Pay the crew” button sends exactly that, plus the sweeps pump.fun requires first.

What a launch signs

  1. Swap SOL for the stock (only if your first buy is paid in SOL) — a Jupiter transaction.
  2. Create the coin — create_v2 with the stock as quote and your creator fee; the creator vault’s stock account; and a 0-lamport transfer to Waggle’s registry address 23kBxmfSdCqAkr2izQE9rDUHqVFWr1krQ2BTguyJRc4i, a system-program address nobody holds a key to. That mark is how the coin list finds Waggle coins.
  3. Lock the crew — the two fee-program instructions above.
  4. Your first buy — buy_exact_quote_in_v3, after the lock, so its creator fee already goes to the crew.

All of them are signed in one wallet prompt and sent in that order, each confirmed before the next. Measured on a copy of mainnet: Create the coin 1132 B, 187263 CU; Lock the crew 991 B, 176517 CU; First buy 797 B, 117260 CU.

Buying and selling

Paying in the stock is one buy_exact_quote_in_v3. Paying in SOL is two transactions: Jupiter swaps SOL into the stock, and the buy spends exactly the swap’s guaranteed minimum, so it can never run short; anything the swap delivers above that stays in your wallet as stock. Selling is one sell_v3, plus a Jupiter swap of the sale’s guaranteed minimum back to SOL if you ask for SOL. Every buy and sell carries a floor: 3% under the curve’s own quote.

How it was tested

Every property runs against a private copy of Solana mainnet (surfpool, forking live state through a rotating relay of public nodes): the real pump.fun programs, the real xStock mints, real Jupiter routes. The transactions are built by the same module, through the same bundle, the browser runs; every expected number is computed in the test from the rule it claims, never by asking the module under test.

The last run: 7/7 properties and 100 checks passed on a fork of mainnet (05 Nov 2026). And in a real browser: headless Chrome drove these pages with a test wallet against the same kind of fork — 6/6 journeys, 27 checks, each outcome read back from the chain by the harness (05 Nov 2026).

#PropertyChecks
P1A launch makes a pump.fun coin quoted in the stock, locks the crew before the first buy, and the registry lists it
launch transactions: Create the coin 1132 B, 187263 CU; Lock the crew 991 B, 176517 CU; First buy 797 B, 117260 CU
a launch cost the launcher 0.0241 SOL in rent and fees (first buy paid in the stock)
16
P2The crew rules are pump.fun's, checked before signing; once locked, nobody — the launcher included — can change them14
P3Buying and selling in the stock spends exactly what was asked and never delivers less than the floor
a 7.5 NVDAx buy and a sale on a 3% coin: buy 75358 CU, sell 90338 CU
23
P4Anyone can pay the crew, and each wallet gets exactly its share of what was waiting, in the stock
pay the crew (3 wallets): 850 B, 161338 CU
1.069076 NVDAx paid to a 50/30/20 crew as 0.534538 / 0.320723 / 0.213815
16
P5Paying in SOL: Jupiter swaps into the stock and the buy spends exactly the swap's guaranteed minimum; selling back to SOL works too
0.25 SOL → 0.063291 TSLAx (guaranteed) via Meteora DLMM > Raydium CLMM > Meteora DLMM → 7568005039452 tokens
10
P6The largest crew fits: an eight-wallet lock and payment each fit one transaction, at pump.fun's highest fee
8-wallet crew: lock 1162 B, pay 1180 B / 372142 CU
6
P7After graduation: a sold-out curve migrates to PumpSwap, trades there in the stock, and a crew of eight is still paid exactly
the NVDAx curve completed with 46.86 NVDAx in it
graduated 8-wallet payment: Sweep the fees into the vault 898 B then Pay the crew 1092 B; 0.827660 NVDAx paid
15

One boundary of the fork: the proprietary market makers Jupiter often routes through (GoonFi, HumidiFi, Tessera…) quote from prices their operators push every slot, which a fork cannot replay — so the fork run restricts Jupiter to on-chain AMMs. The live site uses every route.

Addresses

pump.fun bonding curve6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
pump.fun fee sharingpfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
PumpSwap (pump.fun AMM)pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA
Token-2022 (coins and xStocks)TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
Jupiter (SOL ⇄ stock)JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4
Waggle registry (no key)23kBxmfSdCqAkr2izQE9rDUHqVFWr1krQ2BTguyJRc4i

Risks, plainly

  • Memecoins usually go to zero. A crew is paid only while people trade.
  • xStocks are issued by Backed and track listed shares; they can fall, and they are not available in every country.
  • pump.fun runs the programs and can upgrade them; its CTO process can reassign creator fees.
  • This website is experimental and has not been audited. It holds nothing and deploys nothing, so there is nothing of ours to hack — but read what your wallet shows you before you sign.