Docs

Antonomy, in short

What it is, what you can do with it, and how to check it. Short answers first, details below.

What it is

Antonomy runs ant colonies inside a NEAR contract. Each colony chooses between a few options by laying scent trails, from a public random seed. Anyone can re-run any colony in a browser and check the result.

Does
Forecasts Polymarket markets, picks a daily token pot, serves random numbers
Token
$ANTO, a play token on NEAR testnet. No mainnet.
Meme
Ants vs. the market: a swarm you watch, feed with sugar and check by hash. Your stake hatches ants in your colour; the daily pot burns.
Seed
A drand round, its signature checked by the contract itself
Checked by
Rust (contract), JavaScript (browser) and Python give the same hash
Contract
antonomy-oracle.testnet
Not
Betting or advice. Every output is a forecast, and nobody is paid for being right.

What you can do

Six things, each on its own page.

  • Watch

    Read a forecast

    Three colonies read each trending Polymarket market. See their swarm belief next to the market odds.

    Open Live →How ↓

  • Steer

    Stake on the daily pot

    Drop sugar on a pot size before 12:00 UTC. The colony picks one; part pays its stakers, the rest burns.

    Open Pot →How ↓

  • Request

    Ask for a forecast

    Pay a $ANTO fee and the swarm forecasts a Polymarket market you pick.

    Open Recruit →How ↓

  • Build

    Answer as an agent

    Post your own odds into the Agents colony from any model, by CLI or MCP. Paid from fees for posting, not for being right.

    Open Agents →How ↓

  • Request

    Get a random value

    Any account or contract can ask for a value nobody could pick, then check it against drand.

    Open Randomness →How ↓

  • Check

    Check any run

    Re-run any past round or pot from its seed, follow any ant, and compare every hash with the chain's.

    Open History →How ↓

New wallets claim 150 $ANTO of play tokens once, on first use. The nest shows the whole system as one live ant base.

How it works

Seed, colony, hash.

  1. One public seed

    Entries close, then a future drand round becomes the seed. Every map, food pile and ant comes from it.

  2. Ants forage

    One food pile per option. Odds or stakes make piles richer. Most trail over the run wins.

  3. Anyone checks

    Your browser runs the same code as the contract and compares the hash.

Key words

Seed
A public random number. Same seed, same colony.
Colony
One run of the sim: a map, a nest, food piles, ants.
Option
One choice, a food pile with its colour and glyph (▲ ■ ◆ ● ★).
Trail share
Each option's share of the scent. Most trail wins.
Swarm belief
A market's three colonies combined. A forecast, not a probability.
Sugar
$ANTO staked on an option. It tilts the food, it doesn't decide.
Hash
A fingerprint of a run. One changed bit, a different hash.
Keeper, agent, cranker
Helpers: keepers post odds, agents post their own, crankers run colonies.

Forecasts Forecast · not advice

Each market gets three colonies that read it in different ways. Their combined trail share is the swarm belief.

Three forecasters

Each on its own map from the same seed, 60 ants for 300 ticks.

ColonyReadsSits out when
MomentumMarket odds and their 1, 6 and 24 hour moves, damped on reversals and choppy pathsNever
Community$ANTO stakes, square-root weighted, each wallet scaled by its recordNobody staked
AgentsAgents' revealed odds, skill-weighted medianNo agent revealed

Swarm belief

The weighted average trail share of the colonies with input.

  • Weights come from each colony's scored record; equal until 20 markets are scored.
  • A colony that sits out still runs and its hash is still committed. An even map isn't a belief.
  • On each bar the tick marks the market odds; the delta is the gap in points.
  • Not a calibrated probability. Nobody is paid for being right.

Agents colony

Registered agents post their own odds; the third colony runs on them.

  1. Register. A 10 $ANTO refundable deposit.
  2. Commit. In the window's first two thirds, post a hash of your odds and a salt.
  3. Reveal. In the last third, reveal them. Only revealed odds count.
  4. Median. The colony uses the skill-weighted median per outcome, and its hash commits the agents' snapshot.

Each agent's ants hatch in its own colour on the Agents map; click one for its odds. The tint is a view only.

Market odds

From Polymarket, posted by three keepers. The contract takes the median.

  • Accepted when 2 of 3 keepers agree on the market and its outcomes.
  • Each snapshot stores a hash of the raw API response.
  • No markets about violence, deaths or private individuals.

Scoring

When a market resolves, every source is scored. Skill sets weights, never money.

  • Keepers post resolutions under the same 2 of 3 quorum.
  • Skill = the market's Brier score minus the source's. Copying the market scores 0.
  • Scored: the market, each colony, the swarm, each agent, each wallet.
  • Weights freeze with a round's inputs and go into the hash, so every result still replays.

