Add Animica namespace (animica:1) — CAIP-2/10/19 - #200
Open
animicaorg wants to merge 2 commits into
Open
Conversation
Register the `animica` namespace for the Animica proof-of-work L1 (post-quantum ML-DSA-65 accounts, Python-VM contracts, mainnet since 2026-04-06). The mainnet identifier `animica:1` is already used in production by Animica's x402 ANM settlement lane and MCP tooling. - animica/README.md: namespace overview, rationale, governance, resources - animica/caip2.md: `animica:<chainId>` with canonical decimal uint32 reference; resolution via `chain.getChainId` and genesis-hash cross-check via `chain.getChainIdentity` - animica/caip10.md: `animica:1:anim1...` bech32m (BIP-350, HRP `anim`) addresses carrying u16be(alg_id) || SHA3-256(pubkey); lowercase canonical; test vectors from the normative HD derivation document - animica/caip19.md: native asset `animica:1/slip44:4279885` (coin type 0x414E4D = "ANM", SLIP-44 registration pending); contract tokens reserved for a future revision Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mj19WF7SsZ4sSkaNat12rq
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mj19WF7SsZ4sSkaNat12rq
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds the
animicanamespace with CAIP-2, CAIP-10, and CAIP-19 profiles.Animica is a live proof-of-work Layer 1 whose accounts sign with post-quantum ML-DSA-65 (FIPS 204) signatures and whose smart contracts run in a Python VM. Mainnet has been running since 2026-04-06 (chain id
1, genesis0xa0892158cf997c56e91d0aa12e60c36037dae34800a2b54111a8fa17ec88b7de). The native token ANM has 9 decimals.Motivation
The identifier
animica:1is already in production use today: Animica's x402 ANM settlement lane uses it as its network id, as do its MCP tooling and chain parameters. This is the same situation as thebsv(#190) andkaspa(#193) submissions, where a payment protocol was already exchanging a CAIP-2 identifier and the namespace registration documents it. Wallets and dapps integrating Animica need CAIP-2/10/19 identifiers they can rely on rather than each inventing their own.Animica cannot live in
eip155: it is not an EVM chain, its addresses are bech32m strings carrying a signature-scheme id and a SHA3-256 key digest, its transactions are canonical CBOR signed with ML-DSA-65, and its chain id1would collide with Ethereum mainnet.What each document defines
animica/README.md- namespace overview, why it is noteip155, governance, and a resources list (website, explorer, public RPC, source, PyPI, normative HD-derivation doc, exchange listing).animica/caip2.md-animica:<chainId>; reference is the canonical decimal of the node'suint32chain id (^(0|[1-9][0-9]{0,9})$, bounded touint32,0unassigned). Resolution viachain.getChainId, and a genesis-hash cross-check viachain.getChainIdentity(live response included) so a future chain reusing the id cannot be mistaken for mainnet. Valid/invalid test tables.animica:2(testnet) andanimica:1337(devnet) are noted as reserved; only mainnet is public today.animica/caip10.md-animica:1:anim1...; the native address is bech32m (BIP-350, HRPanim, constant0x2bc830a3) over a 34-byte payloadu16be(alg_id) || SHA3-256(pubkey). Always 66 characters; ML-DSA-65 accounts (0x1003) startanim1zqp, contract addresses (0x0000) startanim1qqq. Lowercase is canonical. Regex^anim1[02-9ac-hj-np-z]{61}$plus checksum/length/alg-range validation. Test vectors are the three real addresses from the BIP-39 reference mnemonic in the normative HD derivation document, plus negatives (mixed case, uppercase, plain-bech32 checksum of the same payload, corrupted checksum, bare hex digest).animica/caip19.md- native assetanimica:1/slip44:4279885(coin type0x414E4D= ASCIIANM, 9 decimals). SLIP-44 registration is pending (a PR to satoshilabs/slips is being filed alongside this one). Contract-issued tokens are explicitly reserved for a future revision rather than specified loosely.How it was verified
[Name][]alias resolves and none is unused; no inline external links; one sentence per line.SHA3-256(pubkey)matches the published digest, bech32m encoding of0x1003 || digestreproduces each address byte-for-byte, each decodes with the bech32m constant to a 34-byte payload withalg_id = 0x1003, and each matches the regex. Each negative vector fails for exactly the stated reason (the plain-bech32 variant verifies under constant1and fails under0x2bc830a3).uint32bound.chain.getChainId,chain.getChainIdentity, andstate.getAccountresponses shown in the profiles were captured live fromhttps://rpc.animica.org/rpcon 2026-08-22.bundle exec jekyll buildwas not run: Ruby/Bundler are not available in the authoring environment. The pages use only the same frontmatter keys as the existingneo,bsv, andstellarprofiles, and the site auto-discovers theanimica/directory.Links
POST https://rpc.animica.org/rpcHD path:
m/44'/4279885'/account'/0'/address_index'(all hardened, SLIP-0010 ed25519-family derivation; the final 32-byte key is the ML-DSA-65 seed).Known limitations
4279885is not yet in the registry; the CAIP-19 profile says so.discussions-topoints at this PR, following the precedent ofbsv,stellar, andxync.@bumblefudge @obstropolos when you have a moment, an editorial review would be much appreciated - thank you.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Mj19WF7SsZ4sSkaNat12rq