documentation

how jpegged.fun works. creator fees are routed to a non-redirectable vault; NFT holders can burn items for a pro-rata share. this page covers the lifecycle, the math, the pipeline, and the custodial parts.

solana mainnet-betapump.fun bonding curvesburn to redeemv1
01 start

overview

jpegged.fun is a pump.fun launchpad. tokens arrive with generated NFTs. trading fees that token earns become that collection's redeemable floor.

this is not a promise — it's a consequence of where the fees are pointed on-chain, and of arithmetic.

input
pump.fun creator fees on every buy & sell
store
set as coin creator at launch; not redirectable
exit
vault ÷ circulating, paid in SOL

who this is for:

  • creators — describe a theme, get rendered art, and launch a token backed by its fee stream.
  • holders — mint via token burns, monitor the rising floor, and redeem at will.
  • traders — view hard backing numbers beside market prices to clearly see premium or discount.
01 start

the core mechanic

pump.fun routes creator fees to a specific address. unlike standard launchpads, jpegged.fun designates the collection's vault as the creator.

trader
pump.fun curve
fee PDA
collection vault
holder
burns NFT

because the creator field is fixed at token creation, neither deployers nor jpegged.fun can redirect funds. the only account that can ever claim is the vault itself.

why this is the whole design
properties like the real floor, rising via trading, and permissionless sweeping stem directly from this one architectural choice.
what is trustless today, and what is not
pump.fun enforces fee accrual trustlessly. however, fee withdrawal is currently server-side (custodial) in v1.
01 start

lifecycle of a collection

  1. generate — a theme prompt becomes a trait taxonomy. rendered as single images. status: generating → ready.
  2. launch — a coin is created with the vault as creator. launcher signs; jpegged.fun never holds keys. status: ready → live.
  3. trade — bonding curve buys/sells accrue fees to the vault's fee PDA. status: live → graduated.
  4. mint — holders burn token supply to claim unminted NFTs. burning is a supply sink.
  5. redeem — burn an NFT to receive vault ÷ circulating SOL. no deadlines or expiry.
02 mechanics

the vault

exactly one vault exists per collection. it is set as the pump.fun coin creator and holds all backing.

derivation
vaults are derived, not stored, using sha256(masterSecret ‖ "|vault|" ‖ collectionId). database compromises reveal nothing spendable.

two balances, one number. backing exists as SOL in the vault and unswept fees in the pump PDA.

componentcounted in the floor
vault balance (minus rent reserve)counted
unswept fees (net of platform cut)counted
rent reserve (0.0015 SOL)not counted
mint proceedsn/a — burns tokens, pays no SOL
rent reserve
0.0015 SOL is held back to pay network fees so the vault can always fund redemptions.
bootstrap problem
fresh vaults hold zero SOL. jpegged.fun splits roles: the vault signs the claim, while the fee payer can be anyone.
02 mechanics

backed floor math

the backed floor is the amount of SOL one NFT is worth if you burn it right now.

backedFloor = (vaultLamports + unsweptNet) ÷ circulating
  • vaultLamports — vault SOL in lamports, minus the reserve.
  • unsweptNet — fees still in the pump PDA, net of the platform cut.
  • circulating — minted and unredeemed NFTs.

numbers are read live from the chain. the database stores no prices, so a stale floor is not a failure mode here.

vault (SOL)circulatingbacked floor (SOL)
3240.1250
6240.2500
12240.5000
24241.0000
unminted items
a collection of 24 with only 6 minted divides by 6, not 24. minting dilutes the floor, which is why it requires token burns.
02 mechanics

the redemption invariant

removing one NFT removes exactly its pro-rata vault share, making the number a floor rather than a queue.

(V − V/c) / (c − 1) = V / c

the floor remains mathematically unchanged post-redemption.

implications:

  • monotonically non-decreasing — redemptions leave it flat; sweeps raise it.
  • order does not matter — no bank runs; waiting is never punished.
  • closed-end fund NAV — the gap between backed floor and market floor is a premium/discount.
  • last NFT — at c=1, the holder gets the entire remaining vault.
