diff --git a/ch05.asciidoc b/ch05.asciidoc index 1ae08c27..4d6c631a 100644 --- a/ch05.asciidoc +++ b/ch05.asciidoc @@ -581,109 +581,6 @@ increasingly adopting support for explicit paths using descriptors. Applications which do both will usually conform to the standards for implicit paths and also provide descriptors. -==== Wallet Best Practices - -((("wallets", "best practices for")))((("bitcoin improvement proposals", -"Multipurpose HD Wallet Structure (BIP43)")))As bitcoin wallet -technology has matured, certain common industry standards have emerged -that make bitcoin wallets broadly interoperable, easy to use, secure, -and flexible. These common standards are: - -* Mnemonic code words, based on BIP39 -* HD wallets, based on BIP32 -* Multipurpose HD wallet structure, based on BIP43 -* Multicurrency and multiaccount wallets, based on BIP44 - -These standards may change or may become obsolete by future -developments, but for now they form a set of interlocking technologies -that have become the de facto wallet standard for bitcoin. - -The standards have been adopted by a broad range of software and -hardware bitcoin wallets, making all these wallets interoperable. A user -can export a mnemonic generated on one of these wallets and import it in -another wallet, recovering all transactions, keys, and addresses. - -((("hardware wallets")))((("hardware wallets", see="also wallets")))Some -example of software wallets supporting these standards include (listed -alphabetically) Breadwallet, Copay, Multibit HD, and Mycelium. Examples -of hardware wallets supporting these standards include (listed -alphabetically) Keepkey, Ledger, and Trezor. - -The following sections examine each of these technologies in detail. - -[TIP] -==== -If you are implementing a bitcoin wallet, it should be built as a HD -wallet, with a seed encoded as mnemonic code for backup, following the -BIP32, BIP39, BIP43, and BIP44 standards, as described in the -following sections. -==== - -==== Using a Bitcoin Wallet - -((("wallets", "using bitcoin wallets")))In <> we -introduced Gabriel, ((("use cases", "web store", id="gabrielfive")))an -enterprising young teenager in Rio de Janeiro, who is running a simple -web store that sells bitcoin-branded t-shirts, coffee mugs, and -stickers. - -((("wallets", "types of", "hardware wallets")))Gabriel uses a Trezor -bitcoin hardware wallet (<>) to securely manage his -bitcoin. The Trezor is a simple USB device with two buttons that stores -keys (in the form of an HD wallet) and signs transactions. Trezor -wallets implement all the industry standards discussed in this chapter, -so Gabriel is not reliant on any proprietary technology or single vendor -solution. - -[[a_trezor_device]] -.A Trezor device: a bitcoin HD wallet in hardware -image::images/mbc2_0504.png[alt] - -When Gabriel used the Trezor for the first time, the device generated a -mnemonic and seed from a built-in hardware random number generator. -During this initialization phase, the wallet displayed a numbered -sequence of words, one by one, on the screen (see -<>). - -[[trezor_mnemonic_display]] -.Trezor displaying one of the mnemonic words -image::images/mbc2_0505.png["Trezor wallet display of mnemonic word"] - -By writing down this mnemonic, Gabriel created a backup (see -<>) that can be used for recovery in the case of -loss or damage to the Trezor device. This mnemonic can be used for -recovery in a new Trezor or in any one of the many compatible software -or hardware wallets. Note that the sequence of words is important, so -mnemonic paper backups have numbered spaces for each word. Gabriel had -to carefully record each word in the numbered space to preserve the -correct sequence. - -[[mnemonic_paper_backup]] -.Gabriel's paper backup of the mnemonic -[cols="<1,^50,<1,^50", width="80%"] -|=== -|*1.*| _army_ |*7.*| _garbage_ -|*2.*| _van_ |*8.*| _claim_ -|*3.*| _defense_ |*9.*| _echo_ -|*4.*| _carry_ |*10.*| _media_ -|*5.*| _jealous_ |*11.*| _make_ -|*6.*| _true_ |*12.*| _crunch_ -|=== - -[NOTE] -==== -A 12-word mnemonic is shown in <>, for -simplicity. In fact, most hardware wallets generate a more secure -24-word mnemonic. The mnemonic is used in exactly the same way, -regardless of length. -==== - -For the first implementation of his web store, Gabriel uses a single -Bitcoin address, generated on his Trezor device. This single address is -used by all customers for all orders. As we will see, this approach has -some drawbacks and can be improved upon with an HD wallet.((("", -startref="gabrielfive"))) - === Wallet Technology Details Let's now examine each of the important industry standards that are used