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 localnet, today

Everything below is a real run from scripts/demo.sh against a local Agave 4.2 validator with the SIMD-0385 feature gate active from slot 0.

  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. Boot a v1 world. solana-test-validator (Agave 4.2) activates every feature at genesis, so txv1aq4pp281K9um3tnPgkfX8UqtFT6wcVW3hNezGLL is live from slot 0.
  3. Deploy. The waxels program (Anchor v2, SBPF v3) lands 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.
  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

Four waxels minted in the demo — each one a complete image inside its own account, each minted in a single v1 transaction.

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

38ZUxkPYsbpUs8jesMNZfiFZrjTMfLtzaJe8qC5WAXEL

$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.

the road to mainnet

Everything you just saw runs on localnet today because Agave 4.2 already carries the v1 transaction feature behind gate txv1aq4pp281K9um3tnPgkfX8UqtFT6wcVW3hNezGLL. Feature gates roll out the way all Solana upgrades do: testnet → devnet → mainnet-beta activation.

The program has no localnet-only tricks — it never parses transactions, so it doesn't care which version carried its instructions. The client already speaks wire-format v1. The moment the gate activates on mainnet-beta, waxels ships — same program, same client, same weasel. Until then: legacy 1,232-byte transactions can still mint waxels in a few strokes; v1 just makes it one.