02 mechanics

premium and discount

backed floor is vault payout; market floor is the best ask. their relationship is vital for traders.

premium % = (marketFloor ÷ backedFloor − 1) × 100
  • positive means market > backing — art/narrative value.
  • negative means market < backing — arbitrage opportunity.

negative premiums allow arbitrage (buy market, redeem backed), holding the market floor at or above backing.

market floor reads as null until marketplace listings exist, leaving backed floor as the only honest number.
02 mechanics

fees, in full

three places value is taken, none hidden.

feewhoeffect
pump.fun trading feeprotocolnone — never enters vault
creator feevaultraises floor
platform fee (20%)jpegged.funremaining 80% raises it

the pump program sets the creator rate. the platform cut applies at sweep time and is already deducted from UI displays.

what a launch costs
pump.fun coin creation costs ~0.02 SOL. sweeping costs ~0.000005 SOL. redemption fees paid by vault float.
03 flows

the art pipeline

generated in two passes: design taxonomy, then render.

  1. taxonomy design — a model builds the base subject, ordered trait layers, weighted values, and prompt clauses.
  2. trait draw — draw traits weighted per layer. rarity for an item is the product of its chosen values' probabilities. rejects duplicates.
  3. render — items rendered as single images from assembled prompts, under a $1 ceiling per collection.
why one image per item
text-to-image models draw a whole character for a trait prompt, preventing layer compositing. thus, spend scales with supply.
why supply is 12, 24 or 48
supply dictates art budget, generation time, and floor-dilution parameters. large supplies render per-NFT backing meaningless.
03 flows

launching a token

a single transaction creates the coin and optionally executes a creator buy atomically. jpegged.fun never holds the keys that pay for it.

fields:

  • creator — set to collection vault. unchangeable.
  • name / symbol — creator chosen.
  • uri — pump-compatible metadata JSON.
  • devBuySol — optional atomic buy to prevent front-running.
  • mintPriceTokens — token burn cost for an NFT.
lookup table
over 30 accounts exceed Solana's 1232-byte packet limit. pump.fun's address lookup table fixes this.
mainnet-only
no devnet for pump.fun exists. end-to-end testing costs real SOL (~0.02).
platform fee
jpegged.fun takes 0.5% of creator fees. the rest backs your floor. a one-time 0.01 SOL platform fee is also charged at launch, atomic with pump.fun's own ~0.02 SOL protocol fee and your dev buy.
03 flows

minting by burning

minting burns tokens permanently rather than costing SOL. the vault is fed by trading fees alone.

  1. prepare — reserve item, build burn tx, check balance upfront to prevent wallet simulation failures.
  2. sign and submit — wallet signs. burn must land before item assignment.
  3. confirm — verify confirmation, then assign the item.
token-2022
pump.fun uses token-2022, not classic SPL. classic assumptions break runtime builds.
decimals
tokens are six-decimal against 1B supply; whole token prices are scaled by 10⁶.
03 flows

sweeping fees

moves fees from pump PDA to vault. it is permissionless — anyone may trigger a sweep on any collection.

  • vault signs, caller pays ~0.000005 SOL network fee.
  • platform cut (20%) is appended atomically here.
  • does not change floor math; only changes where SOL sits for immediate payout.
  • graduated collections must sweep from both curve and AMM programs.
03 flows

redeeming an NFT

holder gives up NFT for pro-rata vault SOL.

  1. sweep first — pull pending fees to ensure payout is against true balance.
  2. compute the share — calculate floor(backedFloor × 10⁹) lamports. verify ownership/redeemed status.
  3. pay and retire, atomically — item marked redeemed, SOL sent. floor remains unchanged.
server-submitted
client submission risks double redemption. keeping the mark-and-pay step on one side of the boundary is what makes double redemption impossible in v1.
04 reference

a worked example

a 24-item collection accumulating 12 SOL over its lifetime:

