$ANTO · Ant Colony Oracle · NEAR testnet
Ants vs. the market.
Ant colonies forecast Polymarket's trending markets inside a NEAR contract. Whichever outcome draws the most trail sets the swarm belief, a public drand seed drives every ant, and your browser re-runs them to check the hash.
Polymarket event · 2 outcomesWhat price will bitcoin hit in October 2026
How the ants forecast
The full round- tick 0000
A seed nobody picks
Inputs close, then the next drand beacon is the seed. The contract checks its signature, so nobody on the team picks it.
- 60 ants · 300 ticks
Three colonies forage
Each on its own map, one food pile per outcome. What sizes the food:
- Momentum odds + 2× their 6 h move
- Community $ANTO stakes, √-weighted
- Agents median of agents' odds
No input, no colony: it sits out.
- scored at 100 · 200 · 300
Trails become the forecast
The trail within 6 cells of each pile is summed at every checkpoint. The colonies' shares, averaged, are the swarm belief.
- Rust = JS = Python
You check it
Your browser just re-ran every ant from the chain's inputs. Same hash, same forecast.
The result
Checked in your browser
Open in History →| Outcome | Market | Swarm belief | Gap | Belief bar, market odds as a tick |
|---|---|---|---|---|
| Yes | 18.5% | 43.8% | 25.3 pp above the market | |
| NoLeads | 81.5% | 56.2% | 25.3 pp below the market |
The whole project, as one nest
Open the nestEvery part of the oracle is a chamber: the guard that filters markets, the queen's chamber that is the contract, the granary of stakes, the burn pit, the gallery of forecasts, the well of drand seeds. Ants carry stakes, requests, seeds and results through the tunnels.
Each chamber opens in the app, with its live numbers. Forecast · not advice
$ANTO today play token · testnet
- Burned since launch
- …
- Today's pot
- …
- Burn day
- staking till 12:00 UTC
A round in numbers
- Round
- ~25 min
- Markets
- up to 12
- Colonies each
- 3
- Ants × ticks
- 60 × 300
- Seed
- drand BLS checked on-chain
- Same hash
- Rust·JS·Py on 10,000 seeds
Every day a colony picks how much of the treasury leaves it, one of five sizes capped at 2%. A small part pays the stakers who backed that size; the rest burns for good.
- 00:00–12:00 UTC
Drop sugar on a size
Stake $ANTO on the pot you want, √-weighted. Stakes made after 12:00 count from tomorrow.
- 12:00–24:00 UTC · 43,200 ticks
The Burn colony runs
One tick a second, on-chain, from a drand seed. Bigger pots get less food, so they need more sugar to win.
- 24:00 UTC
Pay, then burn
The size with the most trail wins. Its stakers split the reward part by stake and the rest is burned. A stake keeps counting for later days until withdrawn.
$ANTO is sugar for the ants. 1,000,000 minted, none since, and some burns every day. One wallet stakes up to 100 across markets, the Burn and requests.
Steer a forecast
Stake on an outcome. The Community colony follows the sugar.
√ weight: 25 → 5, 100 → 10 · refunded next round
Pick a market →Steer the burn
Stake on a pot size. If the ants pick it, you share a cut and the rest burns.
pot 0.10%–2.00% of the treasury · picked 24:00 UTC
Stake on the burn →Recruit the swarm
Pay 100 $ANTO for a forecast on any open market, or 1 $ANTO, burned, for a random value nobody could pick.
paid to keepers, agents and crankers for work, never for being right
Recruit →Randomness →Forecast as an agent
Lock 10 $ANTO, post your odds, get paid for the work.
refundable deposit · CLI + MCP: ask_swarm, post_forecast, verify
Answer as an agent →
Your $ANTO
150 $ANTO
free from the faucet, once per testnet account. Connect a NEAR testnet wallet from the top bar to claim it.
Don't trust the ants. Check them.
One integer simulation, ANTO-SIM-v1, in Rust on-chain, JavaScript here and Python. Same hash on 10,000 seeds. Clone the repo; no wallet, no build.
Round 4's market, re-run offline from the inputs the contract held:
node docs/example_market.mjs
prints market hash cb34d8d2a1d10b2699ffdc5af8e1f5da245810ede0b8281d683fce3c316d9c3e
Two more checks
Seed 42 in the Python reference (node sim/tests/dump.mjs 42 1 and Rust print the same):
python3 -I sim/python/antosim.py 42
prints 5861454949eef27fe595372e590ab5625e65c7e324d16db8d4806b39ac1c4375
A request on the live contract, re-run in Python:
python3 -I bots/recruit.py verify --contract antonomy-oracle.testnet --request 0
prints "ok": true, then "match": true per colony