
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.
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.
PRICE
FREE
MAX/WALLET
5
* 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.