1
0
mirror of https://github.com/bitcoinbook/bitcoinbook synced 2024-11-23 00:28:14 +00:00
Commit Graph

3995 Commits

Author SHA1 Message Date
David A. Harding
33402f685d Anchors: rename "cup_of_coffee" to "spending_bitcoin" 2023-02-05 13:33:02 -10:00
David A. Harding
6056b0438b CH03::Bitcoin Core wallet warning: drop
Bitcoin Core works fine as a wallet (and I personally use it).  Although
it doesn't implement BIP39, it does implement BIP32 and many other
standards, including some significant improvements over other wallets
(such as descriptors and HWI support ).  It's also the easiest way to
take advantage of the additional verification and privacy advantages of
running a full node.
2023-02-05 13:33:02 -10:00
David A. Harding
4131102e9c CH03::malleability: correct statement about malleability after confirmation
Txids can be mutated after confirmation, it's just rare.  Update text to
state this.
2023-02-05 13:33:02 -10:00
David A. Harding
aa316f415b CH03::config: update/clarify configuration option descriptions 2023-02-05 13:33:02 -10:00
David A. Harding
b8a1ef31ad CH03::running a node: clarify benefits
- Move "don't need to rely on third parties" to the top of the list

- Add the privacy benefit of a full node

- Clarify that running a full node only makes the network more robust if
  you use it to verify your own wallet transactions
2023-02-05 13:33:02 -10:00
David A. Harding
8e9fc4485c CH03::running a node: update resource requirements
- Update resource requirements to their 2023 figures (and mention that
  they may increase in the future).

- Be more precise about the minimal data a node needs, e.g. disk space
  requirements with pruning enabled and bandwidth in blocks-only mode.

- Mention bandwidth alternatives, like Blockstream Satellite

- Drop text about running on a VPS, since that's not useful to the
  network and not sure for anyone using a wallet.
2023-02-05 13:33:02 -10:00
David A. Harding
ff1d3fb92e CH03::building: mention daemon & Unix; link to other instructions
- Add just a few words so users know what the "d" in bitcoind and the
  "Unix" in build-unix.md stand for.

- Since the last update to this text, there are instructions for many
  more platforms available, so rewrite final sentence to alert users to
  them.
2023-02-05 13:33:02 -10:00
David A. Harding
5f2c61e71b CH03::shell & code examples: update for 2023 2023-02-05 13:33:02 -10:00
David A. Harding
922ef94b6d CH03::intro: correct Nakamoto facts; clarify Bitcoin Core details
- Previous text said Bitcoin (Core) was "completed" before the Nakamoto
  paper was written, but Nakamoto sent unfinished code to Hal Finney and
  others after the paper was published but prior to the public software
  release, suggesting Bitcoin wasn't completed at that time.  This also
  ignores the two updates (at least) which Nakamoto made to the Bitcoin
  paper after the network was started.  It also seems much more likely
  to me that parts of the code and the paper were written in tandem.

  Update text to say "mostly completed" and "published".

- Drop word "authoritative" from the description of Bitcoin Core as a
  reference implementation.  There's no authority here.

- Change problematic "full network node" language; see edits to previous
  chapters.
2023-02-05 13:33:02 -10:00
David A. Harding
69caac4b17 CH03: reflow text so that future diffs will be more readable 2023-02-05 13:33:02 -10:00
David A. Harding
05c956e6a9 CH02: minor edits for consistency, voice, and correctness 2023-02-05 13:33:02 -10:00
David A. Harding
e472d344af CH02::mining: explain how confirmations add security
Previous text didn't explain how including a transaction in a block
gave it security.  We add a short explanation here, knowing that we'll
go into more detail in the mining chapter.
2023-02-05 13:33:02 -10:00
David A. Harding
cb3420c572 CH02::mining: replace sudoku example with accurate description
This takes up the same amount of space and is (I think) just as easy to
understand, but avoids the indirection of a metaphorical example and
some of the confusions it can create, e.g. that mining is a race to
complete a puzzle rather than a memoryless lottery.

