Documentation // World of Hoods

The Complete Manual

Rob the rich, win tokenized stocks, and get paid on-chain. This manual covers every system in the game — combat, the economy, Wall Street events, housing, PVP — plus a full technical chapter on the architecture and security model for developers and code reviewers.

Chapters

26 sections

Loot tokens

16 real tickers

Prices

live on-chain

Economy

server-authoritative

01 // Getting Started

Your First Minutes

Create a character, learn the controls, and take your first steps in the world.

Pick a username and you are in — no wallet connection required. You can optionally connect a MetaMask wallet on the Robinhood chain to tag your account for on-chain rewards; you can also recover an existing character by entering the same username later. You spawn at the Highgate plaza with a starter kit.

World of Hoods is a live multiplayer world. Other online players move around you in real time, you share one chat, and you can challenge each other to duels in the arena.

Wooden Sword

starter weapon

Axe + Pickaxe

gathering tools

Fishing Rod

catch fish

2x Potion

emergency heals

Controls

Everything is mouse + keyboard, and works on touch screens too.

  • Move: click the ground, or use W A S D / arrow keys.
  • Attack: click a mob, or press Space to swing at the nearest enemy in range.
  • Gather: click a tree, rock, coal node, or water ripple with the right tool in your satchel.
  • Interact: walk up to a building or object — a glowing prompt appears. Click it to enter.
  • Close menus: press Esc at any time.
TipHeal at the plaza fountain between runs — standing near it slowly restores HP for free.
RecoverLogging in with the same username on a new device restores your progress from the server.

02 // Getting Started

The World at a Glance

A tour of every region, from the safe plaza to the dangerous Hollow.

The map is one seamless island. Highgate plaza anchors the north-east; the wilderness grows more dangerous as you travel south and east. You can build your own house anywhere on open grass (see the Housing chapter).

  • Highgate Plaza (NE): the safe hub — fountain, Store, Bank, Casino, Tavern, and Armory ring the square.
  • Mirror Lake (center): fishing spots and the Roast Pit on its shore.
  • Cloudtop Pasture (NW): open grazing land, good early gathering.
  • Thornveil Forest (SW): dense trees and ore nodes.
  • The Sinkhole (S): the roped PVP / training arena.
  • The Hollow (E edge): dark grass marks the deadly wilderness.
  • Frostpeak (NE snowfield): a frozen biome with an iced pond and the Taming Pen, where you befriend animal companions.
  • Emberfall Quarry (E mesa): a lava-veined Mining Cavern rich in ore, ember gems, and frost crystals — gated by Gathering skill.
  • Grand Coliseum & Derby Pier:a PvP coliseum north of the Sinkhole and a fishing-tournament pier on Mirror Lake's south shore.
DangerThe Hollow along the eastern edge is dangerous — wolves, skeletons, and the Warlord roam there. Everywhere else, mobs only aggro inside the arena ropes.

03 // Core Loop

Wood, Stone, and Coal

Harvest raw materials, level your Gathering skill, and feed crafting and quests.

Click a tree with an axe to chop wood; click rock or coal nodes with a pickaxe to mine. Gathering levels up your separate Gathering skill (the green bar) which unlocks farming and higher-tier activities. Materials are also the backbone of housing — every house costs wood and stone to build.

Wood

build + cook

Stone

build

Coal

sell / craft

Gather XP

green bar

EfficiencyNodes respawn after a short while. Rotate between a few trees instead of waiting on one.
StockpileBank spare wood and stone so a death never costs you a house's worth of materials.

04 // Core Loop

Spacing, Tempo, and Rewards

Melee fundamentals, where to grind, and how gear and levels scale your power.

Melee only — click a mob and your hood closes the gap and swings automatically. Arena mobs (slimes, zombies, brutes) are the training ground. Wilderness mobs (dire wolves, skeletons, the Warlord) hit harder and drop far better loot.

Leveling raises your max HP and base damage. Armor reduces incoming damage. Upgrade your weapon from wooden to iron to steel, then save for the $WoH-only Hood Blade.

Level cap

60

On death

-10% gold

Respawn

at fountain

Best gear

Hood Blade

Wild RuleDon't enter the Wilderness before the arena feels easy. Dying costs 10% of your carried gold.
SurviveCarry cooked fish and potions. Topping off HP mid-fight wins more runs than raw damage.

05 // Core Loop

Life Skills

Catch fish at the lake and cook them at the Roast Pit for stackable heals.

