Mirrors is an experiment. Living, generative art tied to your wallet — your 40-character hex address is the whole input. It shapes the visual, it drives the rank, and as you use the chain the composition never stops evolving. Below: how every piece fits together.
Here’s the fun secret: this is an experiment, and even I don’t know exactly what it’ll do next. Every wallet renders something one-of-a-kind, the rank keeps climbing as you use the chain, and the warp and animations shift over time — so your Mirror keeps surprising you instead of sitting still.
What will your address paint? How will it look a year from now? Which wallets will unlock the rarest moves? Nobody knows yet — and that’s exactly the point. You’re not collecting a frozen picture; you’re collecting a living reflection of your on-chain life, and we get to watch where it goes together.
Your address splits into 8 chunks of 5 hex characters. Each chunk drives exactly one visual parameter, and the whole composition is mirrored across both axes — every line you see is reflected four times.
Each chunk has to become a real number before it can drive a visual parameter. Follow the flow:
a=1
b=2
c=3
d=4
Chunks starting with 0 are temporarily patched to 1 just for this calc — so the parameter never collapses to zero. The zero penalty is applied separately.
Every line is generated once in the top-left quadrant of the canvas, then reflected three times — horizontally to the top-right (TR), vertically to the bottom-left (BL), and across both axes to the bottom-right (BR). One original line becomes four. Watch it live:
The shape in TL is the only thing that moves — the other three follow its motion, flipped.
The art breathes. Every Mirror runs a continuous color cycle and a per-frame flicker, with lines that drift on their own waves. Watch them live below — these aren’t mockups, they’re the same effects running in the artwork:
But the way a Mirror moves isn’t fixed — the rank decides. Below rank 50, each piece gets one of five signature animations from a static tier map. At rank 50 and above, the animation joins a rotation pool and shuffles to a new pick on a schedule:
The full pool for the rotation tiers includes all five tier animations above plus Converge (lines flowing inward), Bloom (the whole field breathing out and back), Ripple (a radial wave from the center), Spiral (slow orbit around the center), and Rain (lines falling).
Your wallet is the rank. Its hex composition produces a continuous wallet score, then activity, loyalty, how many Mirrors you hold, and your sales history add to it. The visible rank circle shows the total, capped at 100.
Each piece is broken down in the steps below.
Every character in your address contributes to a base score. We sum all 40 hex digits (letters a–f map to 1–6) and translate the total into a continuous 5–90 score. Wallets with denser, higher-valued hex characters earn more.
Specific chunk patterns add (or subtract) from the wallet score. Within each chunk only the highest bonus counts. The BOOST total caps at +25; the penalty bottoms out at −15.
69 or 420 — classic BOOST prefixesaaaaa, 1111112345, 89abc, fedcbabcba, 123210 — leading zeros lose structural informationYour wallet's total transaction count pushes the rank up logarithmically: log10(tx + 1) × 5. The curve never plateaus, so every transaction counts forever — even past the visible 100 ceiling, the art keeps quietly responding.
How long you've owned your Mirror. The clock starts the moment you receive it; a transfer resets it for the new owner. Three tiers:
Holding more than one Mirror earns a collector boost on top of your wallet, activity, and loyalty. It scales in fives: +10 points for every 5 Mirrors held, capped at +100. Tuned for the 1,000-piece supply — at 50 held (5% of the collection) the boost alone maxes the rank circle. Under 5 held grants no points yet — but your holdings count always shows on your card.
Because the boost feeds the same uncapped raw rank that drives the artwork, a deep collector’s pieces also render denser — and at 50 held the boost alone maxes the rank circle.
How a Mirror has moved on-chain factors into the rank. Each real marketplace sale — ETH paid through Seaport, Blur, LooksRare, X2Y2, SudoSwap, or any tx that sends value alongside the transfer — adds +5 points, capped at +20 (four sales tops out the boost). Free wallet-to-wallet transfers don’t count, so gifting a Mirror to yourself doesn’t inflate it.
The same transfer chain is also scanned for wash trading — the same wallet receiving the token again within 24 hours. Four such round-trips trigger a −20 flat penalty that overrides any sale boost. The overlay shows a live WASH badge with a countdown to when the 24-hour window closes; once it expires the badge flips back to SOLD and the sale boost re-applies automatically.
The number you see in the rank circle tops out at 100 — a clean ceiling. But behind the scenes the raw rank keeps growing logarithmically with every transaction and every additional day held, and that uncapped score drives the artwork's density.
So even when your visible rank says “100, you’re maxed”, the composition itself never stops evolving. Each new transaction adds a touch more depth. Each day held adds a fraction more. The art is always becoming — never frozen, never final. Your Mirror is your on-chain story, painted continuously.
Crossing rank 50 unlocks the 50% Club; crossing rank 100 unlocks the 100% Club. Both clubs earn a visible badge on the Mirror’s info overlay and an inline chip on the leaderboard row — brand-blue for the 50% Club, gold-with-violet sparkles for the 100% Club.
The clubs also unlock the rotation system across three independent dimensions of the artwork:
The rotation is deterministic per token: every viewer of the same Mirror sees the same animation, line style, and shape at the same moment in time. The dice are seeded by the token ID and the current period — no randomness across observers, just shared, scheduled variation.
Chunk 6 picks a line style. There are four base strokes — solid, dashes, dotted, and double rail — and most pieces combine two of them, alternating line by line. When a piece lands on a "dotted" variant, the dots themselves render as one of eight marker shapes chosen per wallet, so the same dotted style can read as a column of dots, diamonds, squares, triangles, plus signs, hexagons, stars, or chevrons. Every variant is mirrored across all four quadrants.
Sitting on top of every Mirror is a delicate dithered texture — the “warp”. It’s built on a 4×4 Bayer ordered-dither matrix, a halftoning algorithm developed by Bryce Bayer at Eastman Kodak in the early 1970s. The matrix is a small recursive threshold pattern that converts continuous tones into clean, structured halftone arrangements without random noise — the same elegant trick used in countless retro graphics, image quantization pipelines, and early video games.
Bayer’s name is also on a second cornerstone of digital imaging: the Bayer color filter array, patented in 1976, which is the red/green/blue mosaic pattern in the sensor of nearly every digital camera made today. Two foundational algorithms, one inventor.
For MIRRORS we built our own version of the Bayer pattern — rendered with the same 4-way mirror symmetry as the rest of the artwork, animated through the dither’s progression sequence, and looping at a cycle length unique to each piece. It’s the woven texture you see breathing over every Mirror: a direct descendant of a 50-year-old halftone algorithm, rebuilt for a generative artwork on Ethereum.
Every cell of the warp also spins on its own. Each tile picks a speed, direction, and starting phase from a hash of its grid position, so some cells turn fast, some slow, some clockwise, some counter-clockwise — while the overall composition stays mirror-symmetric. The result is a constantly twisting field that never settles into the same arrangement twice.
Behind the lines, a wallet-driven radial glow pulses and glitches in the background — built from the same color palette as the strokes, with position tears, color corruption, size warps, and brief blackouts seeded by the wallet’s hex. The glitch identity is unique per Mirror: some wallets stay calm, others feel chaotic, others lean toward color shifts or radius warps. It’s the broken signal beneath the symmetry.
Every Mirror page ships with the same hidden controls. The keyboard shortcuts work on desktop; the gesture column is the equivalent on mobile / touchpads.
Esc also closes.T again) to close.MIRRORS was built through a workflow now known as vibe coding — a back-and-forth collaboration between an artist and an AI. AwfulEye started working on the project about a year and a half ago, with a vision for a generative artwork that reflects its owner’s wallet. Early attempts at vibe coding with other AI assistants — ChatGPT and Grok — kept getting stuck on the harder implementations: the rank math, the wallet-derived parameters, the symmetry, the animations. The project lived in unfinished pieces for months.
Then AwfulEye discovered Claude Code, Anthropic’s coding assistant. Things changed almost immediately. Implementations that had been blocked for a year started clicking together in a few sessions. The artist directed the vision; Claude wrote the code. MIRRORS is what came out of that partnership.
Loads the real Mirror for that token — full rank including hold-time boost from the actual on-chain transfer history.
Each Mirror is a unique generative artwork tied to your wallet. The 40-character hex address breaks into 8 chunks, and each chunk drives a specific visual parameter — making every Mirror as distinct as the wallet that holds it.
Your wallet is your rank. The sum of your hex digits forms a continuous base score (5–90). Special chunk patterns (69, 420, repeating aaaaa, sequential 12345, palindromic abcba) add up to +25 bonus points; 0-leading chunks subtract up to −15. Then four modifiers stack on top: TX (your wallet's transaction count, logarithmic), HOLD (days you've owned the Mirror), COLLECTOR (+10 per 5 Mirrors held, up to +100), and MOVES (+5 per marketplace sale up to +20, or −20 if a wash-trade pattern is detected). The visible rank circle caps at 100; behind the scenes the raw score keeps climbing.
Crossing rank 50 earns the 50% Club badge; reaching rank 100 earns the 100% Club badge (gold, with sparkles). Both clubs unlock the rotation system: at 50%+ your Mirror's animation, line style, and marker shape all re-roll every Monday at 00:00 UTC; at 100% they re-roll every day. The rotation is deterministic per token, so every viewer sees the same change at the same moment.
Hold your Mirror for 365 days. At that point your BOOST transitions to logarithmic growth — it never stops climbing, and your rank circle picks up a distinct violet treatment in the overlay.
The art redraws around the new owner's wallet — different hex chunks, different rank, different composition. The hold-time BOOST resets to 0% and the clock starts again. Each new owner begins their own journey.
The HTML artwork is stored permanently on Arweave (decentralized, immutable). The token's metadata is reachable on-chain via tokenURI() on the contract. Nothing depends on this website — your Mirror lives independently.
No. Transaction count grows logarithmically forever, and the OG hold-time curve also grows without a cap (with diminishing returns to stay aesthetically composed). Your Mirror is always becoming.