dustopia
Dustopia sphere preview — wallet rendered as swirling NFT particles
Open Edition · Ethereum

dustopia

your wallet, in motion.

A living portrait of an Ethereum address. Each Dustopia NFT renders the holder's wallet as a 3D sphere of 36 864 particles per token, swirling in real time. The artwork updates automatically as the collection changes hands.

preview · token #1
how it works

Five moving parts. Two of them are on-chain.

The contract holds your ownership. Everything visual is rendered live in the browser from your current wallet — there's no static image baked in at mint time.

01 / mint

Claim a token on OpenSea Drops

One ERC-721 per claim, capped supply. The contract is OpenSea's audited Drops contract — we don't deploy custom mint logic.

02 / metadata

Token URI points at your wallet

The metadata's animation_url resolves to a live view of the current owner's address — not a frozen render. Marketplace iframes load the same view.

03 / render

WebGL2 sphere of your NFTs

Each NFT in the wallet becomes 36 864 particles (192² grid). Up to 1 024 tokens per sphere. Custom GLSL shader handles depth, motion blur, flocking.

04 / configure

Pick which NFTs go in

Holders can curate the sphere — include all, or pick collections and individual tokens. Owner-gated, signed locally with EIP-191. Saved to R2, served to every viewer.

05 / transfer

The artwork follows the wallet

On every transfer the previous owner's selection is wiped automatically. The new holder sees their own collection by default, can configure their own.

stack

Built on small parts that you can audit yourself.

render WebGL2 + GLSL

Single-file, zero-build. Custom vertex/fragment shaders, hand-rolled atlas-grid sampling. No engine, no framework.

backend Cloudflare Worker

Single Worker fronts Alchemy NFT API + ENS resolver. Per-IP rate limiting, edge cache, R2-backed atlas cache.

cache R2 + Edge

Atlas binaries stored as WebP (q=0.9) — ~10× smaller than raw RGB. Edge cache amortises R2 ops across visitors.

auth EIP-191 + viem

Configurator save flow uses personal_sign; Worker verifies signer matches the current on-chain owner before writing.

contract OpenSea Drops

Audited ERC-721 by OpenSea. We don't deploy custom mint logic; the address is referenced from the metadata only.

webhook Alchemy Notify

HMAC-signed Transfer events auto-clear the previous owner's configuration so a new holder starts with a clean default.

faq

Quick answers.

Does signing in the configurator cost anything?

No. personal_sign is an off-chain signature — no gas, no transaction. It only proves you own the address; the Worker verifies the signature matches the on-chain owner before saving.

What if my wallet has more than 1 024 NFTs?

The sphere caps at 1 024 tokens. In Show all mode the renderer picks the first 1 024 silently. Switch to Pick subset in the configurator to choose exactly which ones go in.

What happens to my configuration if I sell the NFT?

The Alchemy Transfer webhook detects the sale and wipes your saved selection within seconds. The new holder gets a clean default — their full wallet, no inherited subset.

Why is the OpenSea grid preview a static image?

Marketplace grid tiles can't run our iframe — they fetch a single image. We render and cache a high-res snapshot of the sphere when any visitor opens the embed view. A future update will swap that for a looping animated WebP via Cloudflare Browser Rendering.