Click the rippling fishing spots around Mirror Lake with a rod to catch raw fish. Walk to the Roast Pit on the shore and a Cook Fish prompt appears — each cook turns 1 raw fish + 1 wood into a Cooked Fish you can eat or sell.

Cook cost

1 fish + 1 wood

Cooked heal

+30 HP

Stacks

yes

TipCooked fish heal 30 HP and stack — bring a few into the Wilderness.

06 // Core Loop

Farming the Fields

Plant crops at the farm signpost for passive gold and Gathering XP.

Once your Gathering skill is high enough, visit the farm signpost to plant crops in open plots. Crops grow over real time; come back to harvest them for gold and Gathering XP. Farming never pays $WoH — it's a steady gold and XP sink, perfect while you wait on node respawns.

Yields

gold + XP

$WoH

never

Gated by

Gather level

PassivePlant before a combat run, harvest when you return — the timer ticks while you fight.

07 // Wall Street

Rob the Rich

Six Fat Cat nobles roam the Gilded Quarter with stuffed purses. Relieve them of it.

This is the heart of World of Hoods. Six rich nobles — Lord Pemberly, Baroness Vex, Count Grubb, Duke Fontleroy, Lady Goldworth, and Magnate Orin — wander their estates in Crownhaven's Gilded Quarter, marked by gold top hats, a bobbing $, and pulsing gold dots on your minimap. Walk up and hit the big Rob button.

Every rob is a gamble: most attempts succeed and pay gold that scales with your level — but get caught and a bodyguard clobbers you for a chunk of your HP. Each noble's purse needs time to refill after a successful hit, so rotate the whole quarter instead of camping one target. The goal tracker at the top of your screen always points an arrow at the nearest noble with a full purse.

Nobles

6 targets

Success odds

~70%

Caught

bodyguard hit

Purse refill

60s per noble

RouteBank → Casino steps → mansion row → plaza → garden. A full lap of the Gilded Quarter lines up perfectly with purse cooldowns.
Why rob?Robs are the only source of tokenized stock drops — every other activity pays gold or $WoH.

08 // Wall Street

Tokenized Stock Drops

Robs can drop real tokenized stocks — fractional shares of TSLA, NVDA, SpaceX, and more.

On top of gold, every successful rob rolls a server-side loot table of 16 real tokens: the CashCat memecoin plus 15 tokenized stocks on the Robinhood chain — AAPL, NVDA, TSLA, GOOGL, META, MSFT, AMZN, COIN, PLTR, AMD, ORCL, INTC, CRCL, HOOD, and SpaceX. Drops are tiny fractional shares — each one worth a few cents, sized at the live market price so a pumping token never inflates a drop's value.

One ticker is crowned the Hot Stock of the day — flagged with a flame on the ticker tape — and drops at double the normal rate all day. Your haul lives in the Portfolio (the Stocks button in the HUD): holdings, live street value in USD, payout history, and gifting to other players by username.

Tokens

16 tickers

Hot Stock

2x drops daily

Share sizes

fractional

Gifting

by username

  • Drop rolls happen on the serverwith a minimum interval between rolls, so scripted rob spam can't farm drops.
  • Amounts use integer micro-units (1,000,000 micro = 1.0 token) so fractional shares never hit floating-point rounding.
  • Big stock drops are announced in world chat automatically — flex included.
Hot StockCheck the flame on the ticker tape each day — robbing during a world event with the Hot Stock boost stacks multipliers.

09 // Wall Street

The Hood Exchange & Live Prices

Every price you see is anchored to the real on-chain market — not made up.

The scrolling ticker tape at the top of your screen, the sparkline charts, and your portfolio's street value are all driven by live on-chain prices. A price oracle batches every token's contract address to DexScreener, picks the highest-liquidity trading pair for each, and refreshes every 60 seconds — including the real 24-hour percentage change.

Between refreshes, prices get a tiny deterministic wiggle so the tape feels alive, but the anchor is always the real market quote. Tokens without an active trading pair yet fall back to realistic reference prices and go fully live the moment a pair exists.

Oracle

DexScreener

Refresh

every 60s

24h change

real market data

Pair pick

highest liquidity

lib/tokens/market.ts
// Prices anchor to the REAL on-chain quote (DexScreener, 60s refresh).
// The random walk on top is a hair of volatility, not the price itself.
function anchorPrice(def: TokenDef): number {
  const live = getLivePrice(def.id)
  return live && live.price > 0 ? live.price : def.basePrice
}

