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.
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 SOLfrom 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.
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
newrather than a misleading zero.
API
Everything the interface does, it does through these.
| Method | Path | What it does |
|---|---|---|
| GET | /api/coins?q= | Live coins with market stats. Matches name, symbol or an exact mint. |
| GET | /api/coins/:mint | One coin: stats, every holder, treasury state and pool state. |
| POST | /api/launch/prepare | Pin metadata, build and mint-sign the launch transaction. |
| POST | /api/launch/submit | Broadcast the wallet-signed transaction and confirm it. |
| GET | /api/stats?days= | Totals, daily buckets, and the largest coins by market cap. |
| GET | /api/health | RPC, 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.