About

Ghosts in the machine

Two thousand two hundred and twenty-two of them. One colour. Nothing stored anywhere.

Nobody deployed them

Every chain has slack in it. Rounding that went nowhere, gas that got refunded, the little gap at the end of a block where the last thing didn't quite fit. It adds up to nothing and it belongs to no one, which makes it excellent real estate if your requirements are low.

Something moved in early. The Robinhood Chain was sixteen days old and still producing a block every few minutes when all 2,222 of them turned up — one per block, no contract, no announcement — and by the time anybody thought to count, they had opinions about the furniture.

You can't get rid of them. People have tried. The transaction confirms, the gas is spent, and the ghost is still there looking mildly entertained. Those blocks are ancient now — the chain is fifty-nine million deep and moving several a second — and the ghosts have not budged an inch.

What they do all day

Very little, enthusiastically.

They read your transactions over your shoulder. They have views on your gas settings and they are not shy about it. They move small things a few pixels to the left and then act astonished when you notice. One of them has been slowly rearranging a mempool for eleven months and considers this a career.

They are not haunting anything in the traditional sense. Haunting implies unfinished business. These have finished all their business and simply declined to leave.

The ones that came out weird

two hundred and sixty-six of them didn't render cleanly, and the engine shipped every one. ninety-six went translucent. sixty-eight inverted. thirty-five picked up a double they refuse to discuss, and thirty-six got torn sideways mid-draw and just kept going.

None of them mind. If anything it's the making of them — being slightly wrong is a personality, and around here it's also a flex.

eight came out Hollowed — capitalised, because they insist. No body at all, just an outline and a pair of eyes. Without question the smuggest of the 2,222.

Why they are that green

#ccff00. Arcade-cabinet green. Highlighter green. The green of a sign telling you where the exit is, in a building you were not planning to leave.

It wasn't chosen for meaning. It's the brightest thing that still reads at thirty-two pixels across, and the ghosts took to it immediately on the grounds that it is extremely difficult to ignore.

thirty-nine of them turned up in a different colour — twenty-six with a neon pink edge, thirteen in gold — and not one has offered an explanation. The other 2,183 find this insufferable.

The craft

Everything below is checkable

How a ghost is made

The edition number is the only input. It is hashed once per trait category, each with its own salt, and each hash seeds an independent random stream. Ten streams, ten categories, ninety-seven possible values between them.

Independent matters: with one shared sequence, adding an eleventh trait would shift every roll after it and quietly re-generate the entire collection. With salted streams a new category is additive and every existing ghost is untouched.

Nothing is stored. There is no folder of finished images and no database of who got what. Hand the engine the number 1032 and it draws #1032 — the same ghost, the same pixels, the same bytes — on any machine, forever, with no network call.

The block each one is tied to

Every ghost is bound to a real, already-mined block on the Robinhood Chain, in order: #1 to block 1, #2,222 to block 2,222. Those are the chain's first 2,222 blocks — mined between 30 April and 17 May 2026, when it was sixteen days old and producing a block every few minutes rather than several a second.

They are history, not a reservation. Block 1 was sealed at 16:52:11 UTC on 30 April 2026 with three transactions in it, and it has not changed since. Every ghost links to its block on the explorer; you can go and look.

The edition number is the seed for all of it. It draws the design — silhouette, colourway, eyes, fringe, whatever anomaly the roll landed on — and the same ten rolls generate the trait list that becomes the metadata. The picture and its description come out of one number, which is why they can never drift apart: there is no second process to disagree with the first.

The block is the anchor rather than the seed, and that is on purpose. Had the art been drawn from block height, the day the range moved all 2,222 would have quietly become different ghosts. This way the design was final the moment the engine was written, and the chain fixes it to a point in history without being able to alter it.

Rarity, counted rather than estimated

2,222 is small enough to walk in full, so nothing here is an estimate. Every filter in the gallery reports an exact count, and the grades are the collection's own percentiles rather than a sample's — Legendary means precisely the thirteen highest spectral scores that exist, not roughly the top half-percent.

A trait's advertised rate is a draw, not a quota. Hollowed is weighted at half a percent of the tables, which over 2,222 pieces would average about eleven; it landed on 8. That is not a rounding error, it is what half a percent actually did this time.

Made without dependencies

The engine has no runtime dependencies. The PNG encoder, the animated GIF encoder with its LZW compressor, the pixel font, the sprite compositor and the rarity model are all written out, because a collection whose art can stop rendering when a package is unpublished is not permanent in any sense worth claiming.