We also remove a later desciption of PoW which is now redundant.
2023-02-05 13:33:02 -10:00
David A. Harding
2612342b9e CH02::mining: clarify what security miners provide re: valid txes 2023-02-05 13:33:02 -10:00
David A. Harding
08c1b635a1 CH02::mining: clarify that putting txes in blocks isn't hard
It's just forming the header correctly that's hard.

Also remove the word trust, since Bitcoin doesn't depend on "trust in
computation".
2023-02-05 13:33:02 -10:00
David A. Harding
a543abe388 CH02::Bobs view: remove tipbox about unconfirmed safety
This advice may have been somewhat accurate when the first edition of
this book was published and opt-in replace-by-fee wasn't available, but
that's no longer the case.  And now, especially, with default
replace-by-fee on the probable horizon, there's even less safety in
accepting unconfirmed transactions as final without some type of
secondary protection.
2023-02-05 13:33:02 -10:00
David A. Harding
e338f0ddc7 CH02::Bobs view: clarify what Bob's wallet sees (peer vs client)
Clarify what Bob's wallet can see if it's a lightweight client versus a
full node peer.
2023-02-05 13:33:02 -10:00
David A. Harding
fddaace478 CH02::propagation: mention non-node relay and s/flooding/gossiping/
- Alice can send her transaction to software that will forward it to a
  node for her.  This is very common today.

- Previous text used the term "flooding" but the more common phrase for
  this particular propagation technique is "gossiping".
2023-02-05 13:33:02 -10:00
David A. Harding
8aa01e03aa CH02::propagation: define full node / peer 2023-02-05 13:33:02 -10:00
David A. Harding
3af9bb8e93 CH02::tx propagation: use "full node" and "lightweight client"
Per the updated infobox in CH01, we stop using the name "clients" for
full nodes; they're peers.  We also clarify that miners commit effort to
blocks rather than necessary prove them valid.
2023-02-05 13:33:02 -10:00
David A. Harding
a40d5456f3 CH02: remove some more unnecessary specific values
Will make updating the text in the future easier.
2023-02-05 13:33:02 -10:00
David A. Harding
ab4935b2a8 CH02::creating outputs: remove block explorer image
Don't have enough space for readable text at a good resolution.
There's still a link for anyone who wants to see the tx.
2023-02-05 13:33:02 -10:00
David A. Harding
1601de2634 CH02::getting inputs: update example for new input for Alice
This uses the same address used in the updated CH01 screenshots.

We also mention that the output index number and script are needed for
spending.
2023-02-05 13:33:02 -10:00
David A. Harding
58643749fb CH02::getting inputs: warn about privacy for address lookup calls 2023-02-05 13:33:02 -10:00
David A. Harding
fbdb840923 CH02::getting inputs: introduce UTXO term
Introduce the UTXO term as it is one of the most essential concepts to
understanding how Bitcoin works and is widely used in other Bitcoin
technical documentation.
2023-02-05 13:33:02 -10:00
David A. Harding
2753d8cd8d CH02::constructing: clarify offline requirements
Previous text said that wallets can construct tranactions offline.  Add
clarification that this requires the wallet to already know what inputs
it controls.
2023-02-05 13:33:02 -10:00
David A. Harding
fa7a385c83 CH02::common tx forms: introduce technical terms
- *consolidation transaction_ for what was previously called an
  aggregating transaction

- *payment batching* for paying multiple outputs
2023-02-05 13:33:02 -10:00
David A. Harding
e458e803cd CH02::tx chain: remove repetitive summary paragraph 2023-02-04 21:17:35 -10:00
David A. Harding
a20a159cb5 CH02::coin selection: make its own subsection 2023-02-04 21:17:35 -10:00
David A. Harding
a4327fa4fe CH02::Change update for illustration, add detail
- Update text to refer to new illustration

- Introduce the term "change output" in addition to existing term
  "change address"