The Wall Street district

The Stocks button also opens the full Stock Market District: an Exchange floor charting all 16 tokens, an Events floor with the live Stock Rush board and King of Wall Street throne, and a Seasons floor with this week's five competitive leaderboards.

AccuracyIf CashCat pumps or dumps on-chain, your portfolio's street value follows within a minute.

10 // Wall Street

World Events & Stock Rush

Scheduled multiplier windows and a rob race every half hour — same clock for every player.

At the top of every UTC hour a world event fires, rotating between three flavors. The event banner under your goal tracker counts down to the next one, so you always know when to be in the Gilded Quarter.

  • Wall Street Shipment — 10 minutes of 3x stock drops and 1.5x rob gold.
  • Hedge Fund Vault — five frantic minutes of 4x stock drops.
  • Billionaire Gala — 10 minutes of 2x drops and 3x rob gold.

Stock Rush — the rob race

Every half hour, the last ten minutes (:20–:30 and :50–:00) are a Stock Rush: a live race counting every successful rob. When the window closes, the top 5 robbers are automatically paid a slice of the day's Hot Stock, first place earning over 6x the fifth-place prize. The live board — your score, the leader, and the countdown — shows in the banner strip and the Wall Street district.

World event

hourly, rotating

Stock Rush

every 30 min

Rush winners

top 5 paid

Settlement

exactly-once

lib/tokens/events.ts
// Wall-clock-derived schedule: every client AND the server compute the
// same window from Date.now() — zero server state, no cron drift.
export function rushWindow(now = Date.now()): RushWindow {
  const half = Math.floor(now / (30 * MIN_MS)) // 30-min slot index
  const startsAt = half * 30 * MIN_MS + 20 * MIN_MS
  const endsAt = half * 30 * MIN_MS + 30 * MIN_MS
  return { key: `rush_${half}`, startsAt, endsAt, active: now >= startsAt && now < endsAt }
}
StackingA Stock Rush that overlaps a world event is the single best earning window in the game — drop multipliers apply to rush robs too.

11 // Wall Street

King of Wall Street & Portfolio Wars

Duels have stakes now — a crown to steal and a cut of the loser's stock loot.

One player at a time holds the King of Wall Streetcrown. Beat the sitting king in a duel to take it — and pickpocket 10% of their carried gold (capped at 2,000) on the way out. The crown is worth defending: the king's rob drops are boosted starting at 1.25x and growing 0.05x per hour held, up to a 2x cap. Every coronation is announced in world chat.

Separately, every duel is a Portfolio War: the winner skims 5% of the loser's unpaid stock loot (capped per token), transferred atomically server-side. Carrying a fat unpaid portfolio into a duel is a real risk — get paid out first.

Crown steal

10% gold, cap 2k

King's boost

1.25x → 2x drops

Duel skim

5% of unpaid loot

Throne

one king at a time

DefenseHolding the crown overnight compounds — but every online player can see the throne. Expect challengers.

12 // Wall Street

Weekly Seasons & Crews

Five competitive boards reset weekly, and crews race for a shared score.

Every week is a fresh season with five leaderboards, all computed from the append-only event ledger since the week started: Portfolio Value (street value of everything you looted), Most Robs, PvP Wins, Rare Stock Hunters (rarest tickers looted), and Top Crews.

Crews are player-made gangs (create one for free, one crew per player, up to 12 members). Your crew's season score is the sum of every member's loot — recruit active robbers and climb the board together.

Season length

1 week

Boards

5 categories

Crew size

up to 12

Crews per player

1

CrewsA crew of daily Stock Rush grinders beats a crew of whales — the ledger counts activity, not balances.

13 // Wall Street

Real On-Chain Payouts

Stock loot isn't points — it's paid to your real wallet from funded treasuries.

Everything you loot accrues to a server ledger, and payouts send the real tokens on-chain. Robinhood-chain stocks (and CashCat) transfer as ERC-20s to your linked 0x wallet, with every transaction confirmed by receipt before it counts — a failed or pending send never advances your paid balance.

Your balance uses an earned-vs-paid watermark: only the confirmed on-chain amount ever advances the paid marker, so a failed transaction can never eat your balance, and nothing can be double-paid. If a token's treasury isn't funded yet, your loot keeps accruing and becomes claimable the moment it is.

Stocks + CashCat

Robinhood chain

