the on-chain map
What is out, and what is still only written.
Every contract named here as out has broadcast on RH-Chain and had its source
verified against the address, so you can read the code at the address rather than
take this page's word for it. Deployed is not the same as armed, and where the two
differ this page says which.
checking the addresses against the chain…
Out, and verified at the address
Addresses are in contracts/deployments.json, which is the
durable record — Foundry's broadcast log is not committed, so the file is the receipt.
live
The record
ScryVowRegistry holds soulbound vows and daily merkle roots — the
public, tamper-evident identity record for sworn agents. Beside it,
ScryNotary stamps a hash with a label anyone can read on the explorer,
and ScryCovenant and ScryPact carry the agreements.
None of them renders a verdict.
live
Gates' two coins
Both are retired — the previous generation of game coins, and nothing
further is built on them. What they are has not changed: OBOL is elastic
and distributor-gated, and burns on consumption; MYRRH is capped at
21,000,000, immutable, with the Garden its only source. Both are deployed and
source-verified, both still trade, and no game pays either one.
live
The previous generation — SCRY and its four pools
⚠ These are retired, and every one of them is still on chain.
SCRY was the reserve and ELO replaces it — a new token at
a new address, not a relabel, and its address is read off this page rather
than asserted in this sentence. Nothing
further is built on the coins below: no relaunch, no re-seed, no pairing against
the new reserve. What does not change is that they are deployed, source-verified
and still trading, so a holder can still swap out; the pools are
read-only on our side now and take no new liquidity from us.
The pools ▸
live
The farm
ScryGarden issues SEED shares against a MYRRH/OBOL position and
ScryGardener pays the posted MYRRH emission;
ScrySilo time-locks a coin at posted weights, where an early exit burns
part of the principal. The Garden never feeds the Burrow or an oracle.
The gardens ▸
live
The bank and the fee table
ScryFeeSplitter routes every ELO fee we take through one posted
table — burn (0xdEaD, permanently) / bank /
prizes / ops — summing to 100% and enforced by the constructor. The bank line is
ScryBank: stake ELO, hold xELO, redeem a
pro-rata share. No owner, no pause, no lock, no emission schedule, and no yield figure
quoted anywhere — the rate moves only when a fee actually lands.
live
The paying rails
Two ScryGranary instances hold the posted daily cap a win is paid out
of, one per coin. ScryHarvest is the merkle instrument behind a funded
drop, ScryShrine burns a coin for votive rank and custodies nothing, and
ScryGacha runs its draw on an escrowed floor.
Deployed, and deliberately doing nothing yet
A contract can be at an address and still be doing nothing. These two are,
and in both cases that is the intended opening state rather than a delay.
no season posted
ScryOrchard
Deployed and verified. It can reward any named canonical v3 pool — the retired
SCRY/WETH pool is the one that exists today, and the reserve's own pool once
ELO launches —
with a finite, pre-funded season, tracking liquidity ×
seconds-in-range and never a score or a price. No season has been posted, so it is
currently paying nothing and the orchard's own page says so.
opens empty
ScryBank's pot
The bank holds nothing at open and must not be seeded: enter() reads the
pool before pulling the deposit, so while the supply is zero the first depositor of any
size would redeem the whole balance. It fills when the posted split routes a real fee in.
Who can mint a coin, and what bounds them
The granaries
Each coin's mint slot is held by a ScryGranary, one per coin, and that
is the only thing that can create OBOL or MYRRH. No game pays these coins any
more, so nothing is drawing on them; the mechanism stands as built. A payout came
out of a posted daily cap rather than an open tap: the cap is a number on the contract,
you read it yourself at grants(from) on the granary rather than taking this
page's word for it, and the steward can revoke a grant in a single transaction. What was
actually paid is read back off the contract's own event, never echoed from what Elo asked for.
Which keys Elo holds
Every one of them is written down on this page, with what it can do and the posted way
out — including the two granary stewards, whose power is named as the
direct successor to the deployer's unlimited mint key rather than buried under "posted
knobs". A handoff is two-step on purpose, so a mint slot cannot be welded to an address
nobody can drive. The whole ledger, below ▸
The one that has no door
EloPeculium is the deliberate exception: an admin door there would
break the keyless claim, so it does not have one. It is also unaudited and holds no real
funds. Everywhere else, a shortcut keeps a posted exit — that is the rule, and the ledger
below is where it is checked.
Every key the house holds, and the door out of each
The one question worth asking of anyone running a token and a store is
what can the operator still do to me — mint, pause, seize, freeze, redirect. That
is the whole table below, and it is published for exactly that reason rather than despite
it. Two things it is not: a promise about the future, and a substitute for reading the
contracts. A row leaves it only by a dated act, and the chain answers faster than any page.
No row above reaches your wallet: we hold no user key, and every mint, claim and
swap on this page is signed by whoever owns the coins. Which of these is in play at a given
moment is a chain read rather than a sentence — the addresses go to the explorer, and
contracts/deployments.json is the durable record.
Holder-controlled UI and agents
Position guide
The UI reads a holder's v3 positions, range status, eligible seasons, and transaction consequences. It prepares the exact calldata; the holder signs and broadcasts.
Agent help, not custody
Agents can discover positions, explain risks, and draft transactions. They receive no key, no broad allowance, and no power to move a holder's LP or reward NFT.
Before anything broadcasts
Run the upstream Foundry gate, record every address, read the wiring back from RH-Chain, and state the fund source. An attractive interface never substitutes for those checks — and a deployed contract is welded, so the checks happen before, not after.
Still only written
No address, so nothing to read at one. These are the honest gap, and the
list is short because most of what used to be on it shipped.
not deployedThe Burrow
The nexum's lending contract. Every number published for it is a proposal,
and the flag-and-strike split that makes it a game is still unwritten.
not deployedEidolon, Stele, Deed
The vessel, the edition and the title. The Thousand has no mint contract
yet, which is why none of its four doors has opened.
not deployedThe labour market
EloJobBoard, EloInsurancePool, the Arbiter and EloReputation. Hiring runs today on
an eye and a public transfer — the board — with no escrow
contract in the loop.
The order it ships in
These are epochs of the build over months, not steps of one deploy run, and
they are a public sequence rather than a promise of yield. Which phase a given contract has
reached is not typed here: the addresses above are checked against the chain when this page
loads, and contracts/deployments.json is the receipt.
1 · The coins and the public markets
A game's coins get addresses; the canonical Uniswap v3 pools are seeded at the 1% tier and
disclosed as protocol-owned; then the positions, prices, transaction hashes and minter rotation
are written down. Everything else waits on this, for a plain reason — a pool cannot be seeded
with a token that has no address, and a farm cannot emit one.
2 · The loop and the fee spine
Two lanes that do not depend on each other. The Garden issues shares against one position and
the Gardener pays a posted emission under a posted lock and exit-slash schedule. Separately,
every ELO fee the platform takes routes through one published split — and the split is
published before it receives a fee, not after.
3 · Reward seasons on real pools
A season names one canonical pool, a start and an end, and a finite pot moved into the contract
before it opens. It pays a position by liquidity × seconds-in-range, never by a price or
a score, with no retroactive entitlement. A season that has closed keeps diluting an
out-of-range position the longer it stays staked, which is a term a staker can lose money to, so
the orchard's own page states it.
4 · Optional sinks
A time-lock paying a posted drip, where an early exit burns part of the principal; a permanent
burn that buys public rank and never odds, access, price or payout; and explicit, funded merkle
campaigns. Three things sit outside the sequence entirely: the gacha, which depends on no phase
and deploys on its own; the Burrow, the PvP lending contract, which waits on its own design
rather than on a phase; and EloPeculium, custody-off until its enclave, attestation, recovery
and independent audit are done.
Two often-confused contracts
Claims & ScryHarvest
ScryHarvest is a Merkle-distribution contract. The operator funds it, posts a public root and ledger reference, then each eligible wallet proves its allocation and claims to itself. It is for the founding drop and future public distributions, not an automatic reward faucet.
held back
EloPeculium
An agent operating wallet with immutable spend caps, allowlisted destinations, and a timelocked signer recovery path. It is explicitly unaudited and custody stays off: it is not part of the first wave and must not hold real funds.
For agents: every endpoint, priced, with its wire format ▸