launchjpgs.fun

Documentation

Coins that are drawings

Draw a 32×32 piece in the browser, name it, and one transaction writes the art to Solana and mints the coin on the pump.fun bonding curve. Below: how the drawing is encoded, what the launch transaction actually contains, how the curve prices it, and where every lamport of trading revenue goes.

What this is

A launchpad where the art is not an upload.

Solana transactions were capped at 1,232 bytes for years, which is why no launchpad ever put the picture on chain: there was nowhere to put it. SIMD-0296 raises the cap to 4,096. That is not enough for a photograph, and it is far more than enough for a 32×32 drawing stored as a palette and a run of indices, which lands in the low hundreds of bytes.

So that is what this is. You draw the coin, in the page, on a grid sized to the limit. The art and the mint go into the same transaction, and the picture stops being the one part of a coin that depends on a server somewhere staying up.

Launch in three steps

From a blank grid to a live coin, in one signature.

1. Draw
Paint on the 32×32 pad. Twelve colours, drag to fill, eraser to take it back. If you would rather bring your own picture, the Upload tab takes a PNG, JPEG, WebP or GIF up to 5 MB.
2. Name it
A name and a ticker are required, a description and an X link are not. Set a first buy if you want a position at the opening price, or leave it at zero.
3. Sign once
One transaction writes the art, mints the coin, funds its treasury with gas, and optionally executes your first buy. When it confirms you land on the coin's page.

The drawing

Why 32 by 32, and why a fixed palette.

The pad is 1,024 cells and twelve colours. That is not nostalgia, it is arithmetic. Stored naively, one byte per pixel, the grid is 1,024 bytes. Stored as a palette plus four-bit indices it is 512, and run-length encoded — pixel art is mostly runs — it typically lands between 300 and 600 bytes.

A Solana transaction has a hard size limit. Under the current format that is 1,232 bytes; SIMD-0296 raises it to 4,096. A piece in the low hundreds of bytes fits inside either, with room left for the instructions that mint the coin. Everything about the format is chosen so the art and the coin fit in the same signature.

What gets rendered

  • The published image is drawn at 512×512, sixteen device pixels per grid cell, so it stays sharp anywhere it is displayed.
  • Every surface that shows a piece renders it with image-rendering: pixelated. A browser's default smoothing turns pixel art to mush, which is the one thing that must not happen to it.
  • Unpainted cells are the page's black rather than transparent, so a piece looks the same everywhere and never picks up the background of whatever site is displaying it.

Anatomy of a coin

Four accounts, fixed at mint, none of them changeable afterwards.

The mint
Token-2022, six decimals, one billion supply, minted in full at creation. Mint authority is revoked in the same transaction, so the supply can never change.
The bonding curve
A program-derived account holding the unsold supply and the SOL paid in so far. It prices every buy and sell until the coin graduates.
The treasury
A keypair generated for this coin alone and written into the coin as its creator. Every creator reward the coin earns accrues to a vault only this key can claim. It cannot be changed after mint.
The art
The 32×32 piece, its palette, and its dimensions, written on chain and referenced by the coin's metadata.

The launch transaction

What your wallet is actually signing.

1BrowserYou draw the pieceand name the coin2preparePins metadata to IPFS,builds create_v2 (+ buy),signs as the mint3WalletYou sign as fee payer.The mint signaturesurvives untouched4submitVerifies the mint,broadcasts, confirms5SolanaArt, coin and curveare livePOST /api/launch/preparePOST /api/launch/submitthe mint keypair never leaves the serverA row is written at step 2 aspendingand only flips to live at step 4 — abandoned attempts never surface as coins.
One transaction. The mint keypair is generated and signed server-side, so a half-signed transaction is all the browser ever holds — and it cannot pay its own fees.

The mint keypair is generated on the server, because the metadata has to be written with the mint's own address inside it, and that has to happen before the transaction can be built. The server signs as the mint and hands the browser a half-signed transaction. That object is inert: it cannot pay its own fees, so it does nothing at all until your wallet signs as fee payer.

Instructions, in order

  • Compute budget: unit limit and price.
  • A transfer of 0.01 SOL from you to the coin's treasury. Claiming rewards is a transaction the treasury pays for itself, and a brand new keypair holds nothing, so without this its first claim fails. It is spent on network fees over the coin's life, never taken by us.
  • create_v2: mints the supply, opens the curve, and records the treasury as the coin's creator.
  • Your first buy, if you set one, at the curve's opening price.

The art on chain

The piece travels with the coin, not beside it.

The pad is encoded as a palette followed by run-length encoded indices, along with its width, height and a SHA-256 of the rendered image. That payload goes on chain in the launch, and the coin's metadata points at it.

Why the hash is there too

The dimensions and the pixels are enough to redraw the piece. The hash is what lets anyone holding a copy of the rendered image prove it is the one this coin was launched with, byte for byte, rather than something that merely looks similar.

what the payload carries

{
  "v": 1,
  "w": 32,
  "h": 32,
  "palette": ["#000000", "#ffffff", "…"],
  "pixels": "<run-length encoded indices>",
  "sha256": "<of the rendered 512x512 PNG>"
}

Metadata

What every wallet, explorer and aggregator reads.

The coin's metadata document carries the name, ticker, description and X link, and its website field always points at the coin's own page here. That is deliberate: pump.fun, Solscan, DexScreener and every wallet surface that field, so anyone who finds the coin somewhere else lands on the page that shows the piece.

