Skip to content

Commit

Permalink
contrib: add ability to start/stop elements nodeset
Browse files Browse the repository at this point in the history
sometimes it's handy to be able to get access to an elements daemon and
node set also
  • Loading branch information
niftynei committed Sep 9, 2020
1 parent 62f80f7 commit 7eaaa43
Showing 1 changed file with 93 additions and 32 deletions.
125 changes: 93 additions & 32 deletions contrib/startup_regtest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
## When you're finished, clean up or stop
##
## $ stop_ln # stops the services, keeps the aliases
## $ cleanup_ln # stops and cleans up aliases
##

# Do the Right Thing if we're currently in top of srcdir.
Expand Down Expand Up @@ -61,76 +60,138 @@ if [ -z "$PATH_TO_BITCOIN" ]; then
fi
fi

start_ln() {
# Start bitcoind in the background
test -f "$PATH_TO_BITCOIN/regtest/bitcoind.pid" || \
bitcoind -regtest -txindex -fallbackfee=0.00000253 -daemon

# Wait for it to start.
while ! bitcoin-cli -regtest ping 2> /tmp/null; do echo "awaiting bitcoind..." && sleep 1; done

# Kick it out of initialblockdownload if necessary
if bitcoin-cli -regtest getblockchaininfo | grep -q 'initialblockdownload.*true'; then
bitcoin-cli -regtest generatetoaddress 1 "$(bitcoin-cli -regtest getnewaddress)" > /dev/null
fi

if [ -z "$1" ]
then
start_nodes() {
if [ -z "$1" ]; then
node_count=2
else
node_count=$1
fi
if [ "$node_count" -gt 100 ]; then
node_count=100
fi
if [ -z "$2" ]; then
network=regtest
else
network=$2
fi

LN_NODES=$node_count

for i in $(seq $node_count); do
socket=$(( 7070 + i * 101))
mkdir -p "/tmp/l$i-regtest"
mkdir -p "/tmp/l$i-$network"
# Node config
cat <<- EOF > "/tmp/l$i-regtest/config"
network=regtest
cat <<- EOF > "/tmp/l$i-$network/config"
network=$network
log-level=debug
log-file=/tmp/l$i-regtest/log
log-file=/tmp/l$i-$network/log
addr=localhost:$socket
EOF

# Start the lightning nodes
test -f "/tmp/l$i-regtest/lightningd-regtest.pid" || \
"$LIGHTNINGD" "--lightning-dir=/tmp/l$i-regtest" --daemon
test -f "/tmp/l$i-$network/lightningd-$network.pid" || \
"$LIGHTNINGD" "--lightning-dir=/tmp/l$i-$network" --daemon
# shellcheck disable=SC2139 disable=SC2086
alias l$i-cli="$LCLI --lightning-dir=/tmp/l$i-regtest"
alias l$i-cli="$LCLI --lightning-dir=/tmp/l$i-$network"
# shellcheck disable=SC2139 disable=SC2086
alias l$i-log="less /tmp/l$i-regtest/log"
alias l$i-log="less /tmp/l$i-$network/log"
done

alias bt-cli='bitcoin-cli -regtest'
# Give a hint.
echo "Commands: "
for i in $(seq $node_count); do
echo " l$i-cli, l$i-log,"
done
echo " bt-cli, stop_ln, cleanup_ln"
}

stop_ln() {
if [ -n "$LN_NODES" ]
then
start_ln() {
# Start bitcoind in the background
test -f "$PATH_TO_BITCOIN/regtest/bitcoind.pid" || \
bitcoind -regtest -txindex -fallbackfee=0.00000253 -daemon

# Wait for it to start.
while ! bitcoin-cli -regtest ping 2> /tmp/null; do echo "awaiting bitcoind..." && sleep 1; done

# Kick it out of initialblockdownload if necessary
if bitcoin-cli -regtest getblockchaininfo | grep -q 'initialblockdownload.*true'; then
bitcoin-cli -regtest generatetoaddress 1 "$(bitcoin-cli -regtest getnewaddress)" > /dev/null
fi
alias bt-cli='bitcoin-cli -regtest'

if [ -z "$1"]; then
nodes=2
else
nodes=$1
fi
start_nodes $nodes regtest
echo " bt-cli, stop_ln"
}

stop_nodes() {
if [ -z $2 ]; then
network=regtest
else
network=$2
fi
if [ -n "$LN_NODES" ]; then
for i in $(seq $LN_NODES); do
test ! -f "/tmp/l$i-regtest/lightningd-regtest.pid" || \
(kill "$(cat "/tmp/l$i-regtest/lightningd-regtest.pid")"; \
rm "/tmp/l$i-regtest/lightningd-regtest.pid")
test ! -f "/tmp/l$i-$network/lightningd-$network.pid" || \
(kill "$(cat "/tmp/l$i-$network/lightningd-$network.pid")"; \
rm "/tmp/l$i-$network/lightningd-$network.pid")
unalias "l$i-cli"
unalias "l$i-log"
done
fi
}

stop_ln() {
stop_nodes $1 regtest
test ! -f "$PATH_TO_BITCOIN/regtest/bitcoind.pid" || \
(kill "$(cat "$PATH_TO_BITCOIN/regtest/bitcoind.pid")"; \
rm "$PATH_TO_BITCOIN/regtest/bitcoind.pid")

unset LN_NODES
unalias bt-cli
}

start_elem() {
if [ -z "$PATH_TO_ELEMENTS" ]; then
if [ -d "$HOME/.elements" ]; then
PATH_TO_ELEMENTS="$HOME/.elements"
else
echo "\$PATH_TO_ELEMENTS not set to a .elements dir" >&2
return
fi
fi

test -f "$PATH_TO_ELEMENTS/liquid-regtest/bitcoin.pid" || \
elementsd -chain=liquid-regtest -printtoconsole -logtimestamps -nolisten -validatepegin=0 -con_blocksubsidy=5000000000 -daemon

# Wait for it to start.
while ! elements-cli -chain=liquid-regtest ping 2> /tmp/null; do echo "awaiting elementsd..." && sleep 1; done

# Kick it out of initialblockdownload if necessary
if elements-cli -chain=liquid-regtest getblockchaininfo | grep -q 'initialblockdownload.*true'; then
elements-cli -chain=liquid-regtest generatetoaddress 1 "$(elements-cli -chain=liquid-regtest getnewaddress)" > /dev/null
fi
alias et-cli='elements-cli -chain=liquid-regtest'

if [ -z "$1"]; then
nodes=2
else
nodes=$1
fi
start_nodes $nodes liquid-regtest
echo " et-cli, stop_elem"
}


stop_elem() {
stop_nodes $1 liquid-regtest
test ! -f "$PATH_TO_ELEMENTS/liquid-regtest/bitcoind.pid" || \
(kill "$(cat "$PATH_TO_ELEMENTS/liquid-regtest/bitcoind.pid")"; \
rm "$PATH_TO_ELEMENTS/liquid-regtest/bitcoind.pid")

unset LN_NODES
unalias et-cli
}

0 comments on commit 7eaaa43

Please sign in to comment.