What is Robbins

Robbins is 10,000 pixel robin birds living on Robinhood Chain. Each bird is an NFT, and each NFT is tied to exactly one whole $ROBBINS token. There's no mint page and no allowlist. You get a bird by holding a token, and you get a token by buying it from the pool with SPY, Robinhood's tokenised S&P 500 ETF.

Three things make it different from a normal NFT drop:

ERC-404 explained

A normal ERC-20 is a number in a table: address to balance. A normal ERC-721 is a list of ids, each with one owner. ERC-404 is one contract that keeps both in sync from a single source of truth, the token balance.

The rule is simple. For every whole unit of token an address holds, it also holds one NFT id. When the balance crosses a whole number going up, an NFT mints. When it crosses going down, an NFT burns. Fractions below one whole token are just tokens with no bird attached.

DN404, the version we use

The original ERC-404 was one contract answering to both ERC-20 and ERC-721 calls. Because the two standards share function names with different meanings, it confused wallets, explorers and marketplaces. DN404, written by Vectorized, splits it into two contracts:

Both contracts are deployed together in one transaction and linked permanently. There's no way to mint a bird without holding the token, and no way to hold a whole token without a bird.

Skip-NFT

Minting and burning costs gas, and some addresses never want birds, for example the liquidity pool. DN404 gives every address a skip flag. Contracts have it on by default, wallets have it off. So the pool holds thousands of tokens and zero birds, while your wallet holding 3 tokens holds 3 birds. Any wallet can flip its own flag if it only wants to trade the token side.

What a trade does

You buy 3.4 ROBBINS. Balance 3.4. Three birds mint to you. The 0.4 sits as a fraction.
You buy 0.6 more. Balance 4.0. A fourth bird mints.
You sell 1.5. Balance 2.5. Two birds burn. DN404 picks from the ones you hold.
You buy back to 3. Balance 3.0. A brand new bird mints with a fresh id and fresh traits.

That last line is the reroll mechanic. Traders reroll their birds without meaning to. Collectors who like a specific bird simply don't sell below the whole number.

Transfers between wallets

Sending whole tokens directly to another wallet moves the birds with them, ids intact. DN404 uses direct NFT transfer whenever possible instead of burning and re-minting. Sending 2.0 tokens to a friend gives them 2 of your actual birds.

Sending an NFT

You can also transfer a bird from a marketplace or wallet as an ERC-721. That moves exactly one whole token with it. The two views never disagree.

Gas

Every buy or sell that crosses whole numbers mints or burns NFTs, so a swap costs more than a plain token swap. Buying 100 birds in one go is 100 mints. Robinhood Chain gas is a fraction of a cent, so this is fine here and would be painful on Ethereum mainnet.

The art

Every bird is a 36 by 36 pixel sprite built from layers, the classic 10k-PFP way. One base robin was drawn, then every trait was drawn on top of it and diffed against the base at the pixel grid, so each layer is pixel-exact and lines up with every other layer.

Layers draw in a fixed order: body, accessory, mouth, eyes, hat. So a cig always sits over a hoodie and a hat always sits over headphones. Any body-coloured pixels inside a hat or eye layer are recoloured to match the chosen body, so no orange specks on a gold bird.

All 10,000 combinations were generated with weighted randomness from one fixed seed and checked for uniqueness. The resulting trait table is what got written to the chain. It will never change.

On-chain renderer

Most NFTs are a link. The contract stores a URL, the URL points at a server or IPFS, and the picture lives there. If the server dies or the pin lapses, the NFT is a broken image. Robbins doesn't do that.

The RobbinRenderer contract holds:

When a wallet or marketplace calls tokenURI(id), the renderer looks up the bird's six trait indices, composites the layers into a 36 by 36 buffer, converts each row into SVG rectangles, wraps the SVG in an OpenSea-style JSON with name and attributes, and returns the whole thing as a base64 data URI. Nothing leaves the chain. The result is deterministic: same id, same picture, forever.

The token contract points at the renderer through a setter that the deployer can lock. Until it's locked, art bugs can be fixed by pointing at a corrected renderer. Once locked, the art is frozen permanently.

Traits & rarity

Counts below are read live from the same trait table that lives on chain. Lower count means rarer.

The SPY pool

