The verdictis written in code.
Yoko turns the numbers that move Bittensor into bouts you can back. Pick EAST or WEST, trade until the bell, and let the chain call the winner.
Subnet 1 emission share ≥ 2%
Called at a fixed Subtensor block
EAST · YES
0.52
WEST · NO
0.48
TAO per share · the winning corner is paid 1 TAO per share
- SN1 emission share ≥ 2%YES 0.52/NO 0.48
- SN8 emission rank ≤ 10YES 0.49/NO 0.51
- SN19 mean stake ≥ 100k TAOYES 0.50/NO 0.50
- SN4 in the top 10YES 0.63/NO 0.37
- SN64 emission share ≥ 5%YES 0.31/NO 0.69
- SN51 emission rank ≤ 20YES 0.72/NO 0.28
How a bout works
Four rounds. One verdict.
From the first card to the last payout, every step of a bout is a rule the contracts enforce, not a promise someone keeps.
Round 1: The card
Every bout is a yes-or-no question on a subnet metric (emission share, emission rank, stake, top-N), pinned to a Subtensor block height. The rules are hashed on-chain the moment the bout is created.
specHash = keccak256(spec)
Round 2: The odds
Back EAST for YES or WEST for NO. An automated market maker quotes every price, so there is always a counterparty, and the house's worst case is locked away before the first trade.
vault.reserve(market, maxLoss(b))
Round 3: The bell
Trading closes at least six hours before the data exists. If the chain lands inside that window, the bout is voided and the pot goes back to both corners. Nobody trades on the answer.
closeTimestamp + 6h ≤ resolution
Round 4: The gunbai
The result is computed from Subtensor data and posted on-chain with its evidence hash. Anyone can challenge it with a bond for 24 hours. Then the winning corner is paid in TAO.
report → 24h challenge → finalize
The verdict
No judge can be bought.
In sumo, the gyōji raises the gunbai toward the winner. On Yoko the fan is code: the verdict is computed from public chain data, replayable by anyone, and every call can be challenged.
$ oracle replay ipfs://bafy…/evidence.json
→ specSN1 · EMISSION_SHARE_GTE · threshold 2%
→ windowblocks [rb − 7200, rb] · 24 hourly snapshots
→ resultshare 2.41% → YES
→ dataHash0x9c1e…a47b (recomputed)
→ on-chain0x9c1e…a47b (Resolver.report)
✓ verdict replayed, hashes match
Every number is a contract call
Odds, coverage, the house's liability: each figure in the app is a direct read of a named contract function, with a link to check it yourself.
coverageRatio()previewBuy(side, shares)Every verdict can be replayed
Each result ships with its evidence and a keccak256 hash committed on-chain. Re-derive the outcome from the same Subtensor block and the hashes must match.
report(…, dataHash, evidenceURI)Every call can be challenged
For 24 hours after a result is posted, anyone can dispute it by posting a bond. A silent referee can't freeze a bout either: unruled disputes time out.
dispute(marketId)
Today, disputes are ruled by a guardian multisig. A decentralized oracle is on the roadmap.
The house
The house shows its cards.
One shared vault, funded by seeders, takes the other side of every bout. Its risk isn't a promise. It's arithmetic you can read at any block.
Loss capped before the bell
When a bout opens, the vault reserves the most it could ever lose on it, bounded by the market maker's math.
A floor for bad nights
Seeders can't withdraw below what's reserved plus a safety floor kept aside for correlated results.
Coverage in plain sight
Total assets, reserved liability and coverage are public contract reads, live on-chain.
Banzuke · who's in the arena
Built for the people who live by these numbers.
East
West
East
Miners
Your income tracks your subnet's emissions. Take the other side of the drop and hedge the month you can't control.
East
Validators
Stake moves before it's visible. Position around where it flows next.
West
Subnet owners
Rank and top-N status decide your emissions. Protect the position you fought for.
West
Readers of the chain
Odds are a live, money-backed forecast of where Bittensor is heading, readable by anyone, trader or not.
Nothing on this page is financial advice. Hedging reduces risk; it does not remove it.