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
SET THIS AS AN INTERLUDE:
Add: HOW TO DO A REFUND (short answer: ask!)
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: The Lightning Command Line
- X.0: Setting Up TOR
- X.0: Setting Up Lightning
- X.0: Using Lightning
PART FIVE: BITCOIN Programming
- 12.0: Talking to Bitcoind with C — Needs Editing
- 12.2: Accessing Bitcoind with C
- 12.3: Programming Bitcoind with C — Needs Editing
- 12.4: Receiving Bitcoind Notifications with C — Pending
- X.0: Talking to LightningD with C
- 13.0: Programming with LibWally
- 13.1: Programming Transactions
- 13.2: Programming Scripts
- Using secp256k1 in this?
- X.0: Talking to Bitcoind with Other Languages
APPENDICES
-
Appendix I: Compiling Bitcoin
-
Appendix II: Using Bitcoin Regtest
[why is Regtest important if you're compiling it yourself?]