WAXELS

wax + pixels. crayon art melted permanently into Solana — the first NFT protocol where the entire image lives on chain, minted in a single transaction.

this exact drawing is 3,082 bytes and lives inside a Solana account. not a link. not a hash. the drawing.

your NFT is probably a URL

The industry's little secret: most NFTs store a pointer on chain and keep the actual image on IPFS, Arweave, or somebody's web server — alive only as long as someone keeps paying for pins, gateways, and hosting. If that stops, your art becomes a broken image icon that you own very cryptographically.

regular NFTwaxel
what's on chaina URLthe image itself
if IPFS unpins it🪦 broken imagestill there
if the startup dies🪦 broken imagestill there
in 100 yearsgood luckstill there

If Solana is running, your waxel renders. That's the whole dependency list.

what changed: SIMD-0385

Since genesis, Solana transactions were capped at 1,232 bytes — room for a pointer, never a picture. v1 transactions raise the limit to 4,096 bytes. That one number changes what an NFT can even be: for the first time, an entire image fits inside a single transaction — so mint + scribble + seal ride together in one signature, one slot, and the pixels land inside the account itself.

1,232 → 4,096bytes per transaction
1transaction to mint a whole image
0servers, gateways, pinning bills
∀sealed waxels are immutable forever

the journey: pixels → chain, on mainnet, today

Everything below is a real run from scripts/demo.sh against Solana mainnet-beta, where the SIMD-0385 feature gate activated at epoch 1035 (slot 447,120,000).

  1. Draw. art/build.mjs renders waxel the weasel with a zero-dependency crayon engine — coloring-book outlines, waxy strokes, paper grain — and hand-encodes a 4-bit indexed PNG: 3,082 bytes.
  2. Mainnet is a v1 world. Agave 4.2 carried the feature and it activated on mainnet-beta at epoch 1035, so txv1aq4pp281K9um3tnPgkfX8UqtFT6wcVW3hNezGLL is live for everyone.
  3. Deploy. The waxels program (Anchor v2, SBPF v3) lands on mainnet at 6WGNQ6jzy7TyEPHAQZzKTjoWeVqW9ciWKGtHpjpXRCFt.
  4. Plug in the fridge. One-time protocol init — a 250-byte v1 transaction. No admin keys; the curator is decorative.
  5. Mint in ONE transaction. mint + scribble(3,082 bytes) + seal batched into a single v1 transaction — 3,418 bytes on the wire, well under the 4,096 cap. The image is now account data, sealed, immutable forever — account 38smDoPBKfQ58pHTsghP4XxSbMy1KurZ1i1EDSu4aeRL, transaction 27yc2Bk3…bPRt1RgU.
  6. Prove it. The client reads the account back and hashes the bytes:
minted file:  38ebf2f985ae555e734fe245773fe84b9ffb75758a05cfc75afda864b60ccc94
chain bytes:  38ebf2f985ae555e734fe245773fe84b9ffb75758a05cfc75afda864b60ccc94
✓ identical. the drawing IS the account.

Then set_pfp hangs the weasel on the fridge door: a ["pfp", wallet] PDA any wallet or explorer can resolve to raw pixels. No metadata server, no CDN, no link rot.

the fridge gallery

Eight waxels minted on mainnet — each one a complete image inside its own account, each minted in a single v1 transaction. See them served live from the chain →

the protocol, in crayon

mintpin a fresh 4,096-byte canvas to the fridge
scribblecrayon bytes onto it — the whole image at once on v1
sealmelt the wax. immutable forever — no instruction can ever write to a sealed image
givehand your drawing to a friend
set_pfphang it on the fridge door — on-chain pfp registry

$WAXEL

AN8X2obouFLi9meq556k2crtDhVDfeSUPRMu8hiWAXEL

$WAXEL is the protocol token. The mainnet release ships interswapability between NFT and token, 404-style: melt a waxel into fungible $WAXEL, or crystallize $WAXEL back into a waxel. Two states of the same wax.

live on mainnet

SIMD-0385 activated on mainnet-beta at epoch 1035, and waxels shipped the same day — same program, same client, same weasel that ran on localnet, because the program never parses transactions and doesn't care which version carried its instructions. Program 6WGNQ6jzy7TyEPHAQZzKTjoWeVqW9ciWKGtHpjpXRCFt · fridge GtG657SfcA6JAzxZZPaGQE3f72vjPhR2Dw1KzUh8HCYq.

Legacy 1,232-byte transactions can still mint a waxel in a few strokes; v1 just makes it one. Browse every launch transaction and the live gallery →