Addresses, and the signatures behind them
Why Animica addresses look the way they do, and why the signature scheme is unusual — and larger than you expect.
An Animica address is bech32m with the prefix anim1:
anim1zqpsmegc0qcvzjfukm89xs0zeu3eqyyyel7kelehuszvwfarqypky2gr946ga
bech32m matters specifically — not plain bech32. The two differ only in a checksum constant, so a plain-bech32 validator will happily accept addresses the chain rejects, and reject valid ones. If you write a validator, use the bech32m constant 0x2bc830a3 and test it against a real address.
The format earns its awkwardness: the charset excludes 1, b, i and o because they are misread, and the checksum catches any single-character error. Given that a payment to a malformed address is unrecoverable, that is a good trade.
Animica signatures are post-quantum, and that has visible consequences.
The current scheme is ML-DSA-65 (FIPS 204, the standardised successor of Dilithium3). Its keys and signatures are much larger than the elliptic-curve ones you may be used to: on this chain a secret key is 4,032 bytes and a public key 1,952 bytes, against 32 and 33 for secp256k1.
That means transactions are kilobytes, not hundreds of bytes. If you are sizing batches, estimating bandwidth, or wondering why a raw transaction looks enormous, this is why. The upside is that a quantum computer capable of breaking elliptic-curve signatures does not break these.
Enumerate schemes; do not hard-code the id. Ask the node:
{"method":"tx.getSupportedSignatureSchemes","params":{}}
Live response, 2026-08-20: dilithium3 (0x1), sphincs_shake_128s (0x2), sphincs_shake_128f (0x3, disabled), sphincs_shake_256s (0x4, disabled), and ml_dsa_65 (0xb).
Note the last one: parts of this repository's documentation describe ML-DSA-65 as scheme 0x1003, and the running node reports 0xb. They are numbering different things. This is exactly why the rule is to enumerate rather than hard-code — the node is the authority, and a constant copied from a document can be quietly wrong for a long time.
SPHINCS+ is legacy here. Build on ML-DSA-65.
Amounts are integers, always. 1 ANM = 10^9 nANM (nano-ANM), so:
10 ANM = 10_000_000_000 nANM
Every API takes base units. Never send a float — the VM has no floats, for the same determinism reason that rules out clocks and randomness, and a float that survives your client will be rejected or, worse, rounded.
Claim your 10 ANM
Finish this lesson and claim 10 ANM, once per address. Paid from the Animica treasury in batches — allow a few minutes.
Stuck? Ask
Answered by Animica's own free inference network. It is donated GPU capacity, so give it 20-30 seconds.