This is a bitcoin regtest environment tuned for security and privacy tests. Original version by Aglietti and Barnini as precisely mentioned below. I had the honour of forking their original project in order to create a new version which is better tuned on my privacy&security analisys and didactics.
This install has been tested on Ubuntu 20.04 running on a standard VPS. The distro needs docker fully running. This is the link for ubuntu. A small recap of installing docker is here below:
sudo apt-get update
sudo apt-get install git curl wget
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
Download the GPG key from the APT docker repo
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Add APT repository that matches your CPU architecture
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Install docker & docker-compose
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo apt-get install docker-compose
First of all clone the repository
git clone https://github.com/massmux/BitcoinTestKit.git
Now ready for running containers:
if not already, put your user in docker group
adduser YOURUSER docker
Then you are ready to run containers
cd ~/BitcoinTestKit
docker-compose up
To log into the bash of the hansel node, do as follows
:~$ docker exec -ti hansel bash
:/opt/nodeworkdir$
The whole regtest is empty, there are no blocks. So the first step is create a new block by mining it.
if no wallet is defined, create one:
bitcoin-cli createwallet "hansel"
then mine to any wallet's address
bitcoin-cli generatetoaddress 1 $(bitcoin-cli getnewaddress)
- blockchain explorer interface is at port 8094
- spark wallet is at port 9737
- lightningd is available for channels opening at port 9735
- LND is available for channels opening at port 19735
- electrs is reachable on port 50001 for electrum connection
- mine blocks
- connect a bitcoin-qt wallet
- connect electrum on port 50001
- open a channel to lightningd and to LND from electrum
- open a channel from LND to lightningd
- move funds onchain and LN
- query the blockchain through explorer and by using the bitcoin-cli
For connecting to google running the kit, from outside, we need to forward ports. In order to do that, we are using ngrok.
Install ngrok
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
unzip ngrok-stable-linux-amd64.zip
chmod +x ngrok
Connect you authtoken
./ngrok authtoken <yourtoken>
Now copy the content of ngrok.yml that you find in the repository to $HOME/.ngrok2/ngrok.yml paying attention not to overwrite the first line containing your authtoken.
Now run in this way
ngrok start electrs-50001 explorer-8094 lightningd-9735 lnd-19735
all tunnels defined are available in the ngrok.yml file
This playground has been created originally by authors of books (in italian) "Bitcoin dalla teoria alla pratica" / "Bitcoin in Action" and channel Bitcoin in Action. Therefore many many thanks to Aglietti & Barnini