Learning Bitcoin
NOTE: This is a draft in progress, so that I can get some feedback from early reviewers. It is not yet ready for use.
Copyright
Unless otherwise noted, the contents of this repository are Copyright ©2017 by Christopher Allen @ChristopherA <ChristopherA@LifeWithAlacrity.com> and are licensed CC-BY.
Credits
Role | Names |
---|---|
Lead Authors: | Christopher Allen @ChristopherA, Shannon Appelcline @ShannonA |
Contributors: | |
Reviewers: | Glen Willem @gwillem |
Sponsors: | Blockstream Corporation |
Introduction
The best way to learn deeply about bitcoin is to avoid GUIs (even bitcoin-qt), and instead learn it from the command line.
Requirements
This tutorial assumes that you have some minimal background of how to use the command line interface. If not, there are many tutorials available, and I have one for Mac users at https://github.com/ChristopherA/intro-mac-command-line
Files
PART ONE: PREPARING FOR BITCOIN
PART TWO: BITCOIN-CLI
- 3.0: Understanding Your Bitcoin Setup
- 4.0: Sending Bitcoin Transactions
- 5.0: Controlling Bitcoin Transactions
- 6.0: Expanding Bitcoin Transactions
PART THREE: BITCOIN SCRIPTING
- 7.0: Introducing Bitcoin Scripts
- 8.0: Embedding Bitcoin Scripts in P2SH Transactions
- 9.0: Empowering Timelock with Bitcoin Scripts
- 10.0: Expanding Bitcoin Scripts
- 11.0: Designing Real Bitcoin Scripts
PART FOUR: LIGHTNING-CLI
This section is unwritten currently, and will probably involve chapter 14.0 expanding into at least two chapters.
- 12.0: Setting Up TOR
- 13.0: Setting Up Lightning
- 14.0: Using Lightning
PART FIVE: BITCOIN & LIGHTNING PROGRAMMING
_This section is currently a messy set of older writings which are being reorganized as listed below. We're not going to work through this section until we've got chapters 1-11 updated per our current notes, then 12-14 written. But, if you'd like to see what we have to date on programming in correlation with Bitcoin Core, please feel free.
- 15.0: Talking to Bitcoind with C — Needs Editing
- 15.1: Accessing Bitcoind with C
- 15.2: Programming Bitcoind with C — Needs Editing
- 15.3: Receiving Bitcoind Notifications with C — Pending
- 16.0: Talking to Lightningd with C
- 17.0: Programming with LibWally
- 17.1: Using secp256k1 Functions
- 17.2: Writing Wallet Functions
- 17.3: Integrating Libwally and Scripts
- 18.0: Talking to Bitcoind with Other Languages
APPENDICES
-
Appendix I: Compiling Bitcoin
-
Appendix II: Using Bitcoin Regtest
-
A2.0: Setting Up a Bitcoin Regtest
- A2.1: Starting the Regtest
- A2.2: Mining with Regtest
- A2.3: Testing with Regtest
- [why is Regtest important if you're compiling it yourself?]