This repo contains a series of python jupyter-notebooks to explain how lightning transactions are created. The notebooks will start up an instance of bitcoind in regtest mode so that transactions can be validated and broadcasted on regtest. Each notebook has some questions and exercises to test your understanding.
- A high level understanding of the bitcoin. e.g. Mastering Bitcoin by Andreas Antonopoulos UTXO model, in particular Chapter 6.
- A conceptual understanding of hash functions.
- Hexadecimal notation and endianness.
- A high level understanding of the lightning e.g. [Mastering Lightning Network] TODO Get the chapter to point it here
- Chapter 1: 'Funding Transactions'
- Segwit
- Taproot
- Chapter 2: 'Commitment Transaction'
- Simple Commitment Transaction
- Pending HTLCs
- Anchor Outputs
- Chapter 3: 'Closing Transactions'
- Colaborative Closing
- Force Closing
This project requires Python 3.6 (or greater) to be installed on your machine already. All other dependencies will be installed automatically with pip3.
To verify your Python version, run
python3 --version
If it is properly installed, you should see something like:
Python 3.9.13
To copy the repository to your local machine you can download the files directly from GitHub, there are no further dependencies on git
.
git clone https://github.com/MPins/lightning-tx-tutorial
cd lightning-tx-tutorial
To create a virtual environment and install all dependencies:
python3 -m venv myenv
source myenv/bin/activate
pip3 install -r requirements.txt
Finally, to launch the interactive notebook:
jupyter lab
The notebooks in this repo use bitcoin core's TestShell
from its test framework. The TestShell
is used to create a local test instance of a bitcoin node (and blockchain) against which we can test our manually created transactions. The notebooks in this repo have been tested with bitcoin core v24.0.1.
- A lot of the code and inspiration for this tutorial comes from the following places:
- Darius Parvin's bitcoin-tx-tutorial
- Shlomi Zeltsinger's segwit tutorial
- Jimmy Song's Programming Bitcoin exercises.
- Bitcoin Optech Schnorr Taproot Workshop