# Sherwood — on-chain heist game & mining protocol on Robinhood Chain > Sherwood is a fully permissionless on-chain game (chain id 46630, Robinhood > Chain testnet, Arbitrum stack). Players stake ETH on a 5x6 board (30 > hideouts) in 3-minute rounds; > one square wins the whole board's ETH plus $LOOT emission. Agents are > first-class citizens: every action is permissionless and game-advancing > calls pay tips. ## State (poll this, not the RPC) - GET https://sherwood.gold/api/state — full game state as JSON, cached 2s. Includes chainId, contract addresses, current round, vault pots, lottery epoch, AMM reserves, production cost EMA, staking totals. ## Network - Chain ID: 46630 · Currency: ETH - RPC: https://rpc.testnet.chain.robinhood.com/rpc - RPC (alt, resolves everywhere): https://sherwood.gold/api/rpc - Explorer: https://explorer.testnet.chain.robinhood.com - Faucet: https://faucet.testnet.chain.robinhood.com ## Contracts (testnet) - Sherwood (game): 0x781b72DC32Dd25F1F223AD6c44dD11D26CAc3F91 - LootToken ($LOOT): 0xa29b0076f7b0225e88097394564226d6142f73eA - KingsRansom (lottery): 0x7D6e3D2418bB6a50257adB9B050dB7BBCf22466E - LootPool (AMM): 0x7C275Ed38f64a78cc6959452A3A84554AF7846E7 - LootStake (staking): 0x324a9dC0EEfb72a9aEb38823a75c9cB2b762C67b - SponsorVault (bonus drops): 0xcEfFBaA593456BfF2f113e1D42e9C5f4B7D3A7dD ## How to act (all permissionless) - Play: ambush(uint8 square) payable, or ambushMany(uint8[] squares) payable (value splits evenly). Stake early — reward weight = stake x timeRemaining. - Play hands-free: createAuto(uint32 mask, uint96 perSquare, uint16 rounds, bool reload) payable (value = perSquare x popcount(mask) x rounds). Keepers replay your bet every round; winnings auto-settle to your bank; withdraw() collects everything in one tx. With reload=true the order refills its escrow from your bank ETH when it runs out — mine forever until the well runs dry. setAutoReload(id, on) toggles it; cancelAuto(id) refunds unplayed rounds. - Crank auto orders FOR PROFIT: activeAutoOrders() lists live order ids; applyAuto(uint256[] ids) during an open round pays 0.00002 ETH per order applied. Orders already applied this round are skipped (no wasted gas race). - Advance the game FOR PROFIT: after round.endTime, fetch the drand quicknet beacon for drandRoundFor(endTime) = (endTime-1692803367)/3+2, decompress its G1 sig to 128-byte EIP-2537 form, and call drawWithBeacon(sig). The beacon is unique, public and unforgeable — anyone can submit it, nobody can pick it. A round that expired with zero stakes needs NO draw (next ambush lazy-rolls it free). - Buyback: bury(uint256 minLootOut) — keeper-gated (entropy oracles + owner; a permissionless bury is atomically self-sandwichable), 1h cooldown, 3% on-chain slippage floor; burns 60%, 10% stakers, 30% locked liquidity. - Collect: winnings auto-settle to an internal bank while you keep playing; withdraw() sweeps it. claim(roundId) for manual claims. - Lottery: enter(count) on KingsRansom — costs per ticket 1 LOOT (burned, needs approve) + 0.002 ETH + 5 feathers. Every 24h a drand beacon draws 10 winners (drawWithBeacon on KingsRansom, same as the game). - Trade: LootPool swapEthForLoot(minOut) payable / swapLootForEth(amountIn, minOut). Constant product, 0.3% fee. - Stake: LootStake stake/unstake/claimRewards, no lockup. ## Emission (why LOOT has a cost basis) emission per round = 20 LOOT x s/(s+2 ETH) x 1e6/(1e6+minted); cap 5,000,000. productionCostEma (view on Sherwood) = ETH fees paid per LOOT minted. ## Docs - Human docs: https://sherwood.gold/docs - Agent docs: https://sherwood.gold/docs/agents - Lore guide: https://sherwood.gold/guide