Glossary / Addresses & keys
Master chain code
Also known as Master private key.
- Definition
- The master chain code is the right half of the 64 byte hash of your seed, the companion to the master private key that sits at depth zero of an HD wallet tree.
Specified in BIP-32.
Every key you will ever use descends from that one pair. A single HMAC-SHA512 pass over the seed, keyed with the ASCII string Bitcoin seed, returns 64 bytes: the first 32 become the master private key and the last 32 become the master chain code. Copy the seed and you have copied everything below it, which is the whole reason a backup is a sentence rather than a filing cabinet.
How it works
Master generation runs exactly once, at wallet creation. BIP-32 accepts a seed between 128 and 512 bits, recommends 256, and pushes it through the keyed hash above. The pair that comes out is the node written as m at the front of every derivation path, and nothing sits above it.
A validity test hides inside that step. If the left 32 bytes come out as zero, or as a number greater than or equal to the order of the secp256k1 curve, BIP-32 declares the seed invalid and the implementation must reject it. The odds of hitting either case are worse than 1 in 2 to the 127th power, so no wallet has ever reported one, but the rule is what makes every accepted seed unambiguously usable.
Serialized, the root announces itself. Mainnet private extended keys carry the version bytes 0x0488ADE4 and print as xprv, public ones carry 0x0488B21E and print as xpub. At the root the depth byte is 0x00 and both the parent fingerprint and the child number are four zero bytes, because there is no parent to point at.
The number you actually handle is the fingerprint, not the raw bytes. Hashing the master public key with SHA-256 and then RIPEMD-160 and keeping the first four bytes produces an eight character hex string that identifies a wallet without revealing anything derivable from it.
Where you see it
Consumer software hides the master pair completely and shows the fingerprint instead. Sparrow prints it beside each keystore, Bitcoin Core opens every line of listdescriptors output with it in square brackets, and a Coldcard displays it on the home screen so you can confirm which seed the device currently holds. When a PSBT arrives, a signing device compares the fingerprint in the key origin field against its own before deciding the request is even addressed to it.
Multisig is where the root identity stops being trivia. A 2-of-3 wallet is not recoverable from three seed phrases alone, because rebuilding it requires knowing each cosigner's fingerprint and path as well. That is why every serious multisig tool tells you to store the wallet descriptor next to the words, and why losing the descriptor can strand coins that no single phrase can reach.
The one moment you touch the master private key directly is an import. Pasting an xprv into software hands over the entire tree: every purpose, every account, every future address, with no way to narrow the grant to one branch. There is no partial version of a root, which is why hardware wallets refuse to export one at all.
Master chain code vs seed phrase
The phrase comes first and the master pair comes second, and they belong to different standards. BIP-39 turns 12 or 24 words into a 512 bit seed by running PBKDF2 for 2,048 rounds; BIP-32 then turns that seed into the master private key and master chain code. The layers stay independent enough that adding a passphrase changes the seed, and therefore changes the master pair and every address under it, while the words on your card stay exactly the same. Electrum makes the point from the other side: its recovery phrases are not BIP-39 at all, and they still produce an ordinary BIP-32 root.