mirror of
https://github.com/bitcoinbook/bitcoinbook
synced 2024-11-30 03:48:31 +00:00
250 lines
7.1 KiB
Plaintext
250 lines
7.1 KiB
Plaintext
|
== Third Edition Changes
|
|||
|
|
|||
|
=== 1. Introduction
|
|||
|
|
|||
|
* Bitcoin Uses, Users, and Their Stories
|
|||
|
|
|||
|
Minor changes to the stories, updating to reflect current common uses and current price
|
|||
|
|
|||
|
=== 2. How Bitcoin Works
|
|||
|
|
|||
|
* Buying a [line-through]#Cup of Coffee# Laptop
|
|||
|
|
|||
|
Updated Alice and Bob's story. Buying a cup of coffee is no longer sensible "on-chain", due to the value of Bitcoin and on-chain fees. Instead, small retail purchases are now a use-case for the Lightning Network. In the updated story, Alice is buying a laptop from an e-commerce store run by Bob.
|
|||
|
|
|||
|
* Bitcoin Transactions
|
|||
|
|
|||
|
Updated all the transactions to use native-Segwit addresses that start with "bc1", instead of legacy bitcoin addresses that start with "1".
|
|||
|
|
|||
|
* Transaction Inputs and Outputs
|
|||
|
* Transaction Chains
|
|||
|
* Making Change
|
|||
|
* Common Transaction Forms
|
|||
|
* Constructing a Transaction
|
|||
|
* Getting the Right Inputs
|
|||
|
* Creating the Outputs
|
|||
|
* Adding the Transaction to the Ledger
|
|||
|
* Bitcoin Mining
|
|||
|
* Mining Transactions in Blocks
|
|||
|
* Spending the Transaction
|
|||
|
|
|||
|
=== 3. Bitcoin Core: The Reference Implementation
|
|||
|
* Bitcoin Development Environment
|
|||
|
* Compiling Bitcoin Core from the Source Code
|
|||
|
* Selecting a Bitcoin Core Release
|
|||
|
* Configuring the Bitcoin Core Build
|
|||
|
* Building the Bitcoin Core Executables
|
|||
|
* Running a Bitcoin Core Node
|
|||
|
* Configuring the Bitcoin Core Node
|
|||
|
* Bitcoin Core Application Programming Interface (API)
|
|||
|
* Getting Information on the Bitcoin Core Client Status
|
|||
|
* Exploring and Decoding Transactions
|
|||
|
* Exploring Blocks
|
|||
|
* Using Bitcoin Core’s Programmatic Interface
|
|||
|
* Alternative Clients, Libraries, and Toolkits
|
|||
|
* C/C++
|
|||
|
* JavaScript
|
|||
|
* Java
|
|||
|
* PHP
|
|||
|
* Python
|
|||
|
* Ruby
|
|||
|
* Go
|
|||
|
* Rust
|
|||
|
* C#
|
|||
|
* Objective-C
|
|||
|
=== 4. Keys, Addresses
|
|||
|
* Introduction
|
|||
|
* Public Key Cryptography and Cryptocurrency
|
|||
|
* Private and Public Keys
|
|||
|
* Private Keys
|
|||
|
* Public Keys
|
|||
|
* Elliptic Curve Cryptography Explained
|
|||
|
* Generating a Public Key
|
|||
|
* Bitcoin Addresses
|
|||
|
* Base58 and Base58Check Encoding
|
|||
|
* Key Formats
|
|||
|
* Implementing Keys and Addresses in C++
|
|||
|
* Implementing Keys and Addresses in Python
|
|||
|
* Advanced Keys and Addresses
|
|||
|
* Encrypted Private Keys (BIP-38)
|
|||
|
* Pay-to-Script Hash (P2SH) and Multisig Addresses
|
|||
|
* Vanity Addresses
|
|||
|
* Paper Wallets
|
|||
|
=== 5. Wallets
|
|||
|
* Wallet Technology Overview
|
|||
|
* Nondeterministic (Random) Wallets
|
|||
|
* Deterministic (Seeded) Wallets
|
|||
|
* HD Wallets (BIP-32/BIP-44)
|
|||
|
* Seeds and Mnemonic Codes (BIP-39)
|
|||
|
* Wallet Best Practices
|
|||
|
* Using a Bitcoin Wallet
|
|||
|
* Wallet Technology Details
|
|||
|
* Mnemonic Code Words (BIP-39)
|
|||
|
* Creating an HD Wallet from the Seed
|
|||
|
* Using an Extended Public Key on a Web Store
|
|||
|
=== 6. Transactions
|
|||
|
* Introduction
|
|||
|
* Transactions in Detail
|
|||
|
* Transactions—Behind the Scenes
|
|||
|
* Transaction Outputs and Inputs
|
|||
|
* Transaction Outputs
|
|||
|
* Transaction Inputs
|
|||
|
* Transaction Fees
|
|||
|
* Adding Fees to Transactions
|
|||
|
* Transaction Scripts and Script Language
|
|||
|
* Turing Incompleteness
|
|||
|
* Stateless Verification
|
|||
|
* Script Construction (Lock + Unlock)
|
|||
|
* Pay-to-Public-Key-Hash (P2PKH)
|
|||
|
* Digital Signatures (ECDSA)
|
|||
|
* How Digital Signatures Work
|
|||
|
* Verifying the Signature
|
|||
|
* Signature Hash Types (SIGHASH)
|
|||
|
* ECDSA Math
|
|||
|
* The Importance of Randomness in Signatures
|
|||
|
* *NEW: Schnorr Signatures*
|
|||
|
*
|
|||
|
Bitcoin Addresses, Balances, and Other Abstractions
|
|||
|
=== 7. Advanced Transactions And Scripting
|
|||
|
* Introduction
|
|||
|
* Multisignature
|
|||
|
* Pay-to-Script-Hash (P2SH)
|
|||
|
* P2SH Addresses
|
|||
|
* Benefits of P2SH
|
|||
|
* Redeem Script and Validation
|
|||
|
* Data Recording Output (RETURN)
|
|||
|
* Timelocks
|
|||
|
* Transaction Locktime (nLocktime)
|
|||
|
* Check Lock Time Verify (CLTV)
|
|||
|
* Relative Timelocks
|
|||
|
* Relative Timelocks with nSequence
|
|||
|
* Relative Timelocks with CSV
|
|||
|
* Median-Time-Past
|
|||
|
* Timelock Defense Against Fee Sniping
|
|||
|
* Scripts with Flow Control (Conditional Clauses)
|
|||
|
* Conditional Clauses with VERIFY Opcodes
|
|||
|
* Using Flow Control in Scripts
|
|||
|
* Complex Script Example
|
|||
|
* Segregated Witness
|
|||
|
* Why Segregated Witness?
|
|||
|
* How Segregated Witness Works
|
|||
|
* Soft Fork (Backward Compatibility)
|
|||
|
* Segregated Witness Output and Transaction Examples
|
|||
|
* Upgrading to Segregated Witness
|
|||
|
* Segregated Witness’ New Signing Algorithm
|
|||
|
* Economic Incentives for Segregated Witness
|
|||
|
* *NEW: Segwit v1: Taproot*
|
|||
|
* *NEW: MAST *
|
|||
|
* *NEW: Tapscript*
|
|||
|
* *NEW: Taproot *
|
|||
|
=== 8. The Bitcoin Network
|
|||
|
* Peer-to-Peer Network Architecture
|
|||
|
* Node Types and Roles
|
|||
|
* The Extended Bitcoin Network
|
|||
|
* Bitcoin Relay Networks
|
|||
|
* Network Discovery
|
|||
|
* Full Nodes
|
|||
|
* Exchanging “Inventory”
|
|||
|
* Simplified Payment Verification (SPV) Nodes
|
|||
|
* Bloom Filters
|
|||
|
* How Bloom Filters Work
|
|||
|
* How SPV Nodes Use Bloom Filters
|
|||
|
* SPV Nodes and Privacy
|
|||
|
* NEW Neutrino
|
|||
|
* NEW Compact Blocks
|
|||
|
* Encrypted and Authenticated Connections
|
|||
|
* Tor Transport
|
|||
|
* Peer-to-Peer Authentication and Encryption
|
|||
|
* Transaction Pools
|
|||
|
=== 9. The Blockchain
|
|||
|
* Introduction
|
|||
|
* Structure of a Block
|
|||
|
* Block Header
|
|||
|
* Block Identifiers: Block Header Hash and Block Height
|
|||
|
* The Genesis Block
|
|||
|
* Linking Blocks in the Blockchain
|
|||
|
* Merkle Trees
|
|||
|
* Merkle Trees and Simplified Payment Verification (SPV)
|
|||
|
* Bitcoin’s Test Blockchains
|
|||
|
* Testnet—Bitcoin’s Testing Playground
|
|||
|
* Segnet—The Segregated Witness Testnet
|
|||
|
* Regtest—The Local Blockchain
|
|||
|
* *NEW: Signet - The POA Test Blockchain*
|
|||
|
* Using Test Blockchains for Development
|
|||
|
=== 10. Mining And Consensus
|
|||
|
* Introduction
|
|||
|
* Bitcoin Economics and Currency Creation
|
|||
|
* Decentralized Consensus
|
|||
|
* Independent Verification of Transactions
|
|||
|
* Mining Nodes
|
|||
|
* Aggregating Transactions into Blocks
|
|||
|
* The Coinbase Transaction
|
|||
|
* Coinbase Reward and Fees
|
|||
|
* Structure of the Coinbase Transaction
|
|||
|
* Coinbase Data
|
|||
|
* Constructing the Block Header
|
|||
|
* Mining the Block
|
|||
|
* Proof-of-Work Algorithm
|
|||
|
* Target Representation
|
|||
|
* Retargeting to Adjust Difficulty
|
|||
|
* Successfully Mining the Block
|
|||
|
* Validating a New Block
|
|||
|
* Assembling and Selecting Chains of Blocks
|
|||
|
* Blockchain Forks
|
|||
|
* Mining and the Hashing Race
|
|||
|
* The Extra Nonce Solution
|
|||
|
* Mining Pools
|
|||
|
* Consensus Attacks
|
|||
|
* Changing the Consensus Rules
|
|||
|
* Hard Forks
|
|||
|
* Hard Forks: Software, Network, Mining, and Chain
|
|||
|
* Diverging Miners and Difficulty
|
|||
|
* Contentious Hard Forks
|
|||
|
* Soft Forks
|
|||
|
* Criticisms of Soft Forks
|
|||
|
* Soft Fork Signaling with Block Version
|
|||
|
* BIP-34 Signaling and Activation
|
|||
|
* BIP-9 Signaling and Activation
|
|||
|
* NEW BIP-8 Activation
|
|||
|
* *NEW: Speedy Trial Activation*
|
|||
|
* Consensus Software Development
|
|||
|
=== 11. Bitcoin Security
|
|||
|
* Security Principles
|
|||
|
* Developing Bitcoin Systems Securely
|
|||
|
* The Root of Trust
|
|||
|
* User Security Best Practices
|
|||
|
* Physical Bitcoin Storage
|
|||
|
* Hardware Wallets
|
|||
|
* Balancing Risk
|
|||
|
* Diversifying Risk
|
|||
|
* Multisig and Governance
|
|||
|
* Survivability
|
|||
|
* Conclusion
|
|||
|
=== 12. Blockchain Applications
|
|||
|
* Introduction
|
|||
|
* Building Blocks (Primitives)
|
|||
|
* Applications from Building Blocks
|
|||
|
* Colored Coins
|
|||
|
* Using Colored Coins
|
|||
|
* Issuing Colored Coins
|
|||
|
* Colored Coins Transactions
|
|||
|
* Counterparty
|
|||
|
* Payment Channels and State Channels
|
|||
|
* State Channels—Basic Concepts and Terminology
|
|||
|
* Simple Payment Channel Example
|
|||
|
* Making Trustless Channels
|
|||
|
* Asymmetric Revocable Commitments
|
|||
|
* Hash Time Lock Contracts (HTLC)
|
|||
|
* Routed Payment Channels (Lightning Network)
|
|||
|
* Basic Lightning Network Example
|
|||
|
* Lightning Network Transport and Routing
|
|||
|
* Lightning Network Benefits
|
|||
|
* Conclusion
|
|||
|
=== A. The Bitcoin Whitepaper By Satoshi Nakamoto
|
|||
|
=== B. Transaction Script Language Operators, Constants, And Symbols
|
|||
|
=== C. Bitcoin Improvement Proposals
|
|||
|
=== D. Bitcore
|
|||
|
=== E. Pycoin, Ku, And Tx
|
|||
|
=== F. Bitcoin Explorer (Bx) Commands
|
|||
|
=== *NEW: BTCD*
|