Confirmation

receipt-verified

Double-pay

impossible

Unfunded token

accrues safely

  • Link your Robinhood-chain (0x…) wallet in the Portfolio for stock payouts; new accounts get a generated wallet at signup with the private key shown exactly once.
  • Every payout is written to a public ledger with its explorer-linked transaction hash.
  • Wallet addresses are validated server-side; only the public address is ever stored.
KeysThe game never asks for your private key or seed phrase after signup — payouts only need your public address.

14 // Town & Economy

Every Building is Interactive

Walk up to any structure in Highgate and a prompt lets you step inside.

Highgate's buildings are no longer just scenery. Approach any of them and a glowing action prompt appears in the center of your screen — click it (or tap) to open that building's interface.

  • Store: opens the marketplace to buy gear, tools, and potions.
  • Armory: opens the marketplace focused on weapons and armor.
  • Bank: your personal vault for gold and items (next chapter).
  • Casino: the Lucky Wheel and betting games.
  • Tavern: buy drinks for temporary attack buffs.
  • Blacksmith Forge: craft powerful gear from ore, coal, and gems.
  • Quest Board: opens your daily bounties for gold, XP, and $WoH.
  • Houses:any player-built home — buy it if it's for sale.
ShortcutMost building screens are also reachable from the HUD icons, so you never have to walk back to town.

15 // Town & Economy

Crafting, Mining, Fishing & Taming

Four new destinations across the expanded map add deep, non-combat progression paths.

The world has grown, and with it four new activity hubs. Each is reached by walking up to the structure and clicking its glowing prompt.

  • Blacksmith Forge (town): spend gold + materials to craft the Forged Greatsword, Ember Blade, Forged Plate, and Frostguard Plate — gear that rivals dungeon loot, with no $WoH required. Crafting grants Gathering XP.
  • Mining Cavern (Emberfall Quarry): swing a pickaxe for iron ore, coal, ember gems, and rare frost crystals. Requires Gathering level 6 and feeds the Forge.
  • Fishing Derby (lake pier): pay a small entry, then bank as many points as you can in 45 seconds. Higher scores pay gold and $WoH, and beating your best is tracked.
  • Taming Pen (Frostpeak): befriend animals with food + gold. Your active pet follows you and grants a small passive perk (gold, gather XP, or damage).
SynergyMine gems at the Quarry, then forge them into elite gear at the Blacksmith — a full crafting loop that never costs $WoH.

16 // Town & Economy

The Bank Vault

Store gold and items safely — your vault survives death and can't be touched by anyone.

Step into the Bank to open your vault. It has two tabs: Gold and Items. Anything in the vault is completely safe — dying never touches it, and no other player can reach it.

Because death costs 10% of your carried gold, depositing your earnings before a risky Wilderness run is the single best way to protect your wealth.

Death loss

carried gold only

Vault gold

always safe

Item stash

exactly-once

  • Deposit / withdraw gold in any amount, with quick 100 / 1k / 10k buttons.
  • Stash items from your satchel and pull them back out later.
  • Vault balances are server-authoritative— they can't be edited or duplicated by a tampered client.
HabitBank your gold after every good run. Carry only what you're willing to lose in the Hollow.
SafetyItem withdrawals are delivered through a guaranteed ledger — they can never be lost, even on a flaky connection.

17 // Town & Economy

The Casino

Spin the Lucky Wheel and gamble your gold for a shot at $WoH.

Enter the Casino (or walk up to the wheel beside it) for one free spin every 12 hours. Extra spins cost 75 $WoH — half burned, half to the treasury — and never reset your free timer. Prizes range from gold and potions up to the $WoH jackpot.

Free spin

every 12h

Extra spin

75 $WoH

Jackpot

500 $WoH

JackpotThe rarest slice pays 500 $WoH. Good luck.

18 // Town & Economy

Economy, $WoH, and Trading

How gold and the on-chain $WoH token work, and how to trade with other players.

Gold is the soft currency for everyday items. $WoH is the premium in-game currency — and the top seasonal earners are paid real tokenized stocks on-chain. Open the Marketplace from the HUD cart anywhere to buy gear, sell loot, or swap gold for $WoH. Every exchange routes 5% to the arena treasury.

