current release 10.3.1 consensus floor 10.2.5 pool.animica.org requires 10.3.1+
Upgrade to 10.3.1. It adds opt-in GPU compute + inference alongside mining, and pool.animica.org now rejects miners below 10.3.1. The mandatory consensus fork at block 75,000 has already activated; the consensus floor remains 10.2.5.
pip install -U animica animica --version # must print 10.3.1 # then restart your node / pool / miner
Total emission and the halving schedule are unchanged. Only the split of each block changes, and several dormant features switch on.
| Per block | Before 75,000 | From 75,000 |
|---|---|---|
| Total emitted | 300.00 ANM | 300.00 ANM |
| Miner | 255.00 ANM (85%) | 150.00 ANM (50%) |
| Foundation treasury | 45.00 ANM (15%) | 75.00 ANM (25%) |
| Inference carve | 0.00 ANM (0%) | 75.00 ANM (25%) |
Computed from the node's own reward code against the shipped chain parameters. The inference slice is withheld from the miner whether or not anything claims it. Where it lands depends on one thing — whether any provider claims in that block. Nothing claimed: it goes to the treasury, so the treasury receives 50% of that block. Any claim: the whole slice is paid to the claiming providers, split pro-rata, and the treasury takes no share of it.
This one is not a consensus rule and it will not desync you. It is a payout bug, and it costs a pool real money the moment 75,000 passes.
Below 10.2.2, getBlockTemplate advertises the miner's reward
before the inference carve is applied. From block 75,000 it reports
225 ANM for a block that actually pays the miner 150 ANM.
Submitted blocks are still valid — submitBlock reads the real state delta — so
nothing breaks visibly. But a pool that credits shares from the advertised figure pays out
75 ANM per block that it never received, out of its own hot wallet.
The fix existed since 9.x and was reverted by an earlier packaging commit; 10.2.2 restored it. If you run a pool, 10.2.2 is the floor for that specific bug — but 10.2.5 is the consensus floor for everyone.
From 75,000 the node verifies any useful-work proof a block carries. Two properties make this safe to arm now, and both matter:
ANIMICA_USEFUL_WORK_ENFORCE=1) and is not recommended yet —
the payment-status input is still node-local, so an enforcing fleet could disagree about a
block that carries a proof.This is not "serve inference or you cannot mine". That rule would require every block to carry a proof, is a hard fleet-wide cutover, and is deliberately not at this height.
animica up installs
the model bundles your hardware can serve, instead of only telling you to. Before this, a
machine with no installed bundle registered with an empty tier list, so it could never be given
a job — which is why the network had no serving capacity at all. This matters more from 75,000,
when 25% of every block is reserved for inference.aicf.status reports honestly. It had always answered
dependency_missing because the AI-compute methods read a context handle that never
held the database. Explorers and monitors saw the module as disabled when it was not.Bundle install runs in the background, smallest tier first, skips tiers already
installed, and stops if free disk drops below 20 GB. Opt out with
ANIMICA_AICF_NO_AUTOPULL=1; pin the tiers with
ANIMICA_AICF_AUTOPULL_TIERS=tiny,small.
| You are | Action |
|---|---|
| Running a full node | Yes — the 75,000 fork has activated; run 10.2.5+ (10.3.1 recommended) or you compute wrong balances. |
| Running a pool | Yes — 10.2.2 minimum, or you overpay 75 ANM/block. |
| An exchange or explorer | Yes — below 10.2.5 you will report wrong balances. |
| Mining to pool.animica.org | Yes — the pool now requires 10.3.1+; older clients are rejected. |
| Mining to a pool you do not operate | Check your pool's minimum version. |
| Using a wallet | No. |
| Using a hosted Animica service | No. |
animica --version # 10.3.1 — if it prints anything lower, the release has not reached # your package index yet and you are NOT upgraded.
Then confirm the node is following the network, not a private view of it:
curl -s -X POST https://rpc.animica.org/rpc \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"chain.getHead","params":{}}'
Compare the height and hash with your own node's chain.getHead. Same height,
different hash means you are on a different chain — that is the one case where you should stop and
ask before doing anything else.
Every fork height is overridable by environment variable for testing, for example
ANIMICA_FORK_SERVICE_CARVE_HEIGHT. Overriding a height on a node that is following
mainnet is how you leave the network's ledger — the override exists for devnet and testnet work,
not as a way to opt out of an activation.
animica up installs a model bundle (superseded by 10.2.4).aicf.status reads the real state handle.Questions: ai@3vdc.com · x402 API · Legal notice