Shell
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
00_0_Introduction.md Added missing .md suffix Aug 10, 2018
01_0_Introducing_Bitcoin.md Update 01_0_Introducing_Bitcoin.md Aug 14, 2018
02_0_Setting_Up_a_Bitcoin-Core_VPS.md New Filenames Jun 13, 2017
02_1_Setting_Up_a_Bitcoin-Core_VPS_by_Hand.md Merge pull request #57 from ariard/02_1-with-comments Aug 14, 2018
02_2_Setting_Up_a_Bitcoin-Core_VPS_with_StackScript.md Update again, to 16.2 Aug 7, 2018
02_2__Script_Linode_Setup.stackscript Open port 9735 for Lighting by default Aug 13, 2018
03_0_Understanding_Your_Bitcoin_Setup.md Updated links, intro Jun 13, 2017
03_1_Verifying_Your_Bitcoin_Setup.md Removed niggling getinfo Jul 18, 2018
03_2_Knowing_Your_Bitcoin_Setup.md Merge pull request #43 from liusy182/patch-1 Jul 26, 2018
03_3_Setting_Up_Your_Wallet.md Merge pull request #35 from yashbhutwala/03-3_typo Jul 26, 2018
03_3__Interlude_Using_Command-Line_Variables.md Added Summary & What's Next Jun 13, 2017
03_4_Receiving_a_Transaction.md Added some depth to question of fungibility. Jan 25, 2018
04_0_Sending_Bitcoin_Transactions.md Create 04_0_Sending_Bitcoin_Transactions.md Jun 13, 2017
04_1_Sending_Coins_The_Easy_Way.md Update 04_1_Sending_Coins_The_Easy_Way.md Mar 22, 2018
04_2_Creating_a_Raw_Transaction.md Clarification of UTXO explanation Aug 2, 2018
04_2__Interlude_Using_JQ.md Update 04_2__Interlude_Using_JQ.md Mar 22, 2018
04_3_Creating_a_Raw_Transaction_with_Named_Arguments.md Create 04_3_Creating_a_Raw_Transaction_with_Named_Arguments.md Jun 13, 2017
04_4_Sending_Coins_with_a_Raw_Transaction.md Update 04_4_Sending_Coins_with_a_Raw_Transaction.md Mar 22, 2018
04_4__Interlude_Using_Curl.md minor command name fix Aug 9, 2018
04_5_Sending_Coins_with_Automated_Raw_Transactions.md Create 04_5_Sending_Coins_with_Automated_Raw_Transactions.md Jun 13, 2017
05_0_Controlling_Bitcoin_Transactions.md Update 05_0_Controlling_Bitcoin_Transactions.md Aug 2, 2018
05_1_Watching_for_Stuck_Transactions.md Update 05_1_Watching_for_Stuck_Transactions.md Mar 22, 2018
05_2_Resending_a_Transaction_with_RBF.md Update 05_2_Resending_a_Transaction_with_RBF.md Mar 22, 2018
05_3_Funding_a_Transaction_with_CPFP.md Update 05_3_Funding_a_Transaction_with_CPFP.md Mar 22, 2018
06_0_Expanding_Bitcoin_Transactions.md Create 06_0_Expanding_Bitcoin_Transactions.md Jun 13, 2017
06_1_Sending_a_Transaction_to_a_Multisig.md Update 06_1_Sending_a_Transaction_to_a_Multisig.md Mar 23, 2018
06_2_Spending_a_Transaction_to_a_Multisig.md Update 06_2_Spending_a_Transaction_to_a_Multisig.md Mar 23, 2018
06_3_Sending_an_Automated_Multisig.md Create 06_3_Sending_an_Automated_Multisig.md Jun 13, 2017
06_4_Sending_a_Transaction_with_a_Locktime.md Create 06_4_Sending_a_Transaction_with_a_Locktime.md Jun 13, 2017
06_5_Sending_a_Transaction_with_Data.md correct typo Jul 8, 2018
07_0_Introducing_Bitcoin_Scripts.md Fix small error 07_0_Introducing_Bitcoin_Scripts.md Apr 25, 2018
07_1_Understanding_the_Foundation_of_Transactions.md Create 07_1_Understanding_the_Foundation_of_Transactions.md Jun 13, 2017
07_2_Running_a_Bitcoin_Script.md Merge remote-tracking branch 'upstream/master' into fix_7_2_link_to_8_1 Aug 6, 2018
07_3_Scripting_a_P2PKH.md Add btcdeb stuff to chapter 7 Dec 20, 2017
07_4_Testing_a_Bitcoin_Script.md Create 07_4_Testing_a_Bitcoin_Script.md Jun 13, 2017
08_0_Embedding_Bitcoin_Scripts_in_P2SH_Transactions.md Create 08_0_Embedding_Bitcoin_Scripts_in_P2SH_Transactions.md Jun 13, 2017
08_1_Understanding_the_Foundation_of_P2SH.md Create 08_1_Understanding_the_Foundation_of_P2SH.md Jun 13, 2017
08_2_Building_the_Structure_of_P2SH.md Create 08_2_Building_the_Structure_of_P2SH.md Jun 13, 2017
08_3_Running_a_Bitcoin_Script_with_P2SH.md Create 08_3_Running_a_Bitcoin_Script_with_P2SH.md Jun 13, 2017
08_4_Scripting_a_Multisig.md fix copy paste error Jan 16, 2018
08_5_Spending_a_P2SH_Transaction.md Create 08_5_Spending_a_P2SH_Transaction.md Jun 13, 2017
09_0_Empowering_Timelock_with_Bitcoin_Scripts.md Create 09_0_Empowering_Timelock_with_Bitcoin_Scripts.md Jun 13, 2017
09_1_Understanding_Timelock_Options.md Create 09_1_Understanding_Timelock_Options.md Jun 13, 2017
09_2_Using_CLTV_in_Scripts.md fix typo 'OP_CHECKLOCKTIME VERIFY' Jan 17, 2018
09_3_Using_CSV_in_Scripts.md nSequence value fix Aug 2, 2018
10_0_Expanding_Bitcoin_Scripts.md Update 10_0_Expanding_Bitcoin_Scripts.md Jun 6, 2017
10_1_Using_Script_Conditionals.md fix variable name Jan 17, 2018
10_2_Using_Other_Script_Commands.md Create 10_2_Using_Other_Script_Commands.md Jun 13, 2017
11_0_Designing_Real_Bitcoin_Scripts.md Update 11_0_Designing_Real_Bitcoin_Scripts.md Jun 6, 2017
11_1_Writing_Puzzle_Scripts.md fix typo (presmably) Jan 17, 2018
11_2_Writing_Complex_Multisig_Scripts.md Create 11_2_Writing_Complex_Multisig_Scripts.md Jun 13, 2017
11_3_Empowering_Bitcoin_with_Scripts.md Create 11_3_Empowering_Bitcoin_with_Scripts.md Jun 13, 2017
15_0_Talking_to_Bitcoind.md Rename 12_0_Talking_to_Bitcoind.md to 15_0_Talking_to_Bitcoind.md Aug 3, 2018
15_1_Accessing_Bitcoind_with_C.md fix typo, add instruction to install header files for later use Aug 9, 2018
15_2_Programming_Bitcoind_with_C.md Rename 12_3_Programming_Bitcoind_with_C.md to 15_2_Programming_Bitcoi… Aug 3, 2018
18_1_Accessing_Bitcoind_with_Other_Languages.md Rename 12_5_Accessing_Bitcoind_with_Other_Languages.md to 18_1_Access… Aug 3, 2018
18_3_Accessing_Bitcoind_with_Java.md Rename 12_7_Accessing_Bitcoind_with_Java.md to 18_3_Accessing_Bitcoin… Aug 3, 2018
A2_0_Setting_Up_a_Bitcoin_Regtest.md Rename 15_0_Setting_Up_a_Bitcoin_Regtest.md to A2_0_Setting_Up_a_Bitc… Aug 3, 2018
A2_1_Starting_the_Regtest.md Rename 15_1_Starting_the_Regtest.md to A2_1_Starting_the_Regtest.md Aug 3, 2018
A2_2_Mining_with_Regtest.md Rename 15_2_Mining_with_Regtest.md to A2_2_Mining_with_Regtest.md Aug 3, 2018
A2_3_Testing_with_Regtest.md Rename 15_3_Testing_with_Regtest.md to A2_3_Testing_with_Regtest.md Aug 3, 2018
LICENSE-CC-BY-4.0.md License repository CC-BY 4.0 Jan 17, 2017
README.md Add introduction Aug 10, 2018
bitcoin-cli-commands-help.md Added some work-in-progress notes Feb 17, 2017
bitcoin.conf-annotated.txt Added some work-in-progress notes Feb 17, 2017

README.md

Programming with Bitcoin Core and Lightning

(Or: Programming Bitcoind and Lightningd)

This is a tutorial for working with Bitcoin (and Lightning) that teaches direct interact with the severs themselves, as the most robust and secure way to begin cryptocurrency work.

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 ©2018 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

PART THREE: BITCOIN SCRIPTING

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.

APPENDICES

Appendix I: Compiling Bitcoin

Appendix II: Using Bitcoin Regtest