$ROBBINS trades in a Uniswap v4 pool on Robinhood Chain, paired with SPY. SPY here is Robinhood's tokenised S&P 500 ETF, one of the official stock tokens on the chain, the same tokens long.xyz launches pair with.

Single-sided seed

The pool was created with $ROBBINS only and no SPY, in a price range starting at the launch price and running up to 100 times that. This is how launchpads work. Buyers pay SPY and push the price up the curve, sellers get SPY out and push it down. Nobody had to put up thousands of dollars of SPY, and there's no team wallet holding a pile of SPY from day one.

Locked forever

The liquidity position is owned by a small seeder contract that has no withdraw function. The tokens and the SPY in the pool can never be pulled. The only thing the deployer can do is collect the 1% swap fee that accrues to the position.

What the price means

The pool quotes birds in SPY. If one bird costs 0.0015 SPY and SPY is at $660, a bird is about a dollar. Because SPY itself barely moves day to day, the dollar price of a bird tracks the pool almost exactly. The pool trades 24/7 even when the stock market is closed.

Fee

1% per swap, paid in the input token, credited to the locked position. Contracts and hooks on the pool: none. Tick spacing: 200.

How to buy

  1. Get a wallet that supports custom EVM chains: MetaMask, Rabby, or the Robinhood wallet.
  2. Get some ETH on Robinhood Chain for gas. A dollar lasts a long time.
  3. Get SPY on Robinhood Chain. Robinhood app users in supported regions can withdraw stock tokens directly. Otherwise buy SPY through long.xyz or any DEX on the chain.
  4. Go to the buy widget, connect, enter an amount of SPY, approve, buy. The site will add Robinhood Chain to your wallet if it's missing.
  5. Your birds appear in your wallet's NFT tab. Some wallets take a minute to index the mirror contract.

Selling is the same in reverse. Whole birds fly away as your balance drops below each whole number.

Contracts

WhatAddress
$ROBBINS token (DN404)not deployed yet
Birds NFT (DN404Mirror)not deployed yet
Renderer (art)not deployed yet
Swap router (site)not deployed yet
SPY
Uniswap v4 PoolManager
ChainRobinhood Chain, id 4663, Arbitrum Orbit

Supply: 10,000 $ROBBINS, 18 decimals, one whole token per bird. No mint function. No tax. Renderer swappable by the deployer until locked, then frozen.

Why this is a first

ERC-404 tokens exist on Ethereum, Base, Solana and a handful of other chains. None exist on Robinhood Chain, and none anywhere are paired against a tokenised stock. Robbins is the first ERC-404 on Robinhood Chain and the first one priced in an equity.

The combination is the point. Robinhood Chain is the only place where official tokenised stocks sit on a cheap EVM next to memecoins. A 404 needs cheap gas because every trade mints or burns NFTs. And pricing a collectible in an index fund is a joke that only works here.

FAQ

Can I pick which bird I get?

No. Ids are assigned by the contract as you cross whole numbers. Trade in and out to reroll, or buy a specific bird on a marketplace if one lists Robinhood Chain.

If I sell 0.1 tokens, do I lose a bird?

Only if that drops you below a whole number. Holding 3.0 and selling 0.1 leaves 2.9, so one bird burns. Holding 3.5 and selling 0.1 leaves 3.4, no change.

Which bird burns when I sell?

DN404 takes from the end of your list, the most recently received. If you want to keep a specific bird, keep enough whole tokens that it's never the one on the chopping block, or move it to a separate wallet.

Why do I see the token but not the NFTs in my wallet?

Wallets index new NFT contracts on their own schedule. Add the mirror contract address manually in the NFT tab if it doesn't show after a few minutes.

Is there a team allocation?

A small amount is held back from the seed for giveaways and testing. Everything else went into the locked pool.

Can the art change?

Until the renderer is locked, the deployer can point the token at a fixed renderer to correct a bug. After locking, never.

Risks

Robbins is an experiment and a meme. The token has no intrinsic value, no promises, and no roadmap beyond what's on this page. The pool is thin at launch and the price can move a lot on small trades. SPY on Robinhood Chain is a token issued by Robinhood with a blocklist, so an address they block can't trade it. Smart contracts can have bugs. Only put in what you're happy to lose, and read the contracts yourself. Not affiliated with Robinhood. Nothing here is financial advice.