diff --git a/ch05.asciidoc b/ch05.asciidoc index 6ac0a0d7..48a25275 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -171,38 +171,30 @@ applications use one more trick to provide a tree of keys instead a single sequence. [[hd_wallets]] -==== HD Wallets (BIP32/BIP44) - -((("wallets", "types of", "hierarchical deterministic (HD) -wallets")))((("hierarchical deterministic (HD) wallets")))((("bitcoin -improvement proposals", "Hierarchical Deterministic Wallets -(BIP32/BIP44)")))Deterministic wallets were developed to make it easy -to derive many keys from a single "seed." The most advanced form of -deterministic wallets is the HD wallet defined by the BIP32 standard. -HD wallets contain keys derived in a tree structure, such that a parent -key can derive a sequence of children keys, each of which can derive a -sequence of grandchildren keys, and so on, to an infinite depth. This -tree structure is illustrated in <>. +==== Hierarchical Deterministic (HD) Key Generation (BIP32) + +Every modern Bitcoin wallet of which we're aware uses Hierarchical +Deterministic (HD) key generation by default. This standard, defined in +BIP32, uses deterministic key generation and optional public child key +derivation with an algorithm that produces a tree of keys. +In this tree, any key can be the parent of a sequence of child keys, and +any of those child keys can be a parent for another sequence of +child keys (grandchildren of the original key). There's no arbitrary +limit on the depth of the tree. This tree structure is illustrated in +<>. [[Type2_wallet]] -.Type-2 HD wallet: a tree of keys generated from a single seed +.HD wallet: a tree of keys generated from a single seed image::images/mbc2_0503.png["HD wallet"] -HD wallets offer two major advantages over random (nondeterministic) -keys. First, the tree structure can be used to express additional +The tree structure can be used to express additional organizational meaning, such as when a specific branch of subkeys is used to receive incoming payments and a different branch is used to receive change from outgoing payments. Branches of keys can also be used in corporate settings, allocating different branches to departments, subsidiaries, specific functions, or accounting categories. -The second advantage of HD wallets is that users can create a sequence -of public keys without having access to the corresponding private keys. -This allows HD wallets to be used on an insecure server or in a -receive-only capacity, issuing a different public key for each -transaction. The public keys do not need to be preloaded or derived in -advance, yet the server doesn't have the private keys that can spend the -funds. +We'll provide a detailed exploration of HD wallets in <>. ==== Seeds and Mnemonic Codes (BIP39)