Chains

Monero

Mainnet standard addresses, subaddresses and integrated addresses. Monero's base58 goes in blocks, so treating it like a Bitcoin address would be wrong.
IDmonero28 / 36monero · XMR
Chain / Monero

Monero

"monero""xmr""Monero"

Symbol
XMR · 12 decimals
Coin type
128
CAIP-2
monero:418…c270
Checks
address · txid
fields set 6 / 9

Network

CAIP-2monero:418015bb9ae982a1975da7d79277c270
Magicnone
PoWrandomx
RPCnone
Explorerxmrchain.net

Access

Createcreate("monero")
ResolvegetChain("xmr")
CLIchains info xmr
Tryplayground with a sample address

Address format

Monero encodes base58 in blocks: every eight bytes become eleven digits and the final five bytes become seven, so a standard address or subaddress is 95 characters and an integrated address 106. The check decodes each block, requires it to fit its byte width, and reads the network and type byte off the first one: 18 for a standard address (4…), 42 for a subaddress (8…), 19 for an integrated address (4…, 106 characters). Testnet and stagenet prefixes are rejected.

The last four bytes are the head of the Keccak-256 of everything before them, and they're verified: one character off fails. The two public keys aren't checked against the curve. Twelve decimals, 1,000,000,000,000 piconero per XMR.

ts
import { getChain } from "@agntn/chains";

const chain = getChain("xmr");
chain.assertAddress("4AdUndXHHZ6cfufTMvppY6JwXNouMBzSkbLYfpAV5Usx3skxNgYeYTRj5UzqtReoS44qo9mtmXCqY45DJ852K5Jv2684Rge"); // returned unchanged
chain.type; // "monero"
chain.caip2; // "monero:418015bb9ae982a1975da7d79277c270"

Spellings

monero, xmr, Monero. The key is monero, the rest resolve through getChain.