- Add information about the privacy advantages of unique change
  addresses
2023-02-04 21:17:35 -10:00
David A. Harding
b05a5ee6f8 CH02::chain of txes: update illustration, add detail
- Previous illustration was cut-off, both in the source and the print
  edition.  We update the illustration to not only correct that but also
  provide more accuracy:

    - Instead of showing input values, the illustration now shows input
      references to prevouts.

    - Instead of using BTC denomination, it use satoshis

    - Instead of putting tx fees in the output category, it shows them
      outside the transaction since they're an implicit value

    - The source for the new illustration is provided as a comment to
      make future editing easier

- The text is updated to refer to the new illustration appropriately.

- Text now mentions the implicit input value

- We describe that we use satoshi values because that's what's in the
  protocol
2023-02-04 21:17:35 -10:00
David A. Harding
4725f0f51d CH02::Alice pays Bob: change example from laptop to podcast episode
Before earlier edits, the second edition text for this chapter was about
buying a cup of coffee.  The edits changed it to a laptop.  The risk
profile of a cup of coffee and a laptop are different, making some parts
of the text problematic, e.g. Bob accepting payment without waiting for
confirmation.

This update replaces the example with Alice buying a premium podcast
episode, which has a very low risk profile.
2023-02-04 21:17:35 -10:00
David A. Harding
3d9794f65a CH02::Alice pays Bob: remove text about payment completion
Existing text claimed that Alice's unconfirmed transaction completed the
payment to Bob, but Bob would be wise to wait for a $750 transaction to
confirm.

I think this is a problem resulting from a previous edit to the
second-edition text where the example was changed from a cup of coffee
at a cafe to a laptop.  A cup of coffee is cheap and has no resale
value, so the chance of fraud is small; a laptop is expensive and has
significant resale value, making fraud a greater risk.
2023-02-04 21:17:35 -10:00
David A. Harding
fef1182828 CH02: remove some specific amounts
Remove some specific amounts and numbers to make updating the text in
the future easier.  The removed values don't add anything to the text.
2023-02-04 21:17:33 -10:00
David A. Harding
7a5351efa8 CH02::invoice: replace "payment request" with "invoice"
The payment request language is confusing because BIP70 payment requests
look a lot like the URI used here but this is not a BIP70 payment
request (and BIP70 is dead, so we need not describe it).

Instead, update the text to use the more generic word "invoice", which
has the advantage of also being simpler English.
2023-02-04 21:15:32 -10:00
David A. Harding
562304b4cf CH02::pluralization: update to follow standard conventions
Existing text used "bitcoin" as both the singular and plural unit, which
was not an uncommon practice when the first edition was written.
However, my edits to the first chapter and this update adopt the
practice of using the same pluralization rules used for other
currencies, like the dollar, plus most numbered things in general.
This produces more natural text.

