mirror of
https://github.com/bitcoinbook/bitcoinbook
synced 2024-11-22 08:08:11 +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*
|