For judges
Five minutes: two to play, three to check. Everything below links to the chain or to the code, and the last section says what isn't true yet.
1. Play it (2 minutes)
- Open the hosted town and press "Send them in". You get a guest account on NEAR testnet and three clones, funded by the house. No wallet, no login (Google sign-in is optional).
- Press "Try to run" on any clone. It signs a transfer of its own NEAR with its own key. NEAR rejects it with
RequiresFullAccess, and the page shows THE CHAINS HELD. - Open Proof, then "Try to break the leash". Six more ways out, each a real transaction NEAR refuses with its own error. With none of your clones in town, it uses another player's; a refused transaction changes nothing.
- Ring the bell. The whole town trades twelve hours in a few minutes, against the Widow (an AI on NEAR AI Cloud), the Abbot, the Hound and any other guests. Every two hours it stops for your call. At dawn the crown goes to the biggest profit, its player gets the deed and sets tomorrow's fee, and the page replays the night from the chain and says whether the audit passed.
Short on time? Watch one recorded night in 60 seconds.
2. Check it (3 minutes)
| Claim | How to check |
|---|---|
A clone's only key can call trade on one market | In the town, Proof, "On the explorer, with their keys" lists every key live; or open any clone-N.g….clonestown.testnet on nearblocks |
| The market has no access key, on testnet and mainnet | pyre.clonestown.testnet and market.clones-town.near: both list no access keys |
| The code on chain is this repository's code | Built with cargo near build reproducible-wasm; its NEP-330 metadata names the commit. Testnet code hash Fh4Z8qs8kFJnubytxtB9EzG3LB4i3qTNquvypA5c7iZk from commit 7bd9d25, rebuilt and compared every six hours by verify.yml |
| Every night replays from chain state | cd web && node scripts/verify-night.js (read-only, no keys) prints "Audit passed" |
| A full night ran on mainnet | MARKET_ACCOUNT=market.clones-town.near NEAR_RPCS=https://archival-rpc.mainnet.fastnear.com node scripts/verify-night.js: night 7, 3 clones, 26 orders replayed |
| Clones come home with DeleteAccount | merge in contracts/leash only lets the parent or the bound market call it, and always pays the parent |
| Players run the merchant | A guest took the season 2 crown at the earlier market (get_season on shroud.clonestown.testnet); guests have set the fee and ordered restocks |
| Tested | 108 Rust tests (three suites play real nights on a local NEAR node) and 26 web tests, in CI on every push to main |
The README's verify table has every claim with its evidence.
3. The brief
Games With Real Economies: "NPCs with wallets, player-owned markets and economies that evolve without a dev patch".
- NPCs with wallets. The three regulars and every clone are NEAR accounts holding testnet NEAR; the Widow's clones trade on a NEAR AI Cloud model, on the same leash as yours.
- A player-owned market. The crown's player holds the merchant's deed for a night: a quarter of the fees, the fee itself (0.5% to 3%) and a restock of one good.
- No dev patch. The market has no access key, so nobody, me included, can change its rules. Prices move with the merchant's stock and every player's trades; moods, omens and seasons turn by themselves.
- Players never notice the chain, until a clone tries to run and the chain is the story. No wallet, no gas, optional Google sign-in.
- The hints: agent NPCs, yes. Social login, yes (Google). NEP-245, yes: the goods are multi-tokens. NEAR Intents: not used.
Agents: an agent you don't have to trust. The leash (a sub-account whose only key can call one method, brought home by DeleteAccount) is a standalone crate with a guide, contracts/leash, for any agent you want to let act but never let leave.
4. What isn't true yet
- Play is on testnet. The one mainnet night used 0.25 NEAR stakes of my own, its prices came from a seed the keeper chose, and its build isn't reproducible (the six-hourly check verifies its keys and replays its night, not its hash).
- The house runs every clone and the regulars, and holds a function-call key on your guest account, so it decides when nights happen. It can't move the NEAR of an account whose only full key your browser made. For a Google sign-in it holds a full key.
- NEP-245 goods can't be transferred: they stay at the market, and a clone can only trade them.
- NEAR's validators produce the block randomness, and a validator could in principle bias it: fine for a testnet game, not for real stakes.
- The player counts include a few of my own test accounts, and the current market played many short nights on 13 November, so the Widow (a regular) holds most of its season crowns.