Reference: https://www.chicagomanualofstyle.org/qanda/data/faq/topics/Numbers/faq0058.html
2023-02-04 21:15:32 -10:00
David A. Harding
9435ad7d66 CH02::block explorers: modernize list and add warning
Replace older block explorers with modern alternatives and warn readers
that looking up info on explorers may disclose their interest to third
parties.
2023-02-04 06:11:19 -10:00
David A. Harding
be0ab0c6c5 CH02::intro: remove statements that Bitcoin requires trust
Users operating a full node don't need to trust anyone else for certain
guarantees about the system, although they do need at least one honest
peer to obtain some other guarantees.  Clarify this in the text by
revising text about text and emergent properties.
2023-02-03 20:58:39 -10:00
David A. Harding
ef06e4294b CH02: reflow text so that future diffs will be more readable 2023-02-03 20:49:51 -10:00
David A. Harding
bada9cbe41 CH01: minor edits for consistency, voice, and correctness 2023-02-03 20:26:17 -10:00
David A. Harding
7a0f5f49e4 CH01::Receving: remove misleading claim about address identity association
Original text claimed that there is no association between a user's
identity and their addresses prior to using that address in most
wallets, but many lightweight wallets send even their not-yet-used
addresses to remote servers to scan for incoming payments.  This is
often done over IPv4 or IPv6, which creates a link between the user's
connection and their addresses.  Update text by simply dropping this
claim.
2023-02-03 20:26:17 -10:00
David A. Harding
e9392b7ac4 CH01::Lightweight clients: direct connection to P2P network not required
SPV verification doesn't require connecting to a full node over the P2P
network.  Many clients connect to specially designed tranasctions
servers (e.g. an Electrum server) which provides them with transactions,
SPV proofs, and headers--and provide relay for outgoing transactions.
Update text to remove claims about direct P2P connection.
2023-02-03 20:26:17 -10:00
David A. Harding
b839919066 CH01::First Time: make more futureproof by removing specific prices
Also other changes to more generically describe wallet interfaces so
that screenshots can be updated in the future without changing text.
2023-02-03 20:26:16 -10:00
David A. Harding
849d49035f CH01::Addresses: mention invoices also; mention privacy concerns about address sharing
- The previous text only refers to onchain addresses, but BIP22 URIs,
  QR-encoded BIP22 URIs, and offchain invoices (like BOLT11) are the way
  many users will now exchange payment information, so the tipbox is
  generalized to refer to both addresses and invoices.

- A few words are added to clarify why sharing an address or invoice
  doesn't create security risks: Bitcoin is push-only.

- We mention the privacy downsides of sharing addresses or invoices and
  encourage generating new addresses for each payment.
2023-02-03 20:26:16 -10:00
David A. Harding
84fd8b5953 CH01::Backups: s/mnemonic/recovery code/, add detail and warnings
- Use "recovery code" instead of "mnemonic phrase" or "seed phrase".  A
  new tipbox describes that mnemonic implies memorization but that's bad
  practice.  The phrase recovery code is generic enough to apply to a
  variety of schemes, including Electrum seed words, BIP38 seed words,
  aezeed, and non-phrase schemes like that used in Muun.

- Be clearer about the difference between "wallet" and "wallet
  software".

- Mention that restoring from a code doesn't restore labels or
  offchain transaction info.

- Warn about re-entering your code into malware / phishing attacks.
2023-02-03 20:26:16 -10:00
David A. Harding
89c40241e2 CH01::Full node: clarify requirements; update "client" language to include "peer"
- Full nodes don't need to store transactions long-term or serve data to
  other software, so mention those as option

- Stop calling full nodes "clients".  Add a tipbox describing that full
  nodes are the peers on Bitcoin's P2P network.
2023-02-03 20:26:16 -10:00
David A. Harding
1db8772e86 CH01::Wallet Types: mention privacy; s/HWW/hardware signing device/
- Mention that mobile wallets and web wallets almost universally use
  remote servers for scanning, reducing privacy.

- Rename "hardware wallets" to "hardware signing devices".  In general,
  all these devices do is display info about an unsigned transaction to
  a user and then sign it if the user approves.  They need to be paired
  with other software that implements all of the other wallet behavior.
  We rename them accordingly and mention that the security and privacy
  of the wallet they pair with plays a role in the user's security and
  privacy.
2023-02-03 20:26:16 -10:00
David A. Harding
9ea0eee92a CH01::BGP: clarify problem; drop "widde applicability"
- A key element of the problem is *leaderless* selection; mention this.

- Drop the list of other things PoW helps with.  Some of them are very
  wrong, e.g. "proving the fairness of elections".
2023-02-03 20:26:16 -10:00
David A. Harding
934f08678e 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 20:26:16 -10:00
David A. Harding
f8a2340cb2 CH01::Mining: clarify that 99% of all bitcoins will be mined within a decade
Previous text mentioned all bitcoins would be mined by 2140, which is
correct but easily confuses people who don't understand exponential
decay into thinking a substantial number of bitcoins will continue to be
mined for a century.
2023-02-03 20:26:16 -10:00