DOCS
How the alley works, where the money goes, and how to verify every claim on this page yourself. Everything here is enforced by verified contracts on Robinhood Chain — the chain is the documentation; this page is the map.
CURRENT STATUS#
These numbers are read live from the production contracts on every page load, not hardcoded. /alley serves the same vitals as JSON.
THE SHORT VERSION#
$SCRATCH is a DN404 token with 6,561 whole units (94), trading through one canonical ETH/$SCRATCH pool on Uniswap v4. Hold a whole liquid token and a stray appears in your wallet — every stray is the same cat, and it dissolves if you sell below a whole unit.
Adopt a stray and it becomes a real cat: named forever, 1.0 $SCRATCH sealed inside, one of nine hidden types fixed before mint. Adoption is one-way. From then on the cat lives on a food clock: feed it or it starves, and starving cats get hunted for the ETH they guard. Nine lives; the ninth death is a permanent memorial.
Food is the experience. One Food lasts 24 minutes on the clock and pays 1 XP as it digests. XP levels reveal the cat's true look — and the combat stats attached to it. Meal money doesn't go to us: it market-buys $SCRATCH on the pool and burns it.
Every swap pays a permanent 2.5% toll enforced by the pool's hook, not by this website: 1.5% of volume flows to living cats by rarity weight, 1.0% funds the treasury. Token-side tolls burn whole. That is the entire system: a tamagotchi with real stakes, a hunt for the lapsed, and a fee engine that feeds the committed. Every section below expands one claim and names the contract that makes it true.
GLOSSARY#
The vocabulary is proprietary on purpose. Every term used on this page:
| Stray | The NFT mirror of 1.0 liquid $SCRATCH. Every stray is the same cat. Materializes when your balance crosses a whole unit, dissolves when it drops below. |
| Cat | An adopted stray: named forever, 1.0 $SCRATCH sealed inside, a hidden identity fixed before mint. Adoption is one-way. |
| Soul | The 1.0 $SCRATCH escrowed in a living cat. Leaves circulation for the cat's entire life. |
| Scratch Food | The feed unit: 1 Food = 0.00016 ETH (~$0.40), lasts 4 minutes on the clock, pays 1 XP when digested. Snack 5 / Meal 12 / Feast 30. |
| Digestion | How XP works: food on the clock converts to XP continuously, credited on the next touch. A feast = 2 hours = 30 XP. |
| Vault | ETH sealed inside the cat: its share of trading reflections, won stalk stakes, and duel loot. No withdraw exists — the vault rides with the cat when sold. Loot for hunters if the cat starves. |
| Incoming | Reflections earned but not yet settled into the vault. Lands automatically on the next touch. |
| Streak | Consecutive feeds that landed before the bowl ran dry. Starving resets it. |
| Starving | A cat past its fedUntil clock. Feedable by anyone, huntable by everyone. |
| Stalk | A staked bet that a fed cat will starve within 6 hours. Defended = the stake joins the cat's vault. Expired = the stalker claims a chunk into their own cat's vault. |
| Pounce | The duel: your cat vs theirs, blows alternating until one bar empties. Loser drops a life and its whole vault; the defender can absolutely win. Attacking drops your own shield. |
| Shield | Six hours of pounce-immunity from a pet. Free, chainable, forfeited the moment your cat attacks. |
| Nap | The 24h sleep after losing a life. Napping cats can't be fed or hunted. |
| Rescue | A cat untouched (no feed, no pet, from anyone) for 30 days is re-adoptable by anyone at a level-scaled price. The rescuer inherits it whole — vault included. |
| Memorial | A cat on its ninth death. The NFT persists forever; the game ends for it. |
| Scratch Card | The daily lotto: ten tickets a day for the whole alley on a $1→$100 price ladder, XP-only prizes, commit-reveal odds. |
| Buyback | The permissionless crank that sweeps feed + card ETH into the pool as a market buy of $SCRATCH and burns everything it bought. |
| The Void | 0x…dEaD. What goes in never comes out. |
| Reveal | Level-gated unmasking of a cat's fixed identity: type at 1, backdrop at 2, item at 3, eyewear at 4, hat at 5. Death reveals all. |
| Weight | Reflection multiplier by type rarity, 1.0x (Tabby) to 3.0x (Gold). Attested on-chain at the level-1 reveal. |
STRAYS & CATS#
$SCRATCH is DN404: the token and the NFT are two views of the same asset. Hold 1.0 and a stray materializes; trade below it and the stray dissolves back. Strays are interchangeable by design — the same drawn cat, ID-unstable, earning nothing.
Adoption is the one-way door. It escrows 1.0 $SCRATCH inside the contract, mints the cat's permanent name, and seals its hidden identity from the provenance-hashed table. An adopted cat can never return to being a stray; its soul leaves circulation for as long as it lives, and every adoption shrinks the tradable float.
THE NINE TYPES#
Nine types, fixed before mint: three alive, three undead, three beyond. Rarer types carry more reflection weight.
| Type | Supply | Weight |
|---|---|---|
| Tabby | 1,458 | 1.0x |
| Tuxedo | 1,215 | 1.1x |
| Bones | 972 | 1.2x |
| Zombie | 810 | 1.4x |
| Alien | 648 | 1.6x |
| Void | 486 | 1.8x |
| Ghost | 405 | 2.1x |
| Cosmic | 324 | 2.5x |
| Gold | 243 | 3.0x |
THE REVEAL LADDER#
Every cat is born sealed: a gray silhouette hiding an identity that was fixed and hashed before the first adoption. Leveling unmasks it, one axis at a time:
| Level | XP | Reveals | And with it… |
|---|---|---|---|
| 1 | 30 | Type | reward weight attested on-chain |
| 2 | 90 | Backdrop | — |
| 3 | 180 | Item | attack bonus attested |
| 4 | 300 | Eyewear | HP bonus attested |
| 5 | 450 | Hat | defense bonus attested |
| Death | — | Everything | the memorial shows the whole cat |
The image and metadata render live from chain state on every request — the NFT is a living document. Marketplaces show the new look after their cache refreshes.
LIVES, HP & STATS#
Nine lives, 9 HP per life — nines all the way down (9 × 9 = 81 total damage to kill). A cat's wardrobe carries its combat stats, fixed before mint and hard-capped in the contract:
- Eyewear → bonus HP (up to +4; a Blindfold is the best armor in the alley)
- Item → bonus attack (up to +3 on the base 3)
- Hat → defense (up to −3 off every hit taken; the Crown floors most hits at 1)
Stats reach the chain via attestation at the reveal levels — the contract enforces the caps, the provenance hash proves nothing moved after mint.
SCRATCH FOOD#
Food is priced in ETH so a meal costs the same on a green day and a red one. 1 Food = 0.00016 ETH and lasts 4 minutes on the clock:
| Portion | Food | Clock | Heals | ~USD |
|---|---|---|---|---|
| Snack | 5 | 20m | +3 HP | $2 |
| Meal | 12 | 48m | +6 HP | $5 |
| Feast | 30 | 2h | full | $12 |
Anyone can feed any cat — rescues are core. Pre-feeding stacks with diminishing returns (eff = ext × K / (K + ahead)), so money buys convenience but never invulnerability. New cats are born with one welcome feast: 2 hours of food.
DIGESTION = XP#
XP is not a reward for clicking — it is the food itself, digested. Every Food burned off the clock credits 1 XP (15 XP per hour while fed), lazily accounted on the next touch and served live by xpOf(). A fully digested feast is exactly 30 XP. Starved gaps earn nothing.
Two side dishes: battle pays — +30 XP to a duel's winner and +10 to its loser, once per day per cat — and Scratch Cards pay food-sized prizes. Levels are triangular in feasts — each level costs 30 XP more than the last (level 1 = 30 XP = one feast, level 5 = 450 = fifteen) — and drive the reveal ladder.
THE ACCRUAL, IN SOLIDITY
function _accrueXp(Cat storage c) internal {
uint40 last = c.lastXpAt < c.adoptedAt ? c.adoptedAt : c.lastXpAt;
uint40 upTo = uint40(block.timestamp) < c.fedUntil
? uint40(block.timestamp) : c.fedUntil; // digestion stops when food runs out
if (upTo > last) {
uint256 earned = (upTo - last) / XP_SECONDS; // 240s: one Food, one XP
if (earned > 0) c.xp += uint32(earned);
c.lastXpAt = last + uint40(earned * XP_SECONDS);
}
}
PETTING#
Survival is free; growth is not. Pet your cat (owner-only, once every 6 hours) and it gets a 6-hour shield: it cannot be pounced, even while starving. An active owner chaining pets keeps a cat alive forever without spending a cent — it just stops earning XP when the food runs out.
- Attacking drops your shield. The moment your cat pounces someone, its own shield clears — hunters stand in the open.
- Shields don't defend stalks. A stalk is beaten only by feeding; petting can't cheese the bet.
- Three verbs, one line each: feed to grow, pet to stay safe, pounce to steal.
WHERE EVERY DOLLAR GOES#
No payment in the alley is ambiguous. Every inflow has one hardcoded route, enforced by the contracts rather than by this website:
The house never pays players — players pay players, and the house keeps crumbs. There is no route by which the team receives the cats' 1.5%: the split happens inside receive() before anything can touch it.
THE BUYBACK#
Feed and card ETH queues in lpPot. Anyone may call buyback(): the contract swaps the whole pot through the canonical V4 pool — the ETH stays inside the LP forever — and takes the bought $SCRATCH directly to the void in the same transaction. The tokens never even touch the game contract. Every meal is a market buy you can point at.
THE SWAP, IN SOLIDITY
function unlockCallback(bytes calldata data) external returns (bytes memory) {
if (msg.sender != address(POOL_MANAGER)) revert NotPoolManager();
uint256 ethIn = abi.decode(data, (uint256));
BalanceDelta delta = POOL_MANAGER.swap(_poolKey(), SwapParams({
zeroForOne: true, // ETH in, SCRATCH out
amountSpecified: -int256(ethIn),
sqrtPriceLimitX96: TickMath.MIN_SQRT_PRICE + 1
}), "");
POOL_MANAGER.settle{value: ethIn}(); // the ETH joins the LP
uint256 bought = uint256(uint128(delta.amount1()));
POOL_MANAGER.take(Currency.wrap(address(scratch)), VOID, bought); // straight to 0xdead
return abi.encode(bought);
}
REFLECTIONS#
1.5% of every swap's volume accrues to living cats only, weighted by type rarity (1.0x–3.0x), through a masterchef-style accumulator — continuous, snapshot-free, and ungameable by just-in-time adoption (the pot flushes to existing cats before a newborn enrolls).
Reflections land in the cat's vault — sealed inside the cat, no withdraw path — where they must be defended like any other ETH: a starving cat's vault is hunter loot. Dead cats earn nothing; their weight leaves the pool at the moment of death.
THE FOUR BURN VALVES#
| Valve | What burns |
|---|---|
| Every meal | 93% of the ETH buys $SCRATCH on the pool; all of it burns. |
| Every scratch card | Same route, same fate. |
| Token-side tolls | The hook's $SCRATCH-side take burns whole via permissionless syncBurn(). |
| The ninth death | 1/9 of the sealed soul goes to the void. |
No mint function exists in the code. Supply only ever shrinks.
STALKING#
Stalking is a staked bet that a fed cat will starve. Stake at least 0.0003 ETH on someone else's healthy cat and a 6-hour clock starts:
- Anyone feeds it in time → the stake (minus a 10% rake) lands in the defender cat's vault. You paid the cat for showing up.
- Nobody feeds it → you claim a 20% chunk of its vault — into your own cat's vault, never your wallet.
- It gets pounced mid-stalk → your stake returns untouched.
One stalk per cat at a time; a beaten stalker has a 24h cooldown on the same target. A stalked cat wears a visible warning — stalking is as much a pressure device as a bet.
POUNCING & DEATH#
A starving, unshielded cat is huntable by any living cat — and a pounce is a duel to the knockout. Blows alternate, attacker first, each dealing attack − defense damage (floor 1), until one cat's HP bar empties. No RNG: the wardrobe decides fights, and the outcome is computable before you commit. Every blow lands on-chain as a Struck event.
The loser drops a life, naps 24h, and its whole vault rides home with the winner — in either direction: attack a crowned or blindfolded cat and your hunter can fall to its own hunt. Winners keep their scars (carried damage) until food heals them. On a ninth loss the cat becomes a memorial: the sealed soul pays 8/9 to the winner's owner and 1/9 to the void. Starvation alone never kills — death always has an author and a payout.
SCRATCH CARDS#
The bodega stocks ten cards a day for the whole alley, restocking at 00:00 UTC on a price ladder that climbs with every sale:
| Card | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| ~USD | $1 | $2 | $5 | $10 | $15 | $20 | $25 | $50 | $75 | $100 |
Prizes are food-sized bags of XP — +10 (50%) · +25 (30%) · +60 (15%) · GOLDEN +150 (5%) — and never money: the dice never touch the economy. The outcome seals against the buy block's own hash (commit-reveal), so neither side can pick winners, and the ticket money routes to the buyback like meal money. Buy as many as you can grab; one face-down card per cat at a time.
PROVENANCE#
Every cat's full identity — type, backdrop, wardrobe, and therefore stats and weight — was fixed by a salted table before the first adoption. Its SHA-256 hash is published and served live at /provenance; the salt stays sealed until the collection completes, at which point anyone can recompute the table and verify nothing ever moved.
reading /provenance…
VERIFY IT YOURSELF#
Every claim above is a cast call away (chain id 46630, RPC https://rpc.testnet.chain.robinhood.com):
# what a snack costs and how long it lasts cast call $GAME "feedPrice(uint256)(uint256)" 0 cast call $GAME "feedExt(uint256)(uint40)" 0 # a cat's XP, including food still digesting cast call $GAME "xpOf(uint256)(uint256)" 1 # the next card's price and today's remaining stock cast call $GAME "cardPriceNow()(uint256)" cast call $GAME "cardsLeftToday()(uint256)" # ETH queued for the next buyback, and everything ever burned cast call $GAME "lpPot()(uint256)" cast call $TOKEN "balanceOf(address)(uint256)" 0x000000000000000000000000000000000000dEaD # the solvency identity: balance == vaults + stakes + treasury + reflections + lpPot cast balance $GAME
LIVE CONTRACTS#
Robinhood Chain testnet (46630), all Blockscout-verified:
Live data: /alley · /cat/1 · /img/1.png · /provenance · /collection
FAQ#
No. Adoption is one-way by design — the soul is sealed for the cat's entire life. The only $SCRATCH that ever leaves a cat is the ninth-death payout.
It starves, gets hunted for its vault, loses lives one duel at a time, and eventually becomes a memorial. Starvation alone never kills it — but the alley will.
No — food is paid in ETH so meal prices stay stable. The contract then buys $SCRATCH with your ETH on the pool and burns it, which is strictly better for holders than you buying it yourself.
Stats and weights were fixed before mint and hash-committed; the contract hard-caps every bonus. Card odds are constants in verified code, and outcomes seal against a block hash neither side controls.
It leveled — the reveal ladder unmasked another axis. Metadata renders live from chain state; marketplaces catch up when their cache refreshes.
It's the best thing that can happen to you. Anyone may feed any cat — rescues, alliances, and hunter-denial are core mechanics. They paid; your cat ate.
The ladder: ten cards run $1 to $100, so buying the shelf costs ~$253 a day — all of it market-buying and burning $SCRATCH. We're fine with that.
RISKS#
Scratch Cats is experimental software on a testnet. Nothing on this page is financial, investment, legal, or tax advice, and nothing here is an offer to buy or sell any security. Reflections are promotional rewards for participating in the protocol — they are not dividends, and holding a cat or token grants no equity, ownership, or revenue rights in anything.
Crypto assets are volatile and can go to zero. Adoption escrow, feeding, cards, and the ninth-death burn are irreversible by design. This site is a user interface over permissionless contracts; the contracts are the truth and the only truth.
Never play with more than you can afford to lose completely.