seven degen sloopbirds in a purple post-apocalyptic crypto wasteland

sloopbirds
are tired,
and so are we.

1024 burnt-out owls watching the chart go up while their landscape crumbles. each one was passed through a tiny image model — small enough to fit in contract bytecode — that tries to redraw it from a 10-byte embedding and gets it satisfyingly wrong. the gap between what the model produced and what was supposed to be there is the slop.

⌁ 01 / THREE VIEWS

same bird, two attempts, one truth.

sloopbirds
original
render

the centre is the canonical sloopbird — what was painted, fed in, and stored. either side: two reconstructions, neither right. the count below is how many of the 576 pixels the left model got wrong.

⌁ 02 / MINT

adopt one.

0/1024

PRICE

FREE

MAX/WALLET

5

1

* default mintPrice = 0. the deployer flips it on when ready. nothing to mint until then. you can already check the contract on etherscan if you’re curious.

⌁ 03 / THE MODEL

argmax of a tired dot product.

slot[token, p]   = argmax_k dot( embed[token], head[p, k] )
palette_idx      = candidates[p, slot]
rgba             = PALETTE_RGBA[palette_idx]

no decoder, no attention, no fp16. each pixel has its own little vocabulary of K=18candidate colours. a learned head decides which one wins. that’s the entire model. it lives in 135kb of bytecode.

VOCAB

1024

EMBED

10

CANDIDATES

K=18

PALETTE

256

⌁ 04 / LIVE SLOP

never stored.
always recomputed.

the slop value isn’t saved anywhere on chain. every metadata read recomputes it by walking the 576 pixels of the model’s render and the 2,304 RGBA bytes of the canonical sloopbird. they disagree. the count is your token’s slop.

for pixel in 0..576:
    color   = PALETTE_RGBA[ generated[pixel] ]
    differs = color != originalRgba[pixel*4 : pixel*4+4]
    if differs:
        mask[pixel/8] |= 1 << (7 - pixel%8)
        count += 1

slop = count
tier = slop / 50           // floor

⌁ 05 / MERGE LAB

burn one to make another weirder.

two same-level sloopbirds fuse. the donor is destroyed. the survivor inherits an embedding that’s the element-wise mean of the two — so the render drifts further from the original, and the slop usually goes up. that’s the trade.

⌁ ENTER THE LAB ⌁

⌁ 06 / CONTRACTS

six contracts. one differentiator.

⌁ NFT

Sloopbirds

ERC-721 shell. mint, supply, ownership, blockhash reveal.

⌁ MODEL

SloopbirdsImageModel

tiny candidate-palette inference. lockable post-deploy.

⌁ MERGE

SloopbirdsMergeManager

same-level merge. burns donor. SLOOP-gated.

⌁ RENDER

SloopbirdsRenderer

tokenURI builder. computes slop live every read.

⌁ DATA

MoonbirdsData

on-chain mirror of 1024 birds at 24×24. the differentiator.

⌁ TOKEN

Sloop (SLOOP)

ERC-20. burned on every merge. 1B supply, single-sided V4 LP at launch.