HoodCats docs
Everything the protocol does, including the parts that require trust. If a claim here ever disagrees with the deployed contracts, the contracts win.
Overview
HoodCats is a 511 piece NFT collection of fully rendered hooded cats on Robinhood Chain wired to a rewards engine. The loop in one paragraph: the $CAT token trades on its launchpad and generates creator fees; 80% of that fee stream is forwarded to the engine as ETH every hour; each full hour the engine splits the arriving pot across every activated cat in proportion to its weight; the engine then buys each cat's chosen payout assets (HOOD, USDG and CASHCAT) and banks them in a vault keyed by token id; the holder claims for free whenever they like.
Three contracts run this:
HoodCats- the ERC-721. Minting, activation, tiers, fusion, royalties. Holds no user funds.RewardsEngine- the hourly accountant. Receives fee ETH, settles rounds, swaps into assets, credits the vault.CatVault- the bank inside the NFT. Balances keyed by token id, claimable only by the token's current owner, with no fees and no admin path to the assets.
The collection
Minting
Flat price of 0.0025 ETH per cat, up to 5 per transaction, 511 ever. Mint ETH forwards straight to the treasury; the NFT contract never holds it. Contracts cannot mint (wallets only), which matters for fairness, below. One reserve token may be minted by the deployer before the public mint opens, purely so the marketplace collection page exists; it draws from the same shuffle as everyone else and counts toward the 511.
The fair draw
Each mint draws its artwork from the pool of unclaimed pieces with an on-chain Fisher-Yates shuffle. The random seed includes the previous block's hash, which did not exist when the buyer signed, so neither buyers nor the deployer can steer an assignment. Blocking contract callers stops the classic trick of wrapping the mint in a contract and reverting unless a rare piece was drawn.
Sealed until reveal
Every token shows the same sealed card until reveal, then the entire set opens at once. Assignments exist on chain from the moment of mint; reveal only controls readability. If the mint stalls, anyone can trigger the reveal 30 days after minting opened, so a lost deployer key can never leave holders sealed forever. Metadata cannot be repointed once minting opens.
Traits, rarity and royalties
Each piece is composed across twelve trait axes: Fur, Eyes, Robe, Weapon, Background, Ear Piercings, Markings, Aura, Pendant, Expression, Scars and Companion. From those traits every piece gets a Rarity Rank from 1 to 511, baked into its metadata alongside a Rarity Tier: Common, Uncommon, Rare, Super Rare, Ultra-Rare, and a single Secret one-of-one. Ranks are fixed before mint and dealt by the same sealed draw with the same odds for everyone; nobody can aim for a top rank. Resales pay a 5% royalty to the treasury under ERC-2981, on marketplaces that honour it.
$CAT and the fee stream
The $CAT token is not minted by these contracts. It launches separately on the Pons launchpad, and its trading fees are the protocol's only revenue source. The commitment: 80% of the creator fee stream is converted and forwarded to the engine as ETH, every hour.
Say it plainly: that forwarding is done by the team off chain. No contract forces it. This is the protocol's largest trust point and it is listed again under Trust points.
Inside the protocol $CAT has exactly one direction: the fire. Activation burns 25,000, tier upgrades burn up to 850,000 cumulative per cat, fusions burn 50,000 to 150,000. Every burn is a transfer to the dead address and is permanent. Holding $CAT is never required to mint.
Activation and sleep
A freshly minted cat is asleep and earns nothing. Burning 25,000 $CAT wakes it. The first activation also sets the tier base (Tier I).
Any transfer, sale or otherwise, puts the cat back to sleep. The new owner burns 25,000 $CAT to wake it again; this re-activation is an entry fee only and never changes the tier. Nobody else can deactivate a cat: not the team, not the engine, only a transfer.
To stop boundary sniping, a cat that wakes mid-hour starts earning from the next full hour. See Hourly rounds.
Tiers and weight
A cat's earning weight is set by the cumulative $CAT burned into it:
| Tier | Cumulative burn | Weight |
|---|---|---|
| I | 25,000 | 1.0x |
| II | 75,000 | 1.4x |
| III | 150,000 | 1.9x |
| IV | 300,000 | 2.5x |
| V | 850,000 | 3.5x |
Upgrades are cumulative, so moving from Tier I to Tier III burns 125,000 (the difference), not 150,000. There are no refunds and no downgrades. The tier belongs to the token forever: it survives every sale and every sleep. A tier upgrade on an already awake cat applies immediately; the burn costs far more than one hour's marginal yield, so there is nothing to snipe.
Fusion
Fusing merges 2 or 3 of your cats into one. The first cat listed survives; the others are burned as NFTs and are gone forever. Nothing can ever be re-minted, so the collection only shrinks.
Costs
- Fusing 2 cats: burn 50,000 $CAT. The result is a 2-part cat.
- Fusing 3 cats at once: burn 150,000 $CAT total. The result is a 3-part cat.
- Adding a third cat to an existing 2-part cat: burn 100,000 $CAT.
- 3 parts is the hard cap. A 2-part cat cannot fuse with another 2-part cat.
What the survivor gets
The absorbed cats' tier weights are added to the survivor's, then the whole sum takes a bonus: +20% at 2 parts, +30% at 3 parts. The survivor also inherits everything the absorbed cats owned: vault balances merge, undelivered ETH credit moves over, and any owed fallback balances follow. Nothing strands on a dead token id.
The fused artwork follows rarity: the cat with the best Rarity Rank among the fused pieces carries the flag, and its portrait wears a metallic aura frame with perimeter sparks, silver for a two-part fusion, gold for the full three. The absorbed artwork ids are still recorded on chain in the survivor, so the complete fusion history can always be rebuilt.
Hourly rounds
Rounds are simply clock hours: round number equals the timestamp divided by 3600. Fee ETH arriving during hour N buffers into the pot and pays the cats that were live through hour N. When the hour ticks over, the pot spreads across total live weight through a global accumulator, which makes settling O(1) no matter how many cats are awake.
Anti-snipe rule: a cat entering the pool starts earning from the next round, never the current one. Weight decreases and deactivations apply immediately.
Two paths keep the engine's view of every cat honest:
- Hooks. The NFT pushes activation, deactivation, weight changes and absorbs to the engine the moment they happen. Hooks are fire-and-forget: if the engine ever reverts, the NFT action still succeeds. A broken engine must never brick anyone's token.
- Sync. Anyone can call a permissionless sync that copies the truth straight from the NFT. Callers pay gas but cannot influence the numbers, so a missed hook is only ever a delay.
Delivery and the TWAP guard
Delivery turns a cat's accumulated ETH credit into its chosen assets. A keeper calls it hourly, but the call is permissionless: anyone can deliver.
- Each cat's credit splits across its chosen assets by its saved percentages. The choices are HOOD (Robinhood stock tokenized by Ondo, on-chain symbol HOODon), USDG (stablecoin) and CASHCAT (memecoin), in any mix totaling 100%. Never picked? The whole credit goes to USDG.
- The engine pools all cats' demand per asset and makes one swap per asset, then shares the output pro rata. Fewer swaps, less slippage, same fairness.
- Every swap is guarded by a 30 minute TWAP price check with a capped slippage tolerance (at most 5%). If the live price strays too far from the time-weighted average, the swap reverts and is skipped, so a manipulated pool cannot drain a pot.
- HOOD buys route through the Ondo tokenized stock pool. If that pool's price history is briefly too thin for the TWAP check to verify, that hour's HOOD share simply rolls into a later delivery as ETH credit. Nothing is lost.
- A skipped or failed swap hands the ETH straight back as credit. It rides into a later delivery. Nothing is lost, one bad asset can never cost another asset's holders their round.
- Dust rule: an asset pot below the minimum swap size waits for a later round instead of wasting gas on a micro swap.
- If a payout cannot land (for example a token that a recipient contract refuses), the amount is recorded as owed to the token id and stays claimable forever.
Collect mode
Each cat chooses where delivery lands: the vault (default) or straight to the owner's wallet. Vault mode is what makes a loaded cat sell loaded; wallet mode is for holders who want assets in hand every hour. Switch any time.
The vault
The vault is a bank whose accounts are token ids, not addresses. When the engine delivers in vault mode, the bought assets transfer into the vault and are credited to the cat. Sell the cat and the balance goes with it; the buyer claims what the token holds.
Hard rules, fixed at deploy:
- Only the engine can credit, and only during delivery. The ledger moves together with the real tokens.
- Only the current owner of a token can withdraw that token's assets, and they can only ever go to that owner.
- There is no fee and no parameter to add one.
- There is no admin path to the assets. The engine can credit and merge; it can never withdraw.
- Fusion merges the absorbed cats' balances into the survivor.
Claiming
Direct
The owner calls claim and every asset the token holds transfers out to them. A single-asset claim exists too. Cost: network gas only.
Gasless
The owner signs a 32 byte message (a hash of the vault address, the chain id, the token id and a per-token nonce) with a normal personal_sign. The keeper submits the signature and pays the gas. The vault checks the signature recovers to the token's current owner and pays only that owner; the keeper can never redirect a claim, only fund it. The nonce bumps on every use, so a signature cannot be replayed, and the chain id in the hash stops replays across chains.
Trust points
This section exists so nobody has to discover these in the code. HoodCats is not trustless end to end. Here is exactly where trust sits.
What you must trust
- The fee stream is an off-chain commitment. The 80% forwarding of $CAT creator fees to the engine is performed by the team. No contract enforces it. If the team stops forwarding, earnings stop.
- The engine owner can rescue funds held by the engine.
rescueEthandrescueTokencan sweep whatever sits in the engine, including a pot that has not yet been delivered. This exists because a fee-swap protocol before this one locked its engine's ETH forever with no escape hatch; the same valve that prevents that is also a power you are trusting the owner not to abuse. Assets already delivered into the vault are out of its reach. - Engine parameters. The engine owner registers payout assets and their pools, and can tune the minimum swap size and the slippage tolerance (capped at 5% in code). A hostile owner could add a bad asset or route; a lazy one could leave a broken route in place.
- Keeper liveness. Hourly delivery and gasless claims rely on a keeper being run. Delivery itself is permissionless, so anyone can step in, but someone has to. If nobody calls, credit accrues safely and waits.
- Off-chain services. Artwork files, metadata and the gasless relay are web infrastructure. If they go down, on-chain state is untouched but the site experience degrades.
What you do not have to trust
- Nobody can deactivate your cat, change its tier, take its fuse bonus, or block a transfer.
- Nobody can withdraw from the vault except the token's current owner, and nobody can add a vault fee.
- Nobody can re-mint a burned cat, un-burn $CAT, or mint beyond 511.
- Before the mint opens the deployer wires the token and engine addresses once each; those wirings are one-shot. The deployer can also renounce every remaining power permanently.
- A broken engine cannot brick the NFT: every hook is fire-and-forget and a permissionless sync repairs any missed update.
Contracts
Addresses appear here once deployed. Until then this table reads "not deployed yet".
| Contract | Address |
|---|---|
| HoodCats (NFT) | not deployed yet |
| RewardsEngine | not deployed yet |
| CatVault | not deployed yet |
| $CAT token | not deployed yet |
Chain: Robinhood Chain (id 4663). Explorer: Blockscout.
Risks
- Volume risk. Every reward comes from $CAT trading fees. No trading, no rewards. Volume on new tokens usually decays.
- Asset risk. HOOD is a tokenized stock, not stock ownership. Its price tracking depends on the issuer and market depth, and it can fail. USDG is a stablecoin with stablecoin risks. CASHCAT is a memecoin: expect violent swings and accept that it can go to zero.
- Smart contract risk. Bugs happen, even in carefully written and tested code. Do not stake more than you can lose.
- Trust risk. The points listed above are real powers held by real people.
- Liquidity risk. NFTs are illiquid. $CAT burned into a cat cannot be taken back out; it is only ever reflected, maybe, in the cat's resale price.
- Regulatory risk. Tokenized equities and NFT reward schemes sit in an evolving legal space. Rules can change under this protocol.
None of this page is financial advice. It is a description of a machine, including its sharp edges.