the localnet explorer
You're looking at a real Solana validator (Agave 4.2.0) running on this server with SIMD-0385 v1 transactions enabled — the upgrade that raises transactions from 1,232 to 4,096 bytes. Below: the actual transactions that put whole images on chain, and the images themselves, served byte-for-byte out of account data. No image files exist on this web server.
🟢 live · slot … · fridge warming up
new here? what actually happened
- A normal NFT stores a link to an image on chain, and the image lives on somebody's server. Waxels stores the image — the PNG bytes sit inside a Solana account.
- That was impossible in one step before, because a whole transaction had to fit in 1,232 bytes. SIMD-0385's v1 transactions raise the ceiling to 4,096 bytes — you can spot one by its first wire byte,
0x81. - So one single transaction now carries three instructions:
mint(make the canvas),scribble(write the image bytes),seal(lock it forever). One signature. Permanent art. - Every image in the gallery below is fetched from the validator when the page loads — the URL
/api/waxel/<address>/imagereads the account and streams the bytes back out.
the transactions
Every drawing below went on chain in one v1 transaction. Click a drawing to see its exact receipt — signature, wire size, and what each instruction did.
loading receipts…
live from the chain
These images are being served from validator account data right now. View any image URL's response headers and you'll find x-waxels: served byte-for-byte from Solana account data.
browse us on the real Solana Explorer
https://localnet.waxels.app is a working Solana RPC — it proxies straight to the validator. Paste it into explorer.solana.com as a custom RPC URL (or just click here) and watch the waxels chain with the official explorer: blocks, our v1 transactions, the accounts holding the art. Every receipt above has a “view on explorer.solana.com” link too.
note: this is an open sandbox and it resets every hour on the :07 — waxel addresses never change (they're deterministic PDAs), but transaction signatures rotate with each reset. this page always shows the current ones.
don't trust us — read the account
The byte layout is documented in PROTOCOL.md: image length is a u16 at offset 133, image bytes start at 135. Decode any waxel yourself from raw RPC:
curl -s https://localnet.waxels.app -X POST -H 'content-type: application/json' -d '{
"jsonrpc":"2.0","id":1,"method":"getAccountInfo",
"params":["<WAXEL_ADDRESS>", {"encoding":"base64"}]
}' | python3 -c "
import sys, json, base64
raw = base64.b64decode(json.load(sys.stdin)['result']['value']['data'][0])
n = int.from_bytes(raw[133:135], 'little')
open('waxel.png','wb').write(raw[135:135+n])
" # waxel.png is your image. no gateway, no metadata server.When SIMD-0385 activates on mainnet-beta, this same program, client, and page work unchanged — the only thing that moves is the RPC URL. Follow @WaxelsProtocol for the activation countdown.