eventvault (SOL)circulatingbacked floor
launch00
24 minted0240.0000
fees swept +1212240.5000
redeem11.5230.5000
sweep +2.313.8230.6000
redeem13.2220.6000
read it the other way round
redemptions did not drop the floor. holders can verify public balances independently.
04 reference

architecture

a next.js app router app. no economics are persisted: the database records what exists — every price is derived at read time.

layerchoice
appnext.js, app router (force-dynamic economics)
uitailwind, terminal aesthetic
chainpump-sdk, web3.js, helius RPC
datapostgres / storage, birdeye
arttaxonomy model, image diffusion, sharp

source layout:

  • lib/pump/ — tx building, curve state.
  • lib/vault/ — floor math, sweep construction.
  • lib/art/ — taxonomy, compositing.
  • lib/market.ts — live economics.
  • app/api/ — route handlers.
graceful degradation
local fallbacks exist for every integration (heuristic taxonomy, local disk) allowing zero-key operation.
04 reference

HTTP API

JSON routes. tx builders return base64-encoded unsigned strings. PATCH confirms signatures before state changes.

methodendpointpurpose
GET/api/statuschecks integrations
GET/api/collectionslive economics for all collections
POST/api/collections/generatestart art pipeline
GET/api/collections/generatepoll progress
GET/api/collections/[slug]derived economics for one collection
GET/api/collections/[slug]/itemsitems with rarity/ownership
PATCH/api/collections/[slug]/coverreplace cover
POST/api/collections/[slug]/launchbuild create(+buy) tx
PATCH/api/collections/[slug]/launchconfirm launch signature
POST/api/collections/[slug]/mintreserve item, build burn tx
PATCH/api/collections/[slug]/mintverify burn, assign item
POST/api/collections/[slug]/sweepsweep creator fees
PATCH/api/collections/[slug]/sweepconfirm sweep
POST/api/collections/[slug]/redeemburn NFT, pay share
GET/api/portfoliowallet items and redeemable value
GET/api/claimpending creator fees
04 reference

trust model & known gaps

what you do not have to trust:

  • fee accrual (enforced by pump.fun).
  • where swept fees go (only vault can claim).
  • the launcher's keys (user signs).
  • published numbers (checkable independently).

what you do have to trust, today:

  • vault custody (v1) — vaults are server-held keypairs. an anchor program replacement is intended for trustlessness.
  • off-chain NFT custody — minting records ownership via burn signature, but the NFT is not on-chain yet (metaplex core planned).
  • no marketplace layer — market floor null until listings exist.
  • mainnet-only testing — devnet paths cannot be tested end-to-end without real SOL.
what the floor does not protect
the floor is a claim on SOL, not a guarantee of token price or volume. a collection that never trades accrues no fees, and a floor of zero is a perfectly consistent outcome.
04 reference

glossary

termmeaning
backed floorvault balance plus unswept net fees, divided by circulating NFTs.
market floorlowest current ask (null without marketplace).
premium / discountmarket relative to backed floor.
vaultthe per-collection account holding all backing.
fee PDAwhere pump.fun accrues fees pre-sweep.
sweepmoving fees from PDA to vault (permissionless).
circulatingminted, unredeemed NFTs.
mint pricetoken burn cost for an NFT.
graduationcurve completion migrating token to AMM.
rarity scoreprobability product of item traits.
04 reference

frequently asked

can the deployer take fees?
no. the creator is the vault, unchangeable post-creation.
what if everyone redeems at once?
nothing unusual — each removes exactly its share. order doesn't matter.
does minting dilute?
yes, mathematically. it requires token burns and is capped at 48.
why not put mint proceeds in the vault?
then holders would pay themselves. backing comes from trading volume.
can the floor go down?
only by minting new items. redemptions leave it flat; sweeps raise it.
do i have to redeem?
no deadline, expiry, or penalty.
who triggers a sweep?
anyone. the caller just pays the network fee.
what if jpegged.fun disappears?
accrual continues. in v1, sweep/redeem relies on the server-held vault signer.