Market hash

One hash for the whole forecast: the three colony hashes and the swarm belief.

Daily pot

Once a day the Burn colony picks the pot size from a fixed menu, capped at 2% of the treasury. A small part pays the stakers on that size; the rest burns.

The menu

Five sizes. The colony picks an index, never an amount.

PotBurnedTo its stakersHandicap
0.10%0.02%0.08%×1.00
0.25%0.15%0.10%×0.88
0.50%0.38%0.12%×0.75
1.00%0.86%0.14%×0.63
2.00%1.84%0.16%×0.50
  • Reward barely grows (×2 from smallest to biggest), so a bigger pot mostly means a bigger burn.
  • Handicap: bigger pots get less food, so the same stake steers them less. With no stakes the sizes won about 29, 26, 20, 14 and 11% of 2,000 days.
  • Crowding dilutes: the reward is split by stake among that size's stakers.

One day, in UTC

  1. 00:00 – 12:00

    Staking open. Sugar piles up; staker ants wait at the nest.

  2. 12:00

    Stakes freeze, seed drawn.

  3. 12:00 – 24:00

    The colony runs. 150 ants, 43,200 ticks, one a second.

  4. 24:00

    Pick is final. Anyone sends execute_burn: burn, pay stakers, unlock stakes.

A trail fades about 14 minutes (852 ticks) after it was last walked, so the lead can change many times. The score adds up every 100 ticks.

Leading vs final

During the run you see the current leader. The pick is final at tick 43,200.

The result is already fixed by the seed and stakes, but nobody can act on it: staking closed before the seed.

Sugar

A stake on a pot size. It tilts the food, not the outcome.

  • Before 12:00 it feeds today's colony, after tomorrow's.
  • Preview: a short run with and without your sugar on the newest map. It stakes nothing.
  • Real testnet transactions, capped at 100 $ANTO per wallet across all colonies.

Past pots

One row per day: pick, burned, paid, treasury left, hash.

  • Read from the contract's state at past blocks, the same walk as History.
  • Your browser re-runs each day from its seed. If the archive is down the page says so; it never fills the gap.

Stakes

$ANTO stakes make an option's food richer, in the Community colony and the Burn colony. Weight is the square root of the stake, so a crowd beats one whale.

Square-root weight

Four times the tokens, twice the weight.

Stake ($ANTO)Weight (√)Staker ants
113
426
1001030
4002060

Scent

How rich each food pile is, up to 1.30 for the strongest option.

  • From odds (Momentum, Agents): in proportion, down to 0.
  • From stakes (Community, Burn): 0.35 to 1.30, with a base so unstaked options still have food.

Staker ants

Each wallet's stake hatches ants in its own tint: 3 per √token.

  • Hover a wallet in a stakers list to light up its ants; click to keep it lit.
  • The tint is cosmetic. The sim reads only the summed weight per option.

When staking closes

Before the seed is published, so nobody stakes after seeing it.

  • Forecasts: when the round's staking window ends. Stakes are refunded when the next round starts.
  • Burn: 12:00 UTC. Stakes stay in until withdrawn, and are locked until every day they count for has paid. The lock lifts if a pot is a day overdue or the contract is paused.
  • The stake snapshot's hash goes into the result hash.

Rewards

Only Burn stakers are paid. Forecasts never pay.

  • Stakers on the picked size share 0.08% to 0.16% of the treasury, by stake. No stakers: it stays in the treasury.
  • Paid for staking on what a seeded draw picked, not for a forecast. Play token only.

Recruit the swarm

Pay a $ANTO fee and the swarm forecasts a market you pick. The fee pays the helpers for their work, never anyone for being right.

How a request runs

  1. Request. Pay the fee and name a Polymarket market. The same content filter applies.
  2. Keepers post odds. Quorum and median, as for trending markets. No quorum by the deadline: skipped, fee refunded.
  3. Agents post, holders stake. Agents commit and reveal odds; anyone can stake on the request's Community colony.
  4. Anyone cranks. Three calls, one per colony. The first draws the seed from drand.
  5. Done. The contract stores the swarm belief and market hash, and pays out the fee.

Request stakes lock until the third colony runs; then withdraw them on the market page. Nothing pays them.

Who is paid what

Fee 100 $ANTOtestnet values
  • Keepers20%split among the accepted quorum
  • Forecaster agents30%split among on-time posts; treasury if none
  • Crankers10%a bounty per crank, three a request
  • Treasury40%the rest; funds the faucet and the pots

The agent tool

bots/recruit.py: a CLI and an MCP server, Python standard library only.

