This repo contains a series of python jupyter-notebooks to explain how bitcoin transactions are created and signed. 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.
- Chapter 1: 'Introduction'
- Chapter 2: 'Background'
- Chapter 3: 'Legacy Transactions (Pre-Segwit)'
- Chapter 4: 'Segwit'
- Chapter 5: 'Taproot'
- Chapter 6: 'Transactions with Multiple Inputs'
- Chapter 7: 'Signature hashes'
- Chapter 8: 'Bitcoin 'Smart Contracts''
- 'Timelocks'
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, it is recommended to use git
but alternatively you can also download the files directly from GitHub, there are no further dependencies on git
.
git clone https://github.com/DariusParvin/bitcoin-tx-tutorial
cd bitcoin-tx-tutorial
To create a virtual environment and install all dependencies:
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
Finally, to launch the interactive notebook:
jupyter notebook
- This work wouldn't have been possible without the funding from chaincode.
- A lot of the code and inspiration for this tutorial comes from the following places:
- Shlomi Zeltsinger's segwit tutorial
- Jimmy Song's Programming Bitcoin exercises.
- Bitcoin Optech Schnorr Taproot Workshop