mirror of
https://github.com/bitcoinbook/bitcoinbook
synced 2025-02-03 11:21:41 +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
|
Applications which do both will usually conform to the standards for
|
||||||
implicit paths and also provide descriptors.
|
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
|
=== Wallet Technology Details
|
||||||
|
|
||||||
Let's now examine each of the important industry standards that are used
|
Let's now examine each of the important industry standards that are used
|
||||||
|
Loading…
Reference in New Issue
Block a user