poképump

Unleash
the pump

The sprite is inside the transaction.

Not a link to an image. Not an IPFS URL that can go dark. The pixels themselves ride inside the transaction that launches the token, at their original resolution. Anyone can read them back.

Decoding…
Pikachu
...

What the transaction carries

These bytes are the memo instruction, in base64. Your browser just decompressed them to paint the image on the left, with no network call and no image server.

pkmp1:UEtNUAEZAC4NAAAAKSkpYjEIQUFK9r0gnFIA9uZS3pQA//akc3OD////5lpBxSAYldXbloMgDAVQDyGXTuv//+6sICBg7Iw81Kq7EJJot80HtgcD6Ql/qh9wpKeaHujMV51SSqHOzAtPKeWccxQgeNEirOo6f9Hiww/q4wZvGzGziL1eL1U7rP7cYdfmtvA6ckbDvuDETReMbjdRnbk0xAB7NFjuyTS1m7L+G8lnPu+ZXjTe3ALIs7a66MApQ5WsR9LvWcOjltQDV9XPR43m7YyayjmJVfzZGQseOH1YjaRUSHnf90NPeNA7D+PU/A/N+86uxb+f1Rp2yetAv1YTO9YSq6ZhhsUGWlEasyxz6UTogj1Oiq1r1QmXXRGzXO2hqzc+c0Dr41r7QbXWojWGK1iocTI7E+w44iUQ6R9aAiczY6PrLmGTZvPWNTOjKGxIjeGYWo5GN4ufebR5+yIl0yIRh4vjPYJ6LK0Sc79fX1D1yHXuQGPq45KSkjqSsOzMK9a7FmkN2Cg3zDd/F9eHIS7iOPkybpLt3L0ZANCfmMikZwskYhbW5cBeGxoyUF7+XwIBzecqeqvD34fXfwE=
Try another

What a launch transaction holds

Launching Pikachu takes 1,856 bytes. Here is how they break down, with the image as the last slice.

Signatures 128 B
payer and mint, 64 bytes each
Accounts 896 B
28 accounts, 32 bytes each, quote chain included
Header and config 58 B
resource limits set in the message
Create instruction 172 B
name, ticker, URI, creator, quote mint
Memo, the sprite 602 B
PKMP1 payload in base64

The real limit is not space

You expect to run out of bytes. You run out of compute first: writing the memo burns compute units, and a transaction is capped.

What size allows
2,100 B
What compute allows
1,818 B

This is the bound that actually applies.

The memo program burns about 358 units per character, measured by simulating three payloads against mainnet:

  • 514 ch.291,952
  • 602 ch.319,847
  • 2,162 ch.881,285

A transaction caps at 1,400,000 units. Writing the heaviest sprite costs eight times more compute than launching the token.

The format

Pokémon sprites use only 10 to 15 colours, so a palette captures them exactly, with no approximation and no colour drift. Only the pixel indices are compressed.

FieldHolds
magic"PKMP"
version1
pokedexnational number, u16
sidepixels, square sprite
colourspalette size
paletteRGB, one entry per colour
pixelsdeflate-raw of the indices

All 50, by weight

Each sprite is sized by how many bytes its inscription takes, heaviest first, from Ho-Oh at 1615 bytes down to Mimikyu at 379. None had to be reduced.

Ho-Oh: 1615 bytesGiratina: 1457 bytesGyarados: 1448 bytesDialga: 1424 bytesGroudon: 1404 bytesRayquaza: 1320 bytesVenusaur: 1305 bytesPalkia: 1247 bytesIncineroar: 1217 bytesDelphox: 1194 bytesHydreigon: 1192 bytesKyogre: 1160 bytesZacian: 1159 bytesCharizard: 1141 bytesGarchomp: 1118 bytesArceus: 1072 bytesLugia: 1071 bytesDragapult: 1071 bytesMachamp: 1051 bytesArcanine: 1043 bytesSalamence: 1038 bytesFeraligatr: 997 bytesMetagross: 990 bytesBlastoise: 981 bytesInfernape: 978 bytesDragonite: 973 bytesSwampert: 964 bytesSceptile: 949 bytesGreninja: 948 bytesTyranitar: 946 bytesAlakazam: 944 bytesBlaziken: 887 bytesDecidueye: 854 bytesZoroark: 849 bytesCinderace: 808 bytesMewtwo: 805 bytesDarkrai: 787 bytesSnorlax: 761 bytesTyphlosion: 757 bytesLapras: 746 bytesGardevoir: 727 bytesLucario: 686 bytesVaporeon: 659 bytesSylveon: 659 bytesGengar: 628 bytesEspeon: 489 bytesUmbreon: 450 bytesPikachu: 446 bytesMew: 428 bytesMimikyu: 379 bytes

Check it yourself

None of this asks you to take our word for it. The payload travels in the clear: any block explorer shows it, and the decoder on this page runs entirely in your browser.