Into the Rabbit Hole #2: Overview of BIP-32 / BIP-39 / BIP-43 / BIP-44 Wallet Standards
Trying to understand how wallets work and how they are secured, I came across the following BIP standards (note: "BIP" stands for "Bitcoin Improvement Proposal" and is the way how to propose new standards to Bitcoin).
So here is a short overview of a few BIPs I looked at:
BIP-32 - Hierarchical Deterministic Wallets
the standard for generating hierarchical deterministic wallets (i.e. "HD Wallets")
describes how hierarchical structure of keys and addresses is generated from a single master key (a.k.a. "wallet seed")
use cases include multi-account wallets, wallet sharing, etc..
if you are interested in the technical details on how a wallet is created --> this BIP is for you!
BIP-39 - Mnemonic code for generating deterministic keys
defines how a usually 12 or 24 word mnemonic sentence (a.k.a. "seed phrase") is used to (re-)create a BIP32 wallet
the mnemonic sentence should be combined with a passphrase, and both together are used to create the actual master key ("wallet seed")
the 12-24 words are usually chosen from this wordlist and are better for humans to deal with than a "raw" private key (easy to back up on paper or even steel, good error correction properties, etc..)
BIP-43 - Purpose Field for Deterministic Wallets
tackles a shortcoming of BIP32 (i.e. the fact that it does not define how the actual hierarchical structure should look like)
is kind of a "meta" BIP and just defines that the 1st level of the hierarchy is the "purpose" which should refer to a subsequent BIP which defines the structure underneath
general BIP43 structure is
m / purpose' / *
, where for example BIP44 should usem / 44' / *
, etc... (you get the point)
BIP-44 - Multi-Account Hierarchy for Deterministic Wallets
is a concrete implementation of BIP43 describing the hierarchical structure for a multi-account hierarchy
it defines 5 levels in the BIP44 path:
m / purpose' / coin_type' / account' / change / address_index
purpose: is a constant set to "44"
coin_type: defines the type of coin, e.g. BTC, ETH, etc... (see registered coin types here)
account: allows to define separate accounts to manage the funds
change: specifies if the address is on an external chain ("0") or internal chain ("1")
address_index: denotes the index of the address being generated
in addition to the levels, it also specifies the "account discovery" algorithm
This was a really short, high level overview (it helps me keeping an overview of what the BIPs are on that level....)
If you want to know more details, I highly recommend to delve into the BIPs themselves.
By the way... looking myself for a wallet, I found https://walletsrecovery.org/ provides a good overview of different HW / SW wallets. (I haven't chosen one though)
(note: this has been cross-posted from here)