The Tradetab is a full player-to-player auction house: list items priced in gold or $WoH, and anyone can buy them even while you're offline. All currency moves server-side, so balances are always conserved and tamper-proof.

  • Premium items like the Hood Blade and Hood Cap are $WoH-only.
  • Auction-house proceeds are transfers, not earnings — they never inflate your withdraw cap.
  • Houses can also be sold to other players for gold or $WoH (see Housing).
SafetyNever paste your seed phrase anywhere. World of Hoods only ever asks for a public wallet address, and even that is optional.

19 // Housing

Build Your Own House

Construct a home anywhere on open grass, name it, restyle it, and show it off to the world.

Open the Housespanel from the HUD home icon. On the Build tab, give your house a name, pick a style, and hit Build — it's placed exactly where you're standing and instantly becomes visible to every other player, with your name floating above it.

You can build on any open patch of grass, away from town, water, and other houses. Houses are permanent and server-saved, so yours stays put whether you're online or not.

Cost

500 gold

Materials

25 wood + 12 stone

Max per player

5

Styles

14 structures

Managing your houses

The My Houses tab lists everything you own. For each house you can:

  • Rename it to anything you like (up to 28 characters).
  • Restyle between all 14 structures, 8 accent colors, and yard decorations at any time — including the new Castle, Treehouse, Crystal Dome, Igloo, Mushroom, and Ziggurat.
  • List for sale at a price in gold or $WoH.
  • Demolish it to free the land (no refund).
MaterialsGather 25 wood and 12 stone before you build. Keep a stockpile in the Bank so a death never wipes your build fund.
LocationYou can't build on stone plaza, roads, sand, or water, or right on top of another house — find open grass.

20 // Housing

The Housing Market

Trade houses with other players safely — ownership and payment settle server-side.

Any house listed for sale shows a gold "For Sale" nameplate in the world. Walk up to it and a Buy this House prompt appears, or open the Houses panel to see the price and owner. When you buy, the price is debited from you and credited to the seller in a single transaction, and ownership transfers to you instantly.

Because the entire trade is resolved on the server, currency is always conserved — a house can never be double-sold, and no client tampering can mint gold or $WoH. The house keeps its location; only its owner and name belong to you now.

  • Sellers set the price and currency (gold or $WoH).
  • Buying is atomic — concurrent buyers can never both win the same house.
  • After buying, rename and restyle it to make it your own.
FlipBuy a cheap house, rename and restyle it, and relist for profit — location and a good name add value.

21 // Progression

Quests, Dailies, and Long Arcs

Daily objectives that pay gold, XP, and $WoH, plus longer milestone goals.

Open the scroll icon for your daily quests: defeat mobs, chop wood, mine ore, catch and cook fish, brave the Wilderness, earn gold, and spin the wheel. Rewards include gold, XP, and $WoH. Quests reset every day at midnight.

Resets

daily at midnight

Rewards

gold / XP / $WoH

EfficiencyBatch tasks — one fishing trip can cover the catch quest and the cooking quest at once.

22 // Progression

Dungeon Delving & Bosses

Spend a Dungeon Key to take on tiered mob waves and a scaling boss for elite loot.

Reach the dungeon portal with a Dungeon Key to start a run. Tiered waves of mobs spawn and don't respawn; clear them all to earn the tier reward. The boss's HP scales to your damage when summoned, so it's always a real fight. Dying aborts the run — bring heals.

  • Dungeon Keys come from the daily leaderboard and special rewards.
  • Boss drops are elite gear granted the moment it dies.
  • Higher tiers unlock as you level — check Levels & Unlocks in your status panel.
PrepGo in with full HP, a stack of cooked fish, and your best weapon — the boss matches your power.

23 // Progression

Duels & the Arena

Challenge other online players to wagered duels resolved server-side.

Open the PVP panel to challenge another online player to a duel. Duels are resolved on the server based on combat power, and the winner is credited the $ARENA reward automatically. It's a fast way to test your build against real opponents.

Resolved

server-side

Reward

$ARENA to winner

BuildPower blends level, weapon, and armor. A balanced setup beats a glass cannon in duels.

24 // Progression

Leaderboard & Season Rewards

Top earners are paid real tokenized stocks on-chain each season, with daily Dungeon Keys for the top 5.

The leaderboard ranks players by $WoH earned in-game. The top 5 each day receive a Dungeon Key, and the top earners each season are paid real tokenized stocks — $TSLA, $NVDA, SpaceX and more — on-chain to their linked Robinhood-chain wallet. Earning through play, not trading, is what counts toward your rank.

Daily top 5

Dungeon Key

Seasonal

