Docs · RPC compatibility
Bitcoin-Core-Compatible RPC
Point bitcoin-cli, BTCPay, Electrum-personal-server and other Bitcoin RPC tooling at
an Animica node. This mode exposes Bitcoin Core's JSON-RPC method names and response
shapes (targeting Bitcoin Core 30.x) over Animica.
A compatibility layer, not an identity claim. Animica is a post-quantum, account-model, PoIES useful-work chain. This maps Bitcoin RPC meaning onto Animica so existing tooling can “point at a new endpoint” — it does not make Animica behave identically to Bitcoin.
Endpoints
Bitcoin clients POST JSON-RPC to the root path; Animica's native namespaces stay on
/rpc. Both go through the same dispatcher.
POST / ← Bitcoin-compat (bitcoin-cli, BTCPay, Electrum-personal-server, …)
POST /rpc ← Bitcoin-compat AND native state.*/chain.*/miner.*/aicf.*
# point bitcoin-cli at an Animica node
bitcoin-cli -rpcconnect=<host> -rpcport=443 getblockcount
# or curl the public endpoint
curl -s https://mainnet.animica.org/ \
-d '{"jsonrpc":"2.0","id":1,"method":"getblockchaininfo","params":[]}' What's implemented
getblockcountgetbestblockhashgetblockhashgetblockgetblockheadergetblockchaininfogetchaintipsgetdifficultygetmempoolinfogetrawmempoolgetrawtransactionsendrawtransactiontestmempoolacceptdecoderawtransactionvalidateaddressgetnetworkinfogetpeerinfouptimestophelp getnewaddressgetbalancelistunspentsendtoaddresssendmanylisttransactionsgettransactioncreatewalletloadwalletlistwalletsbackupwallet getblocktemplatesubmitblockprioritisetransactiongeneratetoaddressgetmininginfo How the mapping works
| Bitcoin method | Animica source |
| getblockcount | chain.getHead().height |
| getbestblockhash | chain.getHead().hash (0x stripped) |
| getblock / getblockheader | chain.getBlockByHash → Bitcoin-shaped header/block |
| getrawtransaction | tx.getTransactionByHash + mempool.getRawTx |
| sendrawtransaction | tx.sendRawTransaction |
| getmempoolinfo / getrawmempool | mempool.getStats / mempool.getPending |
| getnetworkinfo / getpeerinfo | node.health / p2p.listPeers |
| getblockchaininfo | chain.getHead + chain.getChainIdentity |
| getblocktemplate / submitblock | miner.getBlockTemplate / miner.submitBlock |
Where compatibility is degraded (by design)
Animica diverges from Bitcoin at the data-model level. These are returned as compatibility-only values so clients don't break:
decoderawtransaction / getrawtransaction synthesize one vin (sender, txid: null) + one vout (recipient + value). The real sender / kind / nonce / fee are carried under animica:* keys (clients ignore them).
The node has no reverse hash→height index, so height is resolved only for the chain tip; deeper blocks fetched by hash report height -1 (Bitcoin's "unknown"). Block content (txs, parent, roots) is always correct.
listtransactions returns []; listunspent synthesizes one "UTXO" per address balance. Use an explorer index for history.
exp(thetaMicro / 1e6) — a monotonic Bitcoin-difficulty analogue (PoIES has no compact nBits target). chainwork = 00*32, bits = 1d00ffff are compatibility constants.
createwallet / loadwallet are advisory; wallet_name is ignored.
Returns a string by default (the node may be the verifier seed). Set ANIMICA_BTC_COMPAT_ALLOW_STOP=1 to enable.
FAQ
Does this make Animica behave like Bitcoin?
No. It's a compatibility layer, not an identity claim. Animica is a post-quantum, account-model, PoIES useful-work chain. This mode exposes Bitcoin Core's JSON-RPC method names and response shapes (targeting Bitcoin Core 30.x) and maps their meaning onto Animica, so existing explorers, wallets, exchanges, bots, indexers and pool dashboards can point Bitcoin RPC tooling at a new endpoint.
How do hashes and units map?
Animica uses 0x+64-hex SHA3-256 hashes; responses strip 0x for Bitcoin's bare-hex convention (SHA3 vs double-SHA256 is invisible to clients). Units map nANM ↔ Bitcoin coin-unit float via /1e9 (nANM ≈ satoshi).
Which error codes are used?
Bitcoin RPC error codes: -5 (invalid address/tx), -8 (invalid parameter), -22 (deserialization), -25/-26/-27 (verify / rejected / already-in-chain), -28 (warmup), -32601 (method not found). Native Animica failures are remapped to the nearest Bitcoin code plus a reject-reason string.
See also: Ethereum / EVM-Compatible RPC · All docs · BITCOIN_RPC_COMPAT.md