At first you would generate a private key for each wallet you owned. It's already difficult to store 1 private key safely so a big UX improvement came about with BIP32.
HD wallets which can be shared partially or entirely with different systems, each with or without the ability to spend coins1
- [focus on xpub output descriptors, e.g. from hardware wallets]
- Introduction to bip32
- BIP44 derivation paths
- BIP49 derivation paths
- BIP84 derivation paths
- Obtaining an xpub
m / purpose' / coin_type' / account' / change / index
- BIP 44:
m/44'/0'/0'
(for1addresses
) - BIP 49:
m/49'/0'/0'
(for3addresses
) - BIP 84:
m/84'/0'/0'
(forbc1addresses
)
You can derive up to
4294967296
children from a single extended key. The first half are for normal children, and the second half are for hardened children.
0
- Normal Child (index0
)0'
- Hardened Child (index / starts at2147483648
)
Do NOT share an xprv.
Sharing an xpub...
If, and only if, the recipient also obtains a single private key from your wallet, the recipient can obtain all your private keys and steal your funds, just as if they had your xprv key.2