stock payout

TagConnect your MetaMask (Robinhood chain) wallet in the join screen so seasonal rewards can reach you.

25 // Under the Hood

Architecture & Stack

For developers and code reviewers: how the game is actually built.

World of Hoods is a Next.js 16 (App Router) + React 19 app. The game itself is a hand-rolled 2D engine — no game framework — rendering an isometric-style tile world to a single <canvas> at 60fps. Persistence is Neon Postgres via Drizzle ORM (fully parameterized queries), and on-chain rails use viem on the Robinhood chain (EVM) for wallets, payments, and token payouts.

Framework

Next.js 16 / React 19

Database

Neon + Drizzle

Rendering

2D canvas, 60fps

Sync

1.5s heartbeat

  • Engine: lib/game/engine.ts owns the fixed-tick simulation (movement, combat, robs, NPC AI); lib/game/renderer.ts draws terrain, sprites, weather, day/night grading, particles, and screen shake.
  • Multiplayer: a 1.5s polling heartbeat (/api/sync) with client-side smoothstep interpolation — a deliberate serverless-friendly choice over websockets. Presence, chat, duels, and kill feeds all ride the same heartbeat.
  • Shared schedules with zero server state: world events and Stock Rush windows are pure functions of the wall clock — every client and the server compute identical windows from Date.now(), so there is no cron to drift and nothing to store.
  • Single sources of truth: the token catalog + drop tables live in lib/tokens/registry.ts, the XP curve in lib/game/levels.ts, and both client and server import the same modules — the numbers literally cannot disagree.
lib/tokens/events.ts
// The event scheduled for a given UTC hour (deterministic rotation).
// hash01 is a integer hash → [0,1); same input, same event, everywhere.
export function eventForHour(hour: number): WorldEventDef {
  return WORLD_EVENTS[Math.floor(hash01(hour * 2246822519) * WORLD_EVENTS.length) % WORLD_EVENTS.length]
}
Why polling?Serverless functions can't hold sockets. A short heartbeat with interpolation gives smooth remote movement with zero infra beyond the Next.js app.

26 // Under the Hood

Security & Economy Integrity

Every currency, price, and outcome is decided server-side — here's the exact model.

Server-authoritative everything

No client is ever trusted with value. Casino outcomes, rob loot rolls, duel results, marketplace trades, bank moves, and house sales are all decided and settled in API routes against Postgres — the client only renders the result. Cross-player transfers use atomic conditional updates (debit only if balance covers it), so currency is conserved by construction and concurrent buyers can never double-spend or double-win.

  • Anti-cheat clamps:every sync validates the client's reported balances against the previous server values — per-tick earning caps, burst-interval checks, and a hard lifetime earnings ceiling derived from level. Cheating is clamped to economically nothing rather than trusted.
  • Exactly-once settlements: Stock Rush payouts insert a settlement row with ON CONFLICT DO NOTHING — under any number of parallel requests, exactly one settles.
  • Rate limits in SQL: duel hits, drop rolls, chat flood control, and purse cooldowns are enforced in the database, not in the client.
  • Zero-tolerance chat filter plus admin moderation with timingSafeEqual secret comparison and brute-force delays.

Identity masking

A player's real id is their credential, so it never leaves the server. Everything broadcast to other clients — nearby players, duel rosters, spectate feeds — carries a one-way HMAC-derived public id instead. Server routes resolve a public id back to a real player only within a safe candidate set (online players for duels, your own friends for removal), and every value-touching route validates id shape up front, returning a clean 403 for anything else.

Queries

100% parameterized

Real ids

never broadcast

Transfers

atomic + conserved

Outcomes

server-rolled

lib/server/identity.ts
// Real player ids are credentials — only this one-way public id is
// ever broadcast. HMAC-SHA256, stable per player, not reversible.
export function toPublicId(id: string): string {
  return createHmac("sha256", SECRET).update(id).digest("base64url").slice(0, 24)
}

On-chain safety

Payout engines advance the paid watermark only after a confirmed Robinhood-chain transaction receipt, making double-pays structurally impossible and failed sends harmless. Treasury private keys live in server-only environment variables; price data is read-only from a public aggregator; and the game never asks players for a private key after the one-time signup reveal.

Review itAsk any AI to audit this model: untrusted clients, HMAC-masked identity, atomic conditional settlements, watermark payouts, deterministic shared schedules. The answers are in the code.

World of Hoods — built by degens, for degens