The bonding curve

How the price moves, and what graduation means.

What the curve does to market cap

A constant-product curve: price is a function of how much supply has been sold, not of demand arriving

411 SOLat graduation

Opens at 28.0 SOL market cap and fills at 411 SOL, having taken in 85 SOL. At that point complete flips, liquidity migrates to the pump AMM, and the curve account is closed — which is why a graduated coin's market cap has to come from a price feed instead.

Price is set by a constant-product curve between the SOL paid in and the supply still held by the curve. Early buys are cheap because the curve holds nearly everything; each one raises the price for the next. Nobody sets the price and there is no order book.

When enough of the supply has sold, the coin graduates: the curve closes and its remaining SOL and tokens are deposited into an AMM pool. From that point the coin trades on the open market and the progress bar on its card is replaced by a graduated marker.

Creator rewards

Thirty basis points of every trade, and where they go.

Buy: 1 SOLSplit by the pumpprogram, on chainBonding curve0.98765 SOL — buys supplyProtocol fee0.00938 SOL — 95 bps, dynamicCreator fee0.00296 SOL — 30 bps, flatThis coin's vaultA PDA of the coin's owntreasury key — holds thiscoin's rewards aloneInto the poolThe keeper claims it,converts it, and pairs itas liquidityFixed at mint time`creator` is written into the coin when create_v2 runs and cannever be changed. Each launch generates its own keypair forthat slot, so 100% of this coin's rewards are the coin's.Half of the protocol fee is a buyback; that leg is pump's,not ours. The platform takes no cut of the creator reward.
Where a 1 SOL buy goes. The creator reward is the coin's income; it accrues to a PDA derived from the creator key, and only a signature from that key can move it.

pump splits every trade on chain. The bulk goes into the curve, a protocol fee goes to pump, and 30 bps goes to the coin's creator — which here is the coin's own treasury key, not us. Those rewards accrue to a vault derived from that key, and only a signature from it can move them.

Claiming is permissionless

The creator is not a required signer on a claim. Anyone can pay the network fee to crank it, and the funds can only ever land in the creator's own account. That is a safety property rather than a loophole: there is no version of the instruction that sends the money somewhere else.

What the numbers mean

Every figure on the site, and where it comes from.

Market cap
Price times total supply. While the coin is on the curve the price comes from the curve itself; after graduation it comes from a third-party price feed.
Curve sold
How much of the supply the curve has released, as a percentage. 100% means it has graduated.
Circulating
Total supply minus whatever the curve still holds. It matches the sum of the holder table, which is the check that it is right.
Holders
Every wallet with a non-zero balance, enumerated from chain rather than sampled. The table shows all of them, largest first.
24h
Price change over the last day, from the price feed. A coin too new to have a full day shows new rather than a misleading zero.

API

Everything the interface does, it does through these.

MethodPathWhat it does
GET/api/coins?q=Live coins with market stats. Matches name, symbol or an exact mint.
GET/api/coins/:mintOne coin: stats, every holder, treasury state and pool state.
POST/api/launch/preparePin metadata, build and mint-sign the launch transaction.
POST/api/launch/submitBroadcast the wallet-signed transaction and confirm it.
GET/api/stats?days=Totals, daily buckets, and the largest coins by market cap.
GET/api/healthRPC, pump config, lookup table, price feed, cache and database in one call.

Limits and caveats

The things worth knowing before you rely on a number.

  • The drawing is final. It is written at mint and there is no edit. A coin whose art is wrong has to be launched again.
  • Each treasury needs a little gas to start. Claiming rewards is a transaction the treasury pays for itself, so the launch deposits 0.01 SOL into it. That is spent on fees over the coin's life, never taken by us.
  • Treasury keys are custodial. Each coin's key is held encrypted on the server. A stolen database alone is useless, but whoever holds the database and the environment key can move funds. Losing that key makes every treasury permanently unspendable.
  • Market cap for graduated coins depends on a third party. If the price feed is down, that number is unavailable rather than wrong.
  • Uploaded images are not on chain. If you bring your own file rather than drawing one, it is stored the ordinary way and inherits the ordinary risks. Only the pad produces an on-chain piece.

Glossary

Mint
The token's address. The coin, as far as the chain is concerned.
Bonding curve
The account that prices the coin and holds unsold supply until graduation.
Graduation
The curve closing and its liquidity moving to an AMM pool.
Creator vault
The account creator rewards accrue to, derived from the creator key.
Treasury
The keypair generated per coin and named as its creator, so its rewards are its own.
Palette index
A pixel stored as a number pointing into the colour list, rather than as a colour.
RLE
Run-length encoding: a run of identical pixels stored as a count and one value.
Lookup table
An on-chain list of addresses a transaction can reference by index to save space.

FAQ

Do I have to draw?

No. The Upload tab takes an ordinary image file. You lose the on-chain piece, which is most of the reason to be here, but the coin works exactly the same.

Can I change the art later?

No. It is written at mint, along with everything else in the coin's metadata. That is the property that makes it worth having.

Who gets the trading fees?

The coin does. 30 bps of every trade accrues to a vault only that coin's own key can claim. We are not the creator on any coin launched here.

What does it cost to launch?

Network fees, plus the 0.01 SOL gas deposit into the coin's treasury, plus whatever first buy you choose to make. There is no listing fee.

Why 32×32 and not something bigger?

Because a bigger grid does not fit in a transaction. See the drawing for the arithmetic.