1
0
mirror of https://github.com/bitcoinbook/bitcoinbook synced 2024-11-22 16:18:11 +00:00

Edited ch01_intro.adoc with Atlas code editor

This commit is contained in:
rgordon 2023-09-29 20:40:40 +00:00
parent 43ac3ff6e5
commit 37617bb0a1

View File

@ -158,7 +158,7 @@ Bitcoin wallets are one of the most actively developed applications in the Bitco
===== Types of Bitcoin wallets ===== Types of Bitcoin wallets
Bitcoin wallets can be categorized as follows, according to the platform: Bitcoin wallets can be categorized as follows, according to the platform:
Desktop wallet:: A desktop wallet was the first type of Bitcoin wallet created as a reference implementation and many users run desktop wallets for the features, autonomy, and control they offer. Running on general-use operating systems such as Windows and Mac OS has certain security disadvantages, however, as these platforms are often insecure and poorly configured. Desktop wallet:: A desktop wallet was the first type of Bitcoin wallet created as a reference implementation and many users run desktop wallets for the features, autonomy, and control they offer. Running on general-use operating systems such as Windows and macOS has certain security disadvantages, however, as these platforms are often insecure and poorly configured.
Mobile wallet:: A mobile wallet is the most common type of Bitcoin Mobile wallet:: A mobile wallet is the most common type of Bitcoin
wallet. Running on smart-phone operating systems such as Apple iOS and wallet. Running on smart-phone operating systems such as Apple iOS and
@ -192,12 +192,11 @@ the security and privacy offered by that paired wallet plays a critical
role in how much security and privacy the user obtains when using the role in how much security and privacy the user obtains when using the
hardware signing device. hardware signing device.
===== Full-node vs. Lightweight ===== Full node versus Lightweight
Another way to categorize Bitcoin wallets is by their degree of autonomy and how they interact with the Bitcoin network: Another way to categorize Bitcoin wallets is by their degree of autonomy and how they interact with the Bitcoin network:
Full-node:: A full node is a program that validates the Full node:: A full node is a program that validates the
entire history of Bitcoin transactions (every transaction by every user, entire history of Bitcoin transactions (every transaction by every user, ever). Optionally, full nodes can also store previously validated
ever). Optionally, full nodes can also store previously validated
transactions and serve data to other Bitcoin programs, either on the transactions and serve data to other Bitcoin programs, either on the
same computer or over the internet. A full node uses substantial same computer or over the internet. A full node uses substantial
computer resources--about the same as watching an hour-long streaming computer resources--about the same as watching an hour-long streaming
@ -213,20 +212,20 @@ creates outgoing transactions.
Third-party API client:: A third-party Third-party API client:: A third-party
API client is one that interacts with Bitcoin through a third-party API client is one that interacts with Bitcoin through a third-party
system of application programming interfaces (APIs), rather than by system of APIs, rather than by
connecting to the Bitcoin network directly. The wallet may be stored by connecting to the Bitcoin network directly. The wallet may be stored by
the user or by third-party servers, but the client trusts the remote the user or by third-party servers, but the client trusts the remote
server to provide it with accurate information and protect its privacy. server to provide it with accurate information and protect its privacy.
[TIP] [TIP]
==== ====
Bitcoin is a Peer-to-Peer (P2P) network. Full nodes are the _peers:_ Bitcoin is a peer-to-peer (P2P) network. Full nodes are the _peers:_
each peer individually validates every confirmed transaction and can each peer individually validates every confirmed transaction and can
provide data to its user with complete authority. Lightweight wallets provide data to its user with complete authority. Lightweight wallets
and other software are _clients:_ each client depends on one or more peers and other software are _clients:_ each client depends on one or more peers
to provide it with valid data. Bitcoin clients can perform secondary to provide it with valid data. Bitcoin clients can perform secondary
validation on some of the data they receive and make connections to validation on some of the data they receive and make connections to
multiple peers to reduce their depedence on the integrity of a single multiple peers to reduce their dependence on the integrity of a single
peer, but the security of a client ultimately relies on the integrity of peer, but the security of a client ultimately relies on the integrity of
its peers. its peers.
==== ====
@ -235,8 +234,8 @@ its peers.
A very important additional consideration is _who controls the keys_. As A very important additional consideration is _who controls the keys_. As
we will see in subsequent chapters, access to bitcoins is we will see in subsequent chapters, access to bitcoins is
controlled by "private keys", which are like very long PIN numbers. If controlled by "private keys," which are like very long PINs. If
you are the only one to have *control* over these private you are the only one to have control over these private
keys, you are in control of your bitcoins. Conversely, if you do not have keys, you are in control of your bitcoins. Conversely, if you do not have
control, then your bitcoins are managed by a third-party who control, then your bitcoins are managed by a third-party who
ultimately controls your funds on your behalf. Key management software falls into two ultimately controls your funds on your behalf. Key management software falls into two
@ -267,7 +266,7 @@ and installs it on her phone.
When Alice runs her wallet application for the first time, she chooses When Alice runs her wallet application for the first time, she chooses
the option to create a new Bitcoin wallet. Because the wallet she has the option to create a new Bitcoin wallet. Because the wallet she has
chosen is a non-custodial wallet, Alice (and only Alice) will be in chosen is a noncustodial wallet, Alice (and only Alice) will be in
control of her keys. Therefore, she bears responsibility for backing control of her keys. Therefore, she bears responsibility for backing
them up, since losing the keys means she loses access to her bitcoins. To them up, since losing the keys means she loses access to her bitcoins. To
facilitate this, her wallet produces a _recovery code_ that can be used facilitate this, her wallet produces a _recovery code_ that can be used
@ -276,7 +275,7 @@ to restore her wallet.
[[recovery_code_intro]] [[recovery_code_intro]]
==== Recovery Codes ==== Recovery Codes
Most modern non-custodial Bitcoin wallets will provide a _recovery Most modern noncustodial Bitcoin wallets will provide a _recovery
code_ for their user code_ for their user
to back up. The recovery code usually consists of numbers, letters, or words to back up. The recovery code usually consists of numbers, letters, or words
selected randomly by the software, and is used as the basis for the keys selected randomly by the software, and is used as the basis for the keys
@ -284,7 +283,7 @@ that are generated by the wallet. See <<recovery_code_sample>> for
examples. examples.
[[recovery_code_sample]] [[recovery_code_sample]]
.Sample Recovery Codes .Sample recovery codes
[cols="1,1"] [cols="1,1"]
|=== |===
| Wallet | Recovery code | Wallet | Recovery code
@ -301,11 +300,11 @@ examples.
[TIP] [TIP]
==== ====
A recovery code is sometimes called a "mnemonic" or "mnemonic phrase", A recovery code is sometimes called a "mnemonic" or "mnemonic phrase,"
which implies you should memorize the phrase, but writing the phrase which implies you should memorize the phrase, but writing the phrase
down on paper takes less work and tends to be more reliable than most down on paper takes less work and tends to be more reliable than most
people's memories. Another alternative name is "seed phrase" because people's memories. Another alternative name is "seed phrase" because
it provides the input ("seed") to the function which generates all of it provides the input ("seed") to the function that generates all of
a wallet's keys. a wallet's keys.
==== ====
@ -323,8 +322,7 @@ wallets provide an additional backup feature beyond recovery codes.
For some wallets, that additional backup feature is even more important For some wallets, that additional backup feature is even more important
today than it used to be. Many Bitcoin payments are now made using today than it used to be. Many Bitcoin payments are now made using
_offchain_ technology, where not every payment is stored in the public block _offchain_ technology, where not every payment is stored in the public blockchain. This reduces user's costs and improves privacy, among other
chain. This reduces users costs and improves privacy, among other
benefits, but it means that a mechanism like recovery codes that depends on benefits, but it means that a mechanism like recovery codes that depends on
onchain data can't guarantee recovery of all of a user's bitcoins. For onchain data can't guarantee recovery of all of a user's bitcoins. For
applications with offchain support, it's important to make frequent applications with offchain support, it's important to make frequent
@ -350,9 +348,9 @@ asks for your recovery code any other time, consult with an expert to
ensure you aren't being phished. ensure you aren't being phished.
==== ====
==== Bitcoin addresses ==== Bitcoin Addresses
Alice is now ready to start using her new Bitcoin wallet. Her wallet application randomly generated a private key (described in more detail in <<private_keys>>) which will be used to derive Bitcoin addresses that direct to her wallet. At this point, her Bitcoin addresses are not known to the Bitcoin network or "registered" with any part of the Bitcoin system. Her Bitcoin addresses are simply numbers that correspond to her private key that she can use to control access to the funds. The addresses are generated independently by her wallet without reference or registration with any service. Alice is now ready to start using her new Bitcoin wallet. Her wallet application randomly generated a private key (described in more detail in <<private_keys>>) that will be used to derive Bitcoin addresses that direct to her wallet. At this point, her Bitcoin addresses are not known to the Bitcoin network or "registered" with any part of the Bitcoin system. Her Bitcoin addresses are simply numbers that correspond to her private key that she can use to control access to the funds. The addresses are generated independently by her wallet without reference or registration with any service.
[TIP] [TIP]
==== ====
@ -371,7 +369,7 @@ should generate a new invoice with a new address each time you request a
payment. payment.
==== ====
==== Receiving bitcoin ==== Receiving Bitcoin
Alice uses the _Receive_ button, which displays a QR code, shown in <<wallet_receive>>. Alice uses the _Receive_ button, which displays a QR code, shown in <<wallet_receive>>.
@ -434,7 +432,7 @@ Bitcoin, like most other currencies, has a _floating exchange rate_. That means
There are hundreds of applications and websites that can provide the current market rate. Here are some of the most popular: There are hundreds of applications and websites that can provide the current market rate. Here are some of the most popular:
https://bitcoinaverage.com/[Bitcoin Average]:: A site that provides a simple view of the volume-weighted-average for each currency. https://bitcoinaverage.com/[Bitcoin Average]:: A site that provides a simple view of the volume-weighted-average for each currency.
https://coincap.io/[CoinCap]:: A service listing the market capitalization and exchange rates of hundreds of crypto-currencies, including bitcoins. https://coincap.io/[CoinCap]:: A service listing the market capitalization and exchange rates of hundreds of cryptocurrencies, including bitcoins.
https://www.cmegroup.com/markets/cryptocurrencies/cme-cf-cryptocurrency-benchmarks.html?redirect=/trading/cryptocurrency-indices/cf-bitcoin-reference-rate.html[Chicago Mercantile Exchange Bitcoin Reference Rate]:: A reference rate that can be used for institutional and contractual reference, provided as part of investment data feeds by the CME. https://www.cmegroup.com/markets/cryptocurrencies/cme-cf-cryptocurrency-benchmarks.html?redirect=/trading/cryptocurrency-indices/cf-bitcoin-reference-rate.html[Chicago Mercantile Exchange Bitcoin Reference Rate]:: A reference rate that can be used for institutional and contractual reference, provided as part of investment data feeds by the CME.
In addition to these various sites and applications, some bitcoin In addition to these various sites and applications, some bitcoin
@ -455,8 +453,7 @@ scanner. This allows Joe to scan the barcode with his smartphone camera
so that he doesn't have to type in Alice's Bitcoin address, which is so that he doesn't have to type in Alice's Bitcoin address, which is
quite long. quite long.
Joe now has Alice's Bitcoin address set as the recipient. Joe enters the Joe now has Alice's Bitcoin address set as the recipient. Joe enters the amount as 0.001 bitcoins (BTC); see <<wallet-send>>. Some wallets may
amount as 0.001 bitcoins (BTC), see <<wallet-send>>. Some wallets may
show the amount in a different denomination: 0.001 BTC is 1 millibitcoin show the amount in a different denomination: 0.001 BTC is 1 millibitcoin
(mBTC) or 100,000 satoshis (sats). (mBTC) or 100,000 satoshis (sats).