1
0
mirror of https://github.com/bitcoinbook/bitcoinbook synced 2024-12-23 15:18:11 +00:00
bitcoinbook/ch01.asciidoc

556 lines
39 KiB
Plaintext
Raw Normal View History

[role="pagenumrestart"]
[[ch01_intro_what_is_bitcoin]]
== Introduction
=== What Is Bitcoin?
((("bitcoin", "defined", id="GSdefine01")))Bitcoin is a collection of concepts and technologies that form the basis of a digital money ecosystem. Units of currency called bitcoin are used to store and transmit value among participants in the Bitcoin network. Bitcoin users communicate with each other using the Bitcoin protocol primarily via the internet, although other transport networks can also be used. The Bitcoin protocol stack, available as open source software, can be run on a wide range of computing devices, including laptops and smartphones, making the technology easily accessible.
[TIP]
====
In this book, the unit of currency is called "bitcoin" with a small _b_,
and the system is called "Bitcoin", with a capital _B_.
====
Users can transfer bitcoin over the network to do just about anything
that can be done with conventional currencies, including buy and sell
goods, send money to people or organizations, or extend credit. Bitcoin
can be purchased, sold, and exchanged for other currencies at
specialized currency exchanges. Bitcoin in a sense is the perfect form
of money for the internet because it is fast, secure, and borderless.
Unlike traditional currencies, bitcoin is entirely virtual. There are no
2023-02-03 17:45:32 +00:00
physical coins or even individual digital coins. The coins are implied in
transactions that transfer value from sender to recipient. Users of
2023-02-03 17:45:32 +00:00
Bitcoin control keys that allow them to prove ownership of bitcoin in the
Bitcoin network. With these keys, they can sign transactions to unlock
the value and spend it by transferring it to a new owner. Keys are often
stored in a digital wallet on each users computer or smartphone.
Possession of the key that can sign a transaction is the only
prerequisite to spending bitcoin, putting the control entirely in the
hands of each user.
Bitcoin is a distributed, peer-to-peer system. As such, there is no
"central" server or point of control. Units of bitcoin
are created through a process called "mining," which involves competing
to find solutions to a mathematical problem that references a list of recent Bitcoin
transactions. Any participant in the Bitcoin network (i.e., anyone using
a device running the full Bitcoin protocol stack) may operate as a
miner, using their computer's processing power to help secure
transactions. Every 10 minutes, on average, a Bitcoin miner can add security to
past transactions and is rewarded with both brand new
bitcoin and the fees paid by recent transactions. Essentially, Bitcoin
mining decentralizes the currency-issuance
and clearing functions of a central bank and replaces the need for any
central bank.
The Bitcoin protocol includes built-in algorithms that regulate the
mining function across the network. The difficulty of the mathematical
task that miners must perform is adjusted dynamically so that, on
average, someone succeeds every 10 minutes regardless of how many miners
(and how much processing) are competing at any moment. The protocol also
halves the rate at which new bitcoin is created approximately every 4 years, and
limits the total number of bitcoin that will be created to a fixed total
just below 21 million coins. The result is that the number of bitcoin in
circulation closely follows an easily predictable curve where half of
the remaining coins are added to circulation every four years. By the
time this book has been published for ten years, 99% of all bitcoins
that will ever exist will have been issued. Due to bitcoin's
diminishing rate of issuance, over the long term, the Bitcoin currency
is deflationary. Furthermore, nobody can force you to accept bitcoin
that has been inflated by creating new bitcoins above and beyond the
expected issuance rate.
2021-12-07 12:57:06 +00:00
Behind the scenes, Bitcoin is also the name of the protocol, a peer-to-peer network, and a distributed computing innovation. Bitcoin represents the culmination of decades of research in cryptography and distributed systems and includes four key innovations brought together in a unique and powerful combination. Bitcoin consists of:
* A decentralized peer-to-peer network (the Bitcoin protocol)
* A public transaction ledger (the blockchain)
* ((("mining and consensus", "consensus rules", "satisfying")))A set of rules for independent transaction validation and currency issuance (consensus rules)
* A mechanism for reaching global decentralized consensus on the valid blockchain (Proof-of-Work algorithm)
As a developer, I see Bitcoin as akin to the internet of money, a network for propagating value and securing the ownership of digital assets via distributed computation. There's a lot more to Bitcoin than first meets the eye.
In this chapter we'll get started by explaining some of the main concepts and terms, getting the necessary software, and using Bitcoin for simple transactions. In the following chapters, we'll start unwrapping the layers of technology that make Bitcoin possible and examine the inner workings of the Bitcoin network and protocol.((("", startref="GSdefine01")))
[role="pagebreak-before less_space"]
.Digital Currencies Before Bitcoin
****
((("digital currencies", "prior to bitcoin")))The emergence of viable digital money is closely linked to developments in cryptography. This is not surprising when one considers the fundamental challenges involved with using bits to represent value that can be exchanged for goods and services. Three basic questions for anyone accepting digital money are:
2017-05-09 20:16:06 +00:00
1. Can I trust that the money is authentic and not counterfeit?
2017-04-26 17:08:26 +00:00
2. Can I trust that the digital money can only be spent once (known as the “double-spend” problem)?
2017-07-18 03:14:41 +00:00
3. Can I be sure that no one else can claim this money belongs to them and not me?
Issuers of paper money are constantly battling the counterfeiting problem by using increasingly sophisticated papers and printing technology. Physical money addresses the double-spend issue easily because the same paper note cannot be in two places at once. Of course, conventional money is also often stored and transmitted digitally. In these cases, the counterfeiting and double-spend issues are handled by clearing all electronic transactions through central authorities that have a global view of the currency in circulation. For digital money, which cannot take advantage of esoteric inks or holographic strips, cryptography provides the basis for trusting the legitimacy of a users claim to value. Specifically, cryptographic digital signatures enable a user to sign a digital asset or transaction proving the ownership of that asset. With the appropriate architecture, digital signatures also can be used to address the double-spend issue.
When cryptography started becoming more broadly available and understood in the late 1980s, many researchers began trying to use cryptography to build digital currencies. These early digital currency projects issued digital money, usually backed by a national currency or precious metal such as gold.
((("decentralized systems", "vs. centralized", secondary-sortas="centralized")))Although these earlier digital currencies worked, they were centralized and, as a result, were easy to attack by governments and hackers. Early digital currencies used a central clearinghouse to settle all transactions at regular intervals, just like a traditional banking system. Unfortunately, in most cases these nascent digital currencies were targeted by worried governments and eventually litigated out of existence. Some failed in spectacular crashes when the parent company liquidated abruptly. To be robust against intervention by antagonists, whether legitimate governments or criminal elements, a _decentralized_ digital currency was needed to avoid a single point of attack. Bitcoin is such a system, decentralized by design, and free of any central authority or point of control that can be attacked or corrupted.
****
=== History of Bitcoin
((("Nakamoto, Satoshi")))((("distributed computing")))((("bitcoin",
CH01::History: clarify Nakamoto & PoW facts - Bitcoin was invented in 2007 (not 2008) per Nakamoto saying he'd worked on it for about a year and a half prior to publication. Update text to just say "first described in 2008" - Of the inventions Bitcoin combined, b-money wasn't one of them. We know that Nakamoto sent his original paper to Adam Back, Back told Nakamoto about Wei Dai's b-mony, and Nakamoto contacted Dai in order to add the b-money reference to his paper as an example of a previous related idea. Nakamoto was aparently unaware of b-money before then and so couldn't have combined it with other ideas in the creation of bitcoin. Updated text from "b-money" to say "digital signatures", which is a critical technology that was obviously part of Bitcoin's original combination. - The text describes "the" critical invention of Bitcoin as using PoW to conduct an global election. Although that was critical, other factors may also have been critical (e.g. difficulty adjustments to keep the rate of issuance relatively constant). Updated text to say "a" critical invention. - Changed Bitcoin from exceeding the combined processing power of top super computers to exceeding the number of computing operations. It's not really fair to compare ASICs to general purpose CPU chips; it's like comparing a wrench to your hand. - Updated the dollar value of the largest transaction to "over a billion dollars"; dropped the amount of the transaction fee. I think this will better future-proof the text.
2023-02-03 19:08:29 +00:00
"history of")))Bitcoin was first described in 2008 with the publication of a
paper titled "Bitcoin: A Peer-to-Peer Electronic Cash
System,"footnote:["Bitcoin: A Peer-to-Peer Electronic Cash System,"
Satoshi Nakamoto (https://bitcoin.org/bitcoin.pdf).] written under the
alias of Satoshi Nakamoto (see <<satoshi_whitepaper>>). Nakamoto
CH01::History: clarify Nakamoto & PoW facts - Bitcoin was invented in 2007 (not 2008) per Nakamoto saying he'd worked on it for about a year and a half prior to publication. Update text to just say "first described in 2008" - Of the inventions Bitcoin combined, b-money wasn't one of them. We know that Nakamoto sent his original paper to Adam Back, Back told Nakamoto about Wei Dai's b-mony, and Nakamoto contacted Dai in order to add the b-money reference to his paper as an example of a previous related idea. Nakamoto was aparently unaware of b-money before then and so couldn't have combined it with other ideas in the creation of bitcoin. Updated text from "b-money" to say "digital signatures", which is a critical technology that was obviously part of Bitcoin's original combination. - The text describes "the" critical invention of Bitcoin as using PoW to conduct an global election. Although that was critical, other factors may also have been critical (e.g. difficulty adjustments to keep the rate of issuance relatively constant). Updated text to say "a" critical invention. - Changed Bitcoin from exceeding the combined processing power of top super computers to exceeding the number of computing operations. It's not really fair to compare ASICs to general purpose CPU chips; it's like comparing a wrench to your hand. - Updated the dollar value of the largest transaction to "over a billion dollars"; dropped the amount of the transaction fee. I think this will better future-proof the text.
2023-02-03 19:08:29 +00:00
combined several prior inventions such as digital signatures and Hashcash to create
a completely decentralized electronic cash system that does not rely on
a central authority for currency issuance or settlement and validation
of transactions. ((("Proof-of-Work algorithm")))((("decentralized
systems", "consensus in")))((("mining and consensus", "Proof-of-Work
CH01::History: clarify Nakamoto & PoW facts - Bitcoin was invented in 2007 (not 2008) per Nakamoto saying he'd worked on it for about a year and a half prior to publication. Update text to just say "first described in 2008" - Of the inventions Bitcoin combined, b-money wasn't one of them. We know that Nakamoto sent his original paper to Adam Back, Back told Nakamoto about Wei Dai's b-mony, and Nakamoto contacted Dai in order to add the b-money reference to his paper as an example of a previous related idea. Nakamoto was aparently unaware of b-money before then and so couldn't have combined it with other ideas in the creation of bitcoin. Updated text from "b-money" to say "digital signatures", which is a critical technology that was obviously part of Bitcoin's original combination. - The text describes "the" critical invention of Bitcoin as using PoW to conduct an global election. Although that was critical, other factors may also have been critical (e.g. difficulty adjustments to keep the rate of issuance relatively constant). Updated text to say "a" critical invention. - Changed Bitcoin from exceeding the combined processing power of top super computers to exceeding the number of computing operations. It's not really fair to compare ASICs to general purpose CPU chips; it's like comparing a wrench to your hand. - Updated the dollar value of the largest transaction to "over a billion dollars"; dropped the amount of the transaction fee. I think this will better future-proof the text.
2023-02-03 19:08:29 +00:00
algorithm")))A key innovation was to use a distributed computation
system (called a "Proof-of-Work" algorithm) to conduct a global
"election" every 10 minutes, allowing the decentralized network to
arrive at _consensus_ about the state of transactions. ((("double-spend
problem")))((("spending bitcoin", "double-spend problem")))This
elegantly solves the issue of double-spend where a single currency unit
can be spent twice. Previously, the double-spend problem was a weakness
of digital currency and was addressed by clearing all transactions
through a central clearinghouse.
The Bitcoin network started in 2009, based on a reference implementation
published by Nakamoto and since revised by many other programmers. The
implementation of the Proof-of-Work algorithm (mining) that provides
security and resilience for Bitcoin has increased in power
CH01::History: clarify Nakamoto & PoW facts - Bitcoin was invented in 2007 (not 2008) per Nakamoto saying he'd worked on it for about a year and a half prior to publication. Update text to just say "first described in 2008" - Of the inventions Bitcoin combined, b-money wasn't one of them. We know that Nakamoto sent his original paper to Adam Back, Back told Nakamoto about Wei Dai's b-mony, and Nakamoto contacted Dai in order to add the b-money reference to his paper as an example of a previous related idea. Nakamoto was aparently unaware of b-money before then and so couldn't have combined it with other ideas in the creation of bitcoin. Updated text from "b-money" to say "digital signatures", which is a critical technology that was obviously part of Bitcoin's original combination. - The text describes "the" critical invention of Bitcoin as using PoW to conduct an global election. Although that was critical, other factors may also have been critical (e.g. difficulty adjustments to keep the rate of issuance relatively constant). Updated text to say "a" critical invention. - Changed Bitcoin from exceeding the combined processing power of top super computers to exceeding the number of computing operations. It's not really fair to compare ASICs to general purpose CPU chips; it's like comparing a wrench to your hand. - Updated the dollar value of the largest transaction to "over a billion dollars"; dropped the amount of the transaction fee. I think this will better future-proof the text.
2023-02-03 19:08:29 +00:00
exponentially, and now exceeds the combined number of computing operations of the
world's top supercomputers. Bitcoin's total market value has at times
exceeded $1 trillion US dollars, depending on the bitcoin-to-dollar
exchange rate. The largest transaction processed so far by the network
CH01::History: clarify Nakamoto & PoW facts - Bitcoin was invented in 2007 (not 2008) per Nakamoto saying he'd worked on it for about a year and a half prior to publication. Update text to just say "first described in 2008" - Of the inventions Bitcoin combined, b-money wasn't one of them. We know that Nakamoto sent his original paper to Adam Back, Back told Nakamoto about Wei Dai's b-mony, and Nakamoto contacted Dai in order to add the b-money reference to his paper as an example of a previous related idea. Nakamoto was aparently unaware of b-money before then and so couldn't have combined it with other ideas in the creation of bitcoin. Updated text from "b-money" to say "digital signatures", which is a critical technology that was obviously part of Bitcoin's original combination. - The text describes "the" critical invention of Bitcoin as using PoW to conduct an global election. Although that was critical, other factors may also have been critical (e.g. difficulty adjustments to keep the rate of issuance relatively constant). Updated text to say "a" critical invention. - Changed Bitcoin from exceeding the combined processing power of top super computers to exceeding the number of computing operations. It's not really fair to compare ASICs to general purpose CPU chips; it's like comparing a wrench to your hand. - Updated the dollar value of the largest transaction to "over a billion dollars"; dropped the amount of the transaction fee. I think this will better future-proof the text.
2023-02-03 19:08:29 +00:00
was over a billion US dollars.
Satoshi Nakamoto withdrew from the public in April 2011, leaving the responsibility of developing the code and network to a thriving group of volunteers. The identity of the person or people behind Bitcoin is still unknown. ((("open source licenses")))However, neither Satoshi Nakamoto nor anyone else exerts individual control over the Bitcoin system, which operates based on fully transparent mathematical principles, open source code, and consensus among participants. The invention itself is groundbreaking and has already spawned new science in the fields of distributed computing, economics, and econometrics.
.A Solution to a Distributed Computing Problem
****
((("Byzantine Generals&#x27; Problem")))Satoshi Nakamoto's invention is
also a practical and novel solution to a problem in distributed
computing, known as the "Byzantine Generals' Problem." Briefly, the
problem consists of trying to get multiple participants without a leader
to agree on a course of action by exchanging information over an
unreliable and potentially compromised network. ((("central trusted
authority")))Satoshi Nakamoto's solution, which uses the concept of
Proof-of-Work to achieve consensus _without a central trusted
authority_, represents a breakthrough in distributed computing.
****
[[user-stories]]
=== Bitcoin Uses, Users, and Their Stories
((("bitcoin", "use cases", id="GSuses01")))Bitcoin is an innovation in the ancient technology of money. At its core, money simply facilitates the exchange of value between people. Therefore, in order to fully understand Bitcoin and its uses, we'll examine it from the perspective of people using it. Each of the people and their stories, as listed here, illustrates one or more specific use cases. We'll be seeing them throughout the book:
2021-12-07 12:57:06 +00:00
North American e-commerce retails::
((("use cases", "retail sales")))Alice lives in Northern California's Bay Area. She has heard about Bitcoin from her techie friends and wants to start using it. We will follow her story as she learns about Bitcoin, acquires some, and then spends her bitcoin to buy a laptop from Bob's online store. This story will introduce us to the software, the exchanges, and basic transactions from the perspective of a retail consumer.
North American high-value retail::
Carol is an art gallery owner in San Francisco. She sells expensive paintings for Bitcoin. This story will introduce the risks of a "51%" consensus attack for retailers of high-value items.
Offshore contract services::
((("offshore contract services")))((("use cases", "offshore contract services")))Bob, the cafe owner in Palo Alto, is building a new website. He has contracted with an Indian web developer, Gopesh, who lives in Bangalore, India. Gopesh has agreed to be paid in bitcoin. This story will examine the use of Bitcoin for outsourcing, contract services, and international wire transfers.
Web store::
((("use cases", "web store")))Gabriel is an enterprising young teenager in Rio de Janeiro, running a small web store that sells Bitcoin-branded t-shirts, coffee mugs, and stickers. Gabriel is too young to have a bank account, but his parents are encouraging his entrepreneurial spirit.
Charitable donations::
((("charitable donations")))((("use cases", "charitable donations")))Eugenia is the director of a children's charity in the Philippines. Recently she has discovered Bitcoin and wants to use it to reach a whole new group of foreign and domestic donors to fundraise for her charity. She's also investigating ways to use Bitcoin to distribute funds quickly to areas of need. This story will show the use of Bitcoin for global fundraising across currencies and borders and the use of an open ledger for transparency in charitable organizations.
Import/export::
((("use cases", "import/export")))Mohammed is an electronics importer in Dubai. He's trying to use Bitcoin to buy electronics from the United States and China for import into the UAE to accelerate the process of payments for imports. This story will show how Bitcoin can be used for large business-to-business international payments tied to physical goods.
Mining for bitcoin::
((("use cases", "mining for bitcoin")))Jing is a computer engineering student in Shanghai. He has built a "mining" rig to mine for bitcoin using his engineering skills to supplement his income. This story will examine the "industrial" base of Bitcoin: the specialized equipment used to secure the Bitcoin network and issue new currency.
Each of these stories is based on the real people and real industries currently using Bitcoin to create new markets, new industries, and innovative solutions to global economic issues.((("", startref="GSuses01")))
=== Getting Started
((("getting started", "wallet selection",
id="GSwallet01")))((("wallets", "selecting",
id="Wselect01")))((("bitcoin", "getting started",
2023-02-03 17:45:32 +00:00
id="BCbasic01")))Bitcoin is a protocol that can be accessed using an
application that speaks the protocol. A "Bitcoin wallet" is the
most common user interface to the Bitcoin system, just like a web
browser is the most common user interface for the HTTP protocol. There
are many implementations and brands of Bitcoin wallets, just like there
are many brands of web browsers (e.g., Chrome, Safari, Firefox, and
Internet Explorer). And just like we all have our favorite browsers
(Mozilla Firefox, Yay!) and our villains (Internet Explorer, Yuck!),
Bitcoin wallets vary in quality, performance, security, privacy, and
reliability. There is also a reference implementation of the Bitcoin
2023-02-03 17:45:32 +00:00
protocol that includes a wallet, known as "Bitcoin Core," which is
derived from the original implementation written by Satoshi Nakamoto.
==== Choosing a Bitcoin Wallet
((("security", "wallet selection")))Bitcoin wallets are one of the most actively developed applications in the Bitcoin ecosystem. There is intense competition, and while a new wallet is probably being developed right now, several wallets from last year are no longer actively maintained. Many wallets focus on specific platforms or specific uses and some are more suitable for beginners while others are filled with features for advanced users. Choosing a wallet is highly subjective and depends on the use and user expertise. Therefore it would be pointless to recommend a specific brand or wallet. However, we can categorize Bitcoin wallets according to their platform and function and provide some clarity about all the different types of wallets that exist. Better yet, moving keys or seeds between Bitcoin wallets is relatively easy, so it is worth trying out several different wallets until you find one that fits your needs.
[role="pagebreak-before"]
2021-12-07 12:57:06 +00:00
===== Types of Bitcoin wallets
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.
Mobile wallet:: A mobile wallet is the most common type of Bitcoin
wallet. Running on smart-phone operating systems such as Apple iOS and
Android, these wallets are often a great choice for new users. Many are
designed for simplicity and ease-of-use, but there are also fully
featured mobile wallets for power users. To avoid downloading and
storing large amounts of data, most mobile wallets retrieve information
from remote servers, reducing your privacy by disclosing information
about your Bitcoin addresses and balances to third parties.
Web wallet:: Web wallets are accessed through a web browser and store
the user's wallet on a server owned by a third party. This is similar to
webmail in that it relies entirely on a third-party server. Some of
these services operate using client-side code running in the user's
browser, which keeps control of the Bitcoin keys in the hands of the
user, although the user's dependence on the server still compromises
their privacy. Most, however, take control of the Bitcoin keys from
users in exchange for ease-of-use. It is inadvisable
to store large amounts of bitcoin on third-party systems.
Hardware signing devices:: Hardware signing devices are devices that can
store keys and sign transactions using a special-purpose hardware and
software. They usually
connect to a desktop, mobile, or web wallet via USB cable,
near-field-communication (NFC), or a camera with QR codes. By handling
all Bitcoin-related operations on the specialized hardware, these
wallets are less vulnerable to many types of attacks. Hardware signing
devices are sometimes called "hardware wallets", but they need to be
paired with a full-featured wallet to send and receive transactions, and
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
hardware signing device.
2021-12-07 12:57:06 +00:00
===== Full-node vs. Lightweight
Another way to categorize bitcoin wallets is by their degree of autonomy and how they interact with the Bitcoin network:
Full-node:: ((("full-node")))A full node is a program that validates the
entire history of Bitcoin transactions (every transaction by every user,
ever). Optionally, full nodes can also store previously validated
transactions and serve data to other Bitcoin programs, either on the
same computer or over the internet. A full node uses substantial
computer resources--about the same as watching a streaming video for an
hour--but offers complete autonomy to its users.
Lightweight client:: ((("lightweight
clients")))((("simplified-payment-verification (SPV)")))A lightweight
client, also known as a simplified-payment-verification (SPV) client,
connects to Bitcoin full nodes (mentioned previously) for access to the
Bitcoin transaction information, but stores the user wallet locally and
independently creates, validates, and transmits transactions.
Lightweight clients interact directly with the Bitcoin network, without
an intermediary.
Third-party API client:: ((("third-party API clients")))A third-party
API client is one that interacts with Bitcoin through a third-party
system of application programming interfaces (APIs), rather than by
connecting to the Bitcoin network directly. The wallet may be stored by
the user or by third-party servers, but all transactions go through a
third party.
[TIP]
====
Bitconin is a Peer-to-Peer (P2P) network. Full nodes are the *peers:*
each peer individually validates every confirmed transaction and can
provide data to its user with complete authority. Lightweight wallets
and other software are *clients:* each client depends on one or more peers
to provide it with valid data. Bitcoin clients can perform secondary
validation on some of the data they receive and make connections to
multiple peers to reduce their depedence on the integrity of a single
peer, but the security of a client ultimately relies on the integrity of
its peers.
====
2021-12-07 12:57:06 +00:00
===== Custodial vs. Non-Custodial
_Your keys, your coins. Not your keys, not your coins_.
A very important additional consideration is _who controls the keys_. As
we will see in subsequent chapters, access to bitcoin (funds) is
controlled by "private keys", which are like very long PIN numbers. If
you are the only one to have *custody* and *control* over these private
keys, you are in control of your bitcoin. Conversely, if you do not have
custody, then your bitcoin is managed by a third-party custodian, who
ultimately controls your funds on your behalf. Wallets fall into two
important categories based on custody: _non-custodial_ wallets where you
control the keys and the funds and _custodial_ wallets where some
third-party controls the keys. To emphasize this point, the author of
this book coined the phrase:
Combining these categorizations, many Bitcoin wallets fall into a few
groups, with the three most common being desktop full client
(non-custodial), mobile lightweight wallet (non-custodial), and web
third-party wallet (custodial). The lines between different categories
are often blurry, as many wallets run on multiple platforms and can
interact with the network in different ways.
For the purposes of this book, we will be demonstrating the use of a
variety of downloadable Bitcoin clients, from the reference
implementation (Bitcoin Core) to mobile and web wallets. Some of the
examples will require the use of Bitcoin Core, which, in addition to
being a full client, also exposes APIs to the wallet, network, and
transaction services. If you are planning to explore the programmatic
interfaces into the Bitcoin system, you will need to run Bitcoin Core,
or one of the alternative clients.((("", startref="GSwallet01")))((("",
startref="Wselect01")))
==== Quick Start
((("getting started", "quick start example",
id="GSquick01")))((("wallets", "quick start example",
id="Wquick01")))Alice, who we introduced in <<user-stories>>, is not a
technical user and only recently heard about Bitcoin from her friend
Joe. While at a party, Joe is once again enthusiastically explaining
Bitcoin to all around him and is offering a demonstration. Intrigued,
Alice asks how she can get started with Bitcoin. Joe says that a mobile
wallet is best for new users and he recommends a few of his favorite
wallets. Alice downloads "Bluewallet" (available for iOS and Android)
and installs it on her phone.
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
chosen is a non-custodial wallet, Alice (and only Alice) will be in
control of her keys. Therefore, she bears responsibility for backing
them up, since losing the keys means she loses access to the bitcoin. To
facilitate this, her wallet produces a _recovery code_ (explained more in
<<recovery_code_intro>>) that can be used
to restore her wallet.
Let's elaborate a bit on the recovery code, next.
[[recovery_code_intro]]
==== Recovery Code
Most modern non-custodial Bitcoin wallets will provide a _recovery
code_ for their user
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
that are generated by the wallet. Sample recovery codes from different wallets are shown in
<<recovery_code_sample>>.
[[recovery_code_sample]]
[cols="1,1"]
|===
| Wallet | Recovery code
| BlueWallet
| (1) media (2) suspect (3) effort (4) dish (5) album (6) shaft (7) price (8) junk (9) pizza (10) situate (11) oyster (12) rib
| Electrum
| nephew dog crane clever quantum crazy purse traffic repeat fruit old clutch
| Muun
| LAFV TZUN V27E NU4D WPF4 BRJ4 ELLP BNFL
|===
[TIP]
====
A recovery code phrase is sometimes called a "mnemonic" or "mnemonic 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
people's memories. Another alternative name is "seed phrase" because
it provides the input ("seed") to the function which generates all of
a wallet's keys.
====
If something happens to Alice's wallet, she can download a new copy of
her wallet software and enter this recovery code to rebuild the wallet
database of all the onchain transactions she's ever sent or received.
However, recovering from the recovery code will not by itself restore any additional
data Alice entered into her wallet, such as the names she associated
with particular addresses or transactions. Although losing access to
that metadata isn't as important as losing access to money, it can
still be important in its own way. Imagine you need to review an old
bank or credit card statement and the name of every entity you paid (or
who paid you) has been blanked out. To prevent losing metadata, many
wallets provide an additional backup feature beyond recovery codes.
For some wallets, that additional backup feature is even more important
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
chain. This reduces users costs and improves privacy, among other
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
applications with offchain support, it's important to make frequent
backups of the wallet database.
Of note, when receiving funds to a new mobile wallet for the first time,
many wallets will often re-verify that you have securely backed-up your
recovery code. This can range from a simple prompt to requiring the
user to manually re-enter the code.
[WARNING]
====
Although many legitimate wallets will prompt their user to re-enter
your recovery code, there are also many malware applications that mimic the
design of a wallet, insist you enter your recovery code, and then
relay any entered phrases to the malware developer so they can steal
your funds. This is the equivilent of phishing websites that try to
trick you into giving them your bank passphrase. For most wallet
applications, the only times they will ask for your recovery code are during
the initial set up (before you have received any bitcoins) and during
recovery (after you lost access to your original wallet). If the application
asks for your recovery code any other time, consult with an expert to
ensure you aren't being phished.
====
2021-12-07 12:57:06 +00:00
==== Running the wallet application
2021-03-11 09:20:32 +00:00
2021-12-07 12:57:06 +00:00
==== Bitcoin addresses
2021-03-11 09:20:32 +00:00
2021-12-07 12:57:06 +00:00
Alice is now ready to start using her new bitcoin wallet. ((("", startref="GSquick01")))((("", startref="Wquick01"))) 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 random 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.
2021-03-11 09:20:32 +00:00
[TIP]
====
((("addresses", "security of")))((("security", "bitcoin addresses")))There
are a variety of Bitcoin addresses and formats for sharing Bitcoin
invoices. Addresses and invoices can be shared with other bitcoin users
who can use them to send bitcoin directly to your wallet. You can share
an address or invoice with other people without worrying about the
security of your bitcoins. Unlike a bank account number, nobody who
learns one of your Bitcoin addresses can withdraw money from your wallet--you
must initiate all spends. However, if you give two people the same
address, they will be able to see how much bitcoin the other person sent
you. If you post your address publicly, everyone will be able to see
how much bitcoin other people sent you. To protect your privacy, you
should generate a new invoice with a new address each time you request a
payment.
2021-03-11 09:20:32 +00:00
====
2021-12-07 12:57:06 +00:00
In most wallets, there is no association between a Bitcoin address and any externally identifiable information including the user's identity. Until the moment an address is referenced as the recipient of value in a transaction posted on the bitcoin ledger, the Bitcoin address is simply part of the vast number of possible addresses that are valid in bitcoin. Only once an address has been associated with a transaction does it become part of the known addresses in the network.
==== Receiving bitcoin
Alice uses the _Receive_ button, which displays a QR code along with a Bitcoin address, shown in <<bluewallet_receive>>.
[[bluewallet_receive]]
.Alice uses the Receive screen on her Bluewallet mobile Bitcoin wallet, and displays her address to Bob in a QR code format
image::images/mbc2_0101.png["BluewalletWelcome"]
The QR code is the square with a pattern of black and white dots, serving as a form of barcode that contains the same information in a format that can be scanned by Joe's smartphone camera. Next to the wallet's QR code is the Bitcoin address it encodes, and Alice may choose to manually send her address to Joe by copying it onto her clipboard with a tap.
[WARNING]
====
Do not send money to the addresses in this book, it will be lost. Despite this warning people try to scan and send money, so the QR codes and addresses are blurred in the wallet screenshots.
====
[[getting_first_bitcoin]]
==== Getting Your First Bitcoin
((("getting started", "acquiring bitcoin")))The first and often most difficult task for new users is to acquire some bitcoin. Unlike other foreign currencies, you cannot yet buy bitcoin at a bank or foreign exchange kiosk.
Bitcoin transactions are irreversible. Most electronic payment networks such as credit cards, debit cards, PayPal, and bank account transfers are reversible. For someone selling bitcoin, this difference introduces a very high risk that the buyer will reverse the electronic payment after they have received bitcoin, in effect defrauding the seller. To mitigate this risk, companies accepting traditional electronic payments in return for bitcoin usually require buyers to undergo identity verification and credit-worthiness checks, which may take several days or weeks. As a new user, this means you cannot buy bitcoin instantly with a credit card. With a bit of patience and creative thinking, however, you won't need to.
[role="pagebreak-before"]
Here are some methods for getting bitcoin as a new user:
* Find a friend who has bitcoin and buy some from him or her directly. Many bitcoin users start this way. This method is the least complicated. One way to meet people with bitcoin is to attend a local bitcoin meetup listed at https://bitcoin.meetup.com[Meetup.com].
* Use a classified service such as pass:[<a class="orm:hideurl" href="https://localbitcoins.com/">localbitcoins.com</a>] to find a seller in your area to buy bitcoin for cash in an in-person transaction.
* Earn bitcoin by selling a product or service for bitcoin. If you are a programmer, sell your programming skills. If you're a hairdresser, cut hair for bitcoin.
* ((("Coin ATM Radar")))((("ATMs, locating")))Use a bitcoin ATM in your city. A bitcoin ATM is a machine that accepts cash and sends bitcoin to your smartphone bitcoin wallet. Find a bitcoin ATM close to you using an online map from http://coinatmradar.com[Coin ATM Radar].
* ((("exchange rates", "listing services")))Use a bitcoin currency exchange linked to your bank account. Many countries now have currency exchanges that offer a market for buyers and sellers to swap bitcoin with local currency. Exchange-rate listing services, such as https://bitcoinaverage.com[BitcoinAverage], often show a list of bitcoin exchanges for each currency.
[TIP]
====
((("privacy, maintaining")))((("security", "maintaining
privacy")))((("digital currencies", "currency exchanges")))((("currency
exchanges")))((("digital currencies", "benefits of
bitcoin")))((("bitcoin", "benefits of")))One of the advantages of
bitcoin over other payment systems is that, when used correctly, it
affords users much more privacy. Acquiring, holding, and spending
bitcoin does not require you to divulge sensitive and personally
identifiable information to third parties. However, where bitcoin
touches traditional systems, such as currency exchanges, national and
international regulations often apply. In order to exchange bitcoin for
your national currency, you will often be required to provide proof of
identity and banking information. Users should be aware that once a
Bitcoin address is attached to an identity, all associated bitcoin
transactions are also easy to identify and track. This is one reason
many users choose to maintain dedicated exchange accounts unlinked to
their wallets.
====
Alice was introduced to bitcoin by a friend so she has an easy way to acquire her first bitcoin. Next, we will look at how she buys bitcoin from her friend Joe and how Joe sends the bitcoin to her wallet.
[[bitcoin_price]]
==== Finding the Current Price of Bitcoin
((("getting started", "exchange rates")))((("exchange rates", "determining")))Before Alice can buy bitcoin from Joe, they have to agree on the _exchange rate_ between bitcoin and US dollars. This brings up a common question for those new to bitcoin: "Who sets the bitcoin price?" The short answer is that the price is set by markets.
((("exchange rates", "floating")))((("floating exchange rate")))Bitcoin, like most other currencies, has a _floating exchange rate_. That means that the value of bitcoin vis-a-vis any other currency fluctuates according to supply and demand in the various markets where it is traded. For example, the "price" of bitcoin in US dollars is calculated in each market based on the most recent trade of bitcoin and US dollars. As such, the price tends to fluctuate minutely several times per second. A pricing service will aggregate the prices from several markets and calculate a volume-weighted average representing the broad market exchange rate of a currency pair (e.g., BTC/USD).
2017-04-26 17:08:26 +00:00
There are hundreds of applications and websites that can provide the current market rate. Here are some of the most popular:
http://bitcoinaverage.com/[Bitcoin Average]:: ((("BitcoinAverage")))A site that provides a simple view of the volume-weighted-average for each currency.
http://coincap.io/[CoinCap]:: A service listing the market capitalization and exchange rates of hundreds of crypto-currencies, including bitcoin.
http://bit.ly/cmebrr[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
wallets will automatically convert amounts between bitcoin and other
currencies. Joe will use his wallet to convert the price automatically
before sending bitcoin to Alice.
[[sending_receiving]]
==== Sending and Receiving Bitcoin
((("getting started", "sending and receiving bitcoin",
id="GSsend01")))((("spending bitcoin", "bitcoin wallet quick start
example")))((("spending bitcoin", see="also transactions")))Alice has
decided to exchange $100 US dollars for bitcoin. She gives Joe $100 in
cash, opens her mobile wallet application, and selects Receive. This
displays a QR code with Alice's first Bitcoin address.
Joe then selects Send on his smartphone wallet and is presented with a screen containing two inputs:
* A destination bitcoin address
* The amount to send, in Bitcoin (BTC) or his local currency (USD)
2021-12-07 12:57:06 +00:00
[[bluewallet-mobile-send]]
[role="smallereighty"]
.Airbitz mobile bitcoin wallet send screen
image::images/mbc2_0102.png["airbitz mobile send screen"]
2021-12-07 12:57:06 +00:00
In the input field for the Bitcoin address, there is a small icon that looks like a QR code. 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 quite long and difficult to type. Joe taps the QR code icon and activates the smartphone camera, scanning the QR code displayed on Alice's smartphone.
Joe now has Alice's Bitcoin address set as the recipient. Joe enters the amount as $10 US dollars and his wallet converts it by accessing the most recent exchange rate from an online service. The exchange rate at the time is $100 US dollars per bitcoin, so $10 US dollars is worth 0.10 bitcoin (BTC), or 100 millibitcoin (mBTC) as shown in the screenshot from Joe's wallet (see <<bluewallet-mobile-send>>).
[TIP]
====
2021-12-07 12:57:06 +00:00
The price of bitcoin has changed a lot over time, and an incredible amount since the first edition of this book was written. As of October 2021, a person would need approximately $67,000 USD to purchase one whole bitcoin. When the first edition of this book was written, a bitcoin was worth less than $500 USD.
====
He also selects a transaction fee for his transaction. The higher the transaction fee, the faster his transaction will be confirmed (included in a block by a miner). He selects the minimum transaction fee possible at that time (1 satoshi/vbyte).
Joe then carefully checks to make sure he has entered the correct
amount, because he is about to transmit money and mistakes are
irreversible. After double-checking the address and amount, he presses
Send to transmit the transaction. Joe's mobile Bitcoin wallet constructs
a transaction that assigns 0.10 BTC to the address provided by Alice,
sourcing the funds from Joe's wallet and signing the transaction with
Joe's private keys. This tells the Bitcoin network that Joe has
authorized a transfer of value to Alice's new address. As the
transaction is transmitted via the peer-to-peer protocol, it quickly
propagates across the Bitcoin network. In less than a second, most of
the well-connected nodes in the network receive the transaction and see
Alice's address for the first time.
Meanwhile, Alice's wallet is constantly "listening" to published
transactions on the Bitcoin network, looking for any that match the
addresses it contains. A few seconds after Joe's wallet transmits the
transaction, Alice's wallet will indicate that it is receiving
0.00194401 BTC.
2021-03-11 09:02:28 +00:00
.Confirmations
****
((("getting started", "confirmations")))((("confirmations", "bitcoin wallet quick start example")))((("confirmations", see="also mining and consensus; transactions")))((("clearing", seealso="confirmations")))At first, Alice's address will show the transaction from Joe as "Unconfirmed." This means that the transaction has been propagated to the network but has not yet been recorded in the bitcoin transaction ledger, known as the blockchain. To be confirmed, a transaction must be included in a block and added to the blockchain, which happens every 10 minutes, on average. In traditional financial terms this is known as _clearing_. For more details on propagation, validation, and clearing (confirmation) of bitcoin transactions, see <<mining>>.
****
2021-12-07 12:57:06 +00:00
Alice is now the proud owner of 0.002 BTC that she can spend. Over the next few days, Alice buys more bitcoin using an ATM and an exchange. In the next chapter we will look at her first purchase with bitcoin, and examine the underlying transaction and propagation technologies in more detail.((("", startref="BCbasic01")))