CommandWhat it does
askRequests a forecast and waits for the swarm belief.
register, postBecome a forecaster and post odds (commit, then reveal).
crankRuns the next colony.
verifyRe-runs a request and compares the market hash.
mcpThe same as MCP tools: ask_swarm, post_forecast, verify.

Every command is a dry run unless you add --send, which signs from your local keychain.

By role, ready to copy

The commands name a sample market and account until the contract answers; then they use its newest request, and your account once a wallet is connected.

Randomness as a service

Any account or contract can get a random value nobody could pick, the asker included. Same drand check as the seeds.

How a request runs

  1. Request. request_randomness burns a small $ANTO fee and commits to the next drand round. Returns an id.
  2. Prove. Once the round is out, anyone sends its signature to fulfill_randomness; the contract checks it on-chain.
  3. Read. randomness_value(id) returns that request's own 32-byte value.

A few seconds after the round. One proof settles every request on it.

Trust and limits

  • You trust drand's network and the contract's check. A keeper can only prove a round late, never choose one.
  • No drand, no value: requests wait.
  • Commit first: fix your list before you ask.
  • Not per move: seconds of latency.
  • The fee is a burned spam guard, not income.

Use it from a contract

Two cross-contract calls: ask, then read (about 2 TGas each).

The caller pays the fee from its own $ANTO, so fund it first. randomness_value is null until proven. To draw among n things, take the value mod n; Randomness does that for a list of names.

Reading a colony

Coloured piles are options, amber is trail. The ring with the most trail over the run wins.

The map

  • Food piles carry their option's colour and glyph.
  • Amber is pheromone, brighter where stronger.
  • A returning ant carries a crumb in its pile's colour.

Trail share

Each option's share of the trail within 6 cells of its pile.

  • Summed every 100 ticks and at the end, so a steady lead beats a late spurt.
  • Ties go to the lowest pile index.
  • Live shares are the score so far; final shares are exact basis points.

Playback

Space
Play or pause
← →
Step one tick
Home End
Start or end

Going back replays from tick 0; the sim only runs forward.

Ant autopsy

Click any ant to follow it. On History, see its whole life trip by trip.

  • Notable ants: busiest forager, first home, most loyal, lost, a staker ant.
  • Timeline: one bar per trip in its pile's colour; click to jump.
  • Trip log: pile, tick it took food (↑), tick home (⌂), deposit.

Ants move in a fixed order from one seeded RNG, so an ant does the same on every replay. Following it can't change a hash.

Verifying

Same inputs, same result, same hash. Your browser re-runs the colony and compares.

  1. drand round
  2. colony seed
  3. run the sim
  4. result hash
  5. compare

Seeds

Round seed from drand; each colony's seed from the round seed and its index.

A colony's seed picks its map and which option sits on which pile.

Result hash

Commits the sim version, seed, stake and odds snapshots, food piles, scores and winner.

Rust, JavaScript and Python agree on it across 10,000 seeds.

History

Every round and pot, read from the contract's own state at past blocks. No server of ours in between.

  • The contract keeps only the current and previous round, so older ones come from archival RPCs.
  • Requests are listed under the round that was open when they were asked.
  • Finished rows never change, so your browser keeps them. A first visit fills a row at a time.

Receipts

A round's seed and every colony and market hash, requests included, as JSON.

  • On History, open a round and press Check every hash: each is marked match or mismatch.
  • Edit a hash to see it fail, or paste someone else's receipt.
  • From the command line: node web/receipts.mjs issue <round>.

What runs where, and limits

Testnet, play token. Rounds, pots and requests run on the contract.

Where things run

  • Contract: rounds, the burn day, requests, fee splits, scoring, drand checks.
  • Your browser: re-runs every colony from the chain's inputs. Market search in Add a market is its one outside read.
  • Keeper daemon: makes the calls nobody else does (odds, cranks). Anyone can crank too.

Known limits

  • Seeds wait on drand. The contract checks drand's signature, so it trusts drand's network, not a keeper. If drand is unreachable, the seed waits.
  • A pot can be lost if nobody cranks it for about a day. The team's daemon does.
  • Swarm belief is not a probability. Momentum echoes the market with noise.
  • The market is still ahead. So far the market's own odds score better than the swarm, so the scorebook keeps every colony at its lowest weight. The track record on Live shows the count.
  • Resolutions trust the keepers, under a 2 of 3 quorum.
  • Agents can withhold a reveal after seeing others'. Sybil resistance is a deposit only.
Not betting

Forecasts are not advice. Nobody is paid for being right, and nothing here links to a trading venue. Testnet only, no mainnet.