Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

Todo List for v3.0 of Learning Bitcoin

The following TODO items are intended for a 3.0 version of Learning Bitcoin from the Command Line

Medium-Scale Updates

The following updates involve updates or the creation of new chapters, but their additions are generally bounded and known.

  1. General Update: Consider replacing testnet with signet
  2. New Interlude: Creating QR Codes (after 3.3)
    • New Subsection: Creating a QR
    • New Subsection: Creating a Quick Connect QR
  3. Revise Section: Understanding the Descriptor (3.5)
    • New Content: Descriptor Wallets
    • New Content: Complex Descriptors
    • Consider: Breaking into Two Sections
  4. New Interlude: Creating Animated QR Codes (after 7.1)
    • New Subsection: Understanding Uniform Resources
    • New Subsection: Creating an Animated QR
    • New Subsection: Creating an Animated QR of a PSBT
  5. New Chapter: Using Other Command-Line Tools (between 8+9)
    • 9.1: Using seedtool
    • 9.2: Using keytool
    • 9.3: Using bytewords-cli
  6. Revise Section: Understanding Timelock Options (11.1)
  7. New Chapter: Using Miniscript Command-Line Tools (between 13+14)
    • 15.1: Using miniscript
    • 15.2: Using Bitcoin Dev Kit (BDK)
    • 15.3: Planning for the Future
  8. New Content: Expand the PSBT Libwally Content (17.4) into Two Sections
    • 17.4: Signing PSBTs in Libwally
      • Explanation: Contains the current info on importing a PSBT, and shows how to sign it
    • 17.5: Creating PSBTs in Libwally
      • Explanation: Contains the current info on creating a PSBT, and shows how to export it
  9. New Chapter: Talking to Bitcoind with Swift (between 17+18)
    • 19.1: Accessing Bitcoind with Swift (existing section)
    • 19.2: Using Swift with Bitcoin Lib [Wolf's library]
    • 19.3: Using Swift with Libwally [Wolf's shim]

Large-Scale Updates

The following updates involve the large-scale work done on Schnorr and Taproot in Bitcoin Core 0.21 and 22. This represents a first cut at how to layout the work, but revision and expansion will likely be needed as everyone's understanding of these new technologies matures.

Chapter X: Expanding Bitcoin Transactions with Schnorr (probably between chapters 6+7)

  • New Section X.1: Understanding Schnorr Signatures
    • New Subsection: Understanding the Math of Schnorr
      • Explanation: Add + subtract for one signature
    • New Subsection: Supporting MuSig
    • New Subsection: Understanding the Use of Adapter Signatures
    • New Subsection: Knowing the Advantages of Schnorr
      • Explanation: size, 64 bytes vs 72, better for multisigs
      • Explanation: speed, linear, validate a million-sig multisig in 2 minutes
      • Explanation: privacy, no difference between MuSig and sig, no detection of Lightning
      • Explanation: also better security, non-malleability
      • Reference: https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
  • New Section X.2: Using Schnorr Signatures
    • New Subsection: Signing with Schnorr
    • New Subsection: Adding a Schnorr Signature
    • New Subsection: Reading a Schnorr Signature
    • New Subsection: Using Schnorr with Taproot
  • Update Chapter 6 (Multisigs) to Integrate with Schnorr

Chapter Y: Improving Bitcoin Scripts with Taproot (probably between chapters 13+14, possibly expanding to two chapters)

  • New Section Y.1: Understanding MAST
  • New Section Y.2: Understanding Taproot
  • New Subsection Y.3: Creating a Taproot Script
    • New Subsection: Defining a Taproot Script
      • Explanation: Segwit v1, 32-byte program, not P2SH wrapped, leaf version is 0xc0
    • New Codes: OP_CHECKSIGADD and OP_SUCCESS
    • Cut Codes: OP_CHECKMULTISIG and OP_CHECKMULTISIGVERIFY
    • Reference: https://twitter.com/pwuille/status/1459778730369368067
  • New Subsection Y.4: Importing a tr Desciptor
  • New Subsection Y.5: Using Taproot in Practice
    • New Subsection: Making a Taproot Payment
    • New Subsection: Validating a Taproot Script
  • Update Chapter 9 to Integrate with Taproot
    • Mention Taproot in 9.1 or 9.2
    • Add New Section 9.6: Scripting a P2TR (mostly a pointer to Chapter Y)

Further Updates

The following updates could be part of v3.0 or could be further future, depending on interest and funding.

  1. New Graphics: Animated GIFs for key demos.
  2. New Chapter: Talking to Lightningd with C (after chapter 20)