Animica upgrade guide

animica 10.3.1 — current release

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
There is no symptom to wait for. A node left below the floor does not fork, stall, or print an error. Coinbase amounts are not validated against the emission schedule, so it accepts exactly the same blocks as everyone else and simply computes wrong balances — silently and permanently. Exchanges and explorers are the most exposed: balances read from an un-upgraded node are wrong, and nothing tells you.

What changes at block 75,000

Total emission and the halving schedule are unchanged. Only the split of each block changes, and several dormant features switch on.

Per blockBefore 75,000From 75,000
Total emitted300.00 ANM300.00 ANM
Miner255.00 ANM (85%)150.00 ANM (50%)
Foundation treasury45.00 ANM (15%)75.00 ANM (25%)
Inference carve0.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.

Also switching on at 75,000

Pools: a second, separate reason to be on 10.2.2 or later

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.

Useful-work verification (shadow)

From 75,000 the node verifies any useful-work proof a block carries. Two properties make this safe to arm now, and both matter:

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.

New in 10.2.x beyond consensus

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.

Do I need to do anything?

You areAction
Running a full nodeYes — the 75,000 fork has activated; run 10.2.5+ (10.3.1 recommended) or you compute wrong balances.
Running a poolYes — 10.2.2 minimum, or you overpay 75 ANM/block.
An exchange or explorerYes — below 10.2.5 you will report wrong balances.
Mining to pool.animica.orgYes — the pool now requires 10.3.1+; older clients are rejected.
Mining to a pool you do not operateCheck your pool's minimum version.
Using a walletNo.
Using a hosted Animica serviceNo.

How to confirm you are actually upgraded

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.

Delaying an activation on your own node

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.

Previous releases

Questions: ai@3vdc.com · x402 API · Legal notice