Created
February 8, 2018 02:51
-
-
Save junderw/c4662efd1c3aa63ee891db53a2a0ad7c to your computer and use it in GitHub Desktop.
lndのDockerを利用して、A <> B <> C の2チャンネル構成を構築するためのスクリプト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# docker, docker-compose, bash, jq, sed 必要。 | |
# このスクリプトはLinuxで作られたので、各コマンドの細かい使い方が違ってたらすみません。 | |
# OSXは使ったことないので。。。 | |
# | |
# lndのgithubをクローンしないといけません。例えば: | |
# | |
# rm -rf /tmp/lndtest | |
# mkdir -p /tmp/lndtest | |
# cd /tmp/lndtest | |
# git clone https://github.com/lightningnetwork/lnd.git | |
# cd /tmp/lndtest/lnd/docker | |
# | |
# そして、途中で失敗した時のために、bash functionがこれです。Dockerを全滅させます。 | |
# | |
# function docker_killall() { | |
# docker stop $(docker ps -a -q) | |
# docker rm $(docker ps -a -q) | |
# docker volume prune -f | |
# } | |
# | |
# lndのリポジトリ内のdockerフォルダに cd してからこのスクリプトを実行して下さい。 | |
# 上記の例ですと /tmp/lndtest/lnd/docker とか | |
# | |
# エラーか想定外の事象が起きたら、 sleep を伸ばすと上手く行ったりします。 | |
###### First, start up the containers | |
echo "Running docker-compose to start 3 lnd nodes." | |
export NETWORK="simnet" | |
docker-compose run -d --name alice lnd_btc &>/dev/null | |
echo "alice" | |
sleep 2 | |
docker-compose run -d --name bob lnd_btc &>/dev/null | |
echo "bob" | |
sleep 2 | |
docker-compose run -d --name carl lnd_btc &>/dev/null | |
echo "carl" | |
sleep 8 | |
### Need to wait a while for lnd x 3 to get setup before | |
### running lncli getinfo etc. inside the containers | |
###### Now we grab the IP, pubkey, and addresses of those we need | |
echo "" | |
echo "Grabbing Bob's IP" | |
BOBIP=$(docker inspect bob | jq -r .[0].NetworkSettings.Networks.docker_default.IPAddress) | |
echo "Grabbing Carl's IP" | |
CARLIP=$(docker inspect carl | jq -r .[0].NetworkSettings.Networks.docker_default.IPAddress) | |
sleep 1 | |
echo "Grabbing Bob's Pubkey" | |
BOBPUB=$(docker exec -i -t bob lncli getinfo | jq -r '.identity_pubkey' | sed -e 's/[[:space:]]*$//') | |
sleep 1 | |
echo "Grabbing Carl's Pubkey" | |
CARLPUB=$(docker exec -i -t carl lncli getinfo | jq -r '.identity_pubkey' | sed -e 's/[[:space:]]*$//') | |
sleep 1 | |
echo "Grabbing Alice's Address" | |
ALICEADDR=$(docker exec -i -t alice lncli newaddress np2wkh | jq -r '.address' | sed -e 's/[[:space:]]*$//') | |
sleep 1 | |
echo "Grabbing Bob's Address" | |
BOBADDR=$(docker exec -i -t bob lncli newaddress np2wkh | jq -r '.address' | sed -e 's/[[:space:]]*$//') | |
sleep 1 | |
###### Reset btcd with Alice's address as the mining address | |
echo "" | |
echo "Using Alice's address for mining, and restarting btcd" | |
MINING_ADDRESS=$ALICEADDR docker-compose up -d btcd &>/dev/null | |
sleep 6 | |
### For some reason we need to wait 6 seconds here. Too fast and LND can't catch up. | |
## For some reason, calling docker-compose directly leads to all lnd | |
## instances just giving up and not parsing the blocks, leading to | |
## out of order block errors. So pass to a new bash session. | |
echo "Generating 400 blocks then sleeping 23 seconds so all 3 lnd can catch up" | |
bash -c 'docker-compose run btcctl generate 400 &>/dev/null' | |
sleep 23 | |
echo "Sending 5 BTC to Bob on chain." | |
docker exec -i -t alice lncli sendcoins $BOBADDR 500000000 &>/dev/null | |
sleep 1 | |
echo "Generating 6 blocks to confirm Alice's payment to Bob" | |
bash -c 'docker-compose run btcctl generate 6 &>/dev/null' | |
sleep 4 | |
echo "Connecting Alice to Bob" | |
docker exec -i -t alice lncli connect $BOBPUB@$BOBIP &>/dev/null | |
sleep 1 | |
echo "Connecting Bob to Carl" | |
docker exec -i -t bob lncli connect $CARLPUB@$CARLIP &>/dev/null | |
sleep 1 | |
echo "Opening channel from Alice to Bob, pushing 0.06 BTC" | |
docker exec -i -t alice lncli openchannel $BOBPUB 10000000 6000000 &>/dev/null | |
sleep 5 | |
echo "Generating 20 blocks, opening channel" | |
bash -c 'docker-compose run btcctl generate 20 &>/dev/null' | |
sleep 5 | |
echo "Opening channel from Bob to Carl, pushing 0.03 BTC" | |
docker exec -i -t bob lncli openchannel $CARLPUB 10000000 3000000 &>/dev/null | |
sleep 5 | |
echo "Generating 20 blocks, opening channel" | |
bash -c 'docker-compose run btcctl generate 20 &>/dev/null' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment