mirror of
https://github.com/bitcoinbook/bitcoinbook
synced 2025-01-24 06:31:12 +00:00
CH05::best practices/using wallet: remove these sections
The previous version of this chapter focused on a single set of technologies: BIP32 HD wallets, BIP39 seeds, and BIP43/44 paths. The previous Best Practices section described these as a de facto standard. In the rewrite of this chapter, we've introduced several alternatives for BIP39 seeds and BIP43/44 paths, all of which are good practices. I have my opinions about what might best, but I think it's entirely possible for a reasonable person to conclude one of the other choices is best, so we remove that section. The Using A Wallet section was redundant; we've already introduce all of those concepts.
This commit is contained in:
parent
c82128839a
commit
eb7164212e
103
ch05.asciidoc
103
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 <<user-stories>> 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 (<<a_trezor_device>>) 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_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
|
||||
<<mnemonic_paper_backup>>) 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 <<mnemonic_paper_backup>>, 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
|
||||
|
Loading…
Reference in New Issue
Block a user