Documentation

Stampy is a launchpad layer on Pump.fun. It creates a real Pump.fun coin and permanently inscribes its media in Solana transaction history — using only already-deployed programs.

Overview

A Stampy launch produces a native Pump.fun token — it trades on the Pump bonding curve, graduates to PumpSwap, and uses Pump's native holder rewards where supported. Stampy does not run its own AMM or bonding curve. The addition is that the token's media is written on-chain into Solana transaction history, cryptographically tied to the mint.

Inscription format

Because the SPL Memo program requires valid UTF-8, content bytes are base64-encoded. Each memo is a compact, deterministic record. The first memo is the manifest; the rest are ordered content chunks:

manifest  SCRB1|M|<mint>|<creator>|<mime>|<len>|<sha256>|<total>
chunk     SCRB1|C|<mint>|<sha256>|<index>|<base64 data>

The manifest carries the protocol version, mint, creator, MIME type, original byte length, the SHA-256 of the full content, and the total chunk count. Every chunk repeats the mint and content hash so it is bound to the exact file it belongs to.

Launch flow

  1. Generate the Pump mint keypair in the browser (so the mint address is known).
  2. Compute the media SHA-256 and split it into size-measured chunks.
  3. Upload Pump-compatible metadata (image + JSON) to Pump's IPFS.
  4. Create the native Pump.fun coin, with an optional atomic creator buy.
  5. Inscribe the manifest and chunks as SPL Memo transactions.
  6. Reconstruct the content from Solana and verify the SHA-256.

Stampy serializes each transaction message client-side to decide how many inscription transactions are required — the count is never hardcoded. Every transaction is signed in a single wallet approval, then sent and confirmed on-chain; a failed launch resumes from the last confirmed step and only re-signs what is left.

Reconstruction & verification

The content gateway /api/content/[mint] locates the mint's memos on Solana, orders the chunks, concatenates the bytes, and recomputes the SHA-256. It only serves the content when the hash matches the manifest — corrupt or incomplete data is never served as verified.

GET /api/content/<mint>        # verified bytes, original MIME type
GET /api/inscriptions/<mint>   # on-chain manifest (mint, creator, hash, size)

Media & size

Supported types: PNG, JPEG, WebP, GIF, MP3, WAV, plain text, and HTML. The default UI limit is 100 KB and is configurable. Larger files need more transactions (more base fees) but still only one wallet approval. Images can be resized and re-encoded to WebP in the browser; audio is stored byte-for-byte and never silently altered.

Security

  • MIME type is validated from the actual file bytes, not just the extension.
  • The SHA-256 is shown before signing and re-verified when the content is reconstructed.
  • HTML is rendered only inside a sandboxed iframe and served under a restrictive CSP, with no wallet, parent, popup, or navigation access.
  • No server holds a private key; every transaction is signed by the connected wallet.

Environment

NEXT_PUBLIC_SOLANA_RPC_URL=      # a Solana mainnet RPC endpoint
NEXT_PUBLIC_APP_URL=            # this app's public URL
# optional
NEXT_PUBLIC_SOLANA_NETWORK=mainnet-beta
NEXT_PUBLIC_SCRIBE_MAX_CONTENT_BYTES=102400

Pump.fun runs on mainnet-beta, so use a mainnet RPC. There is no program id to configure — Stampy relies only on programs that are already deployed.