This repository aims to build a bitcoin test framework based on signet. Docker is extensively used to provide:
- a bitcoin node that mines bitcoin on a custom signet
- a bitcoin node that downloads the custom signet chain (can be used to test bitcoin layer-2 software)
- a core-lightning node
First of all, you have o make sure that port 60602 is reachable from all over the internet.
On ubuntu you can install ufw
with
sudo apt install -y ufw
Then you need to set some default configuration and enable the firewall:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw logging off
sudo ufw enable
After that, you need to allow connection on the 60602 port for make electrum server reachable from all over the internet:
sudo ufw allow 60602/tcp comment 'allow Electrum Signet SSL'
The system is thought to have a stand-alone machine on which the bitcoin miner node and core-clightning node run
docker-compose -f docker-compose_miner_signet.yml up
From the "miner" can be useful to retrieve, the bitcoin core, the electrum server, and the faucet addresses with the following commands:
# Bitcoin Core Tor address
echo "Bitcoin tor addr: $(docker exec btc_sig_miner cli getnetworkinfo | jq -r '.localaddresses[].address')"
# Bitcoin Signetchallenge
echo "Bitcoin $(docker exec btc_sig_miner cat /bitcoind/bitcoin.conf | grep signetchallenge)"
# Electrum Server address
echo "Electrum server tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_electrs/hostname)"
# Bitcoin Faucet address
echo "Bitcoin faucet tor addr: $(docker exec tor cat /var/lib/tor/hidden_service_faucet/hostname)"
in order to replace the default parameters in the make-node.sh
file and make available the custom blockchain and faucet to other "node" clients that whant to connect with the "miner".
Other machines that want to connect to the "miner", once the miner is running the parameters BITCOIN_MINER_URL, SIGNETCHALLENGE, and
FAUCET_URL must be taken from the "miner" and provided to those who may want to run the "node". These parameters must be replaced in the make-node.sh
file and it must be run with source make-node.sh
. After, the "node" client can then run the docker compose command:
docker-compose -f docker-compose_node_signet.yml up
Once the "miner"/"node" is running, electrum wallet can be used to perform normal operations. Electrum must be lauched with -signet
flag and must be connected to the custom electrum server.
git clone https://github.com/spesmilo/electrum.git
cd electrum
python3 run_electrum --signet
At this point, create a new wallet and then go to Tools --> Network
, de-select Select server automatically flag and insert the onion address in the following format: <electrum_server_onion_link>:60602
.
Now, you can get a new address from the Electrum wallet and move some coin with
docker exec btc_sig_miner bitcoin-cli -datadir=/bitcoind send '{"<new-address>": 1}'
By running the get-cln-strings.sh
make sure to run it after at least 100 blocks), strings to control the Core-Lightning node through Zeus app and to share your node with other peers will be displayed. However, Zeus is not able to decode signet invoices, so peers cannot pay/receive any invoices. With some luck, one can use RTL which runs on http://localhost:3000