Skip to content

Instantly share code, notes, and snippets.

@peterzen
Created December 25, 2019 14:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peterzen/4326f5462bf35ed8ca89cfa69cb7e6f1 to your computer and use it in GitHub Desktop.
Save peterzen/4326f5462bf35ed8ca89cfa69cb7e6f1 to your computer and use it in GitHub Desktop.
#!/bin/sh
# Tmux script to create 2 dcrd nodes connected in series.
# Network layout:
# master <-> 1
# 19555 19665
set -e
SESSION="dcrd-simnet-nodes"
NODES_ROOT=~/dcrdsimnetnodes
RPCUSER="USER"
RPCPASS="PASS"
WALLET_SEED="b280922d2cffda44648346412c5ec97f429938105003730414f10b01e1402eac"
WALLET_MINING_ADDR="SspUvSyDGSzvPz2NfdZ5LW15uq6rmuGZyhL" # NOTE: This must be changed if the seed is changed.
WALLET_XFER_ADDR="SsonWQK6xkLSYm7VttCddHWkWWhETFMdR4Y" # same as above
if [ -d "${NODES_ROOT}" ] ; then
rm -R "${NODES_ROOT}"
fi
mkdir -p "${NODES_ROOT}/"{master,1,wallet}
cat > "${NODES_ROOT}/dcrd.conf" <<EOF
rpcuser=${RPCUSER}
rpcpass=${RPCPASS}
simnet=1
logdir=./log
datadir=./data
debuglevel=TXMP=TRACE,RPCS=trace
txindex=1
EOF
cat > "${NODES_ROOT}/dcrctl.conf" <<EOF
rpcuser=${RPCUSER}
rpcpass=${RPCPASS}
simnet=1
EOF
cat > "${NODES_ROOT}/wallet.conf" <<EOF
username=${RPCUSER}
password=${RPCPASS}
simnet=1
logdir=./log
appdata=./data
pass=123
enablevoting=1
enableticketbuyer=1
EOF
cd ${NODES_ROOT} && tmux -2 new-session -d -s $SESSION
################################################################################
# Setup the master (mining) node
################################################################################
tmux rename-window -t $SESSION:0 'master'
tmux split-window -v
tmux select-pane -t 0
tmux send-keys "cd ${NODES_ROOT}/master" C-m
tmux send-keys "dcrd -C ../dcrd.conf --listen 127.0.0.1:19555 --miningaddr=${WALLET_MINING_ADDR}" C-m
tmux resize-pane -D 15
tmux select-pane -t 1
tmux send-keys "cd ${NODES_ROOT}/master" C-m
cat > "${NODES_ROOT}/master/ctl" <<EOF
#!/bin/sh
dcrctl -C ../dcrctl.conf \$*
EOF
chmod +x "${NODES_ROOT}/master/ctl"
cat > "${NODES_ROOT}/master/mine" <<EOF
#!/bin/sh
NUM=1
case \$1 in
''|*[!0-9]*) ;;
*) NUM=\$1 ;;
esac
for i in \$(seq \$NUM) ; do
dcrctl -C ../dcrctl.conf generate 1
sleep 1
done
EOF
chmod +x "${NODES_ROOT}/master/mine"
sleep 3
tmux send-keys "./ctl generate 32" C-m
################################################################################
# Setup the wallet
################################################################################
tmux new-window -t $SESSION:1 -n 'wallet'
tmux split-window -v
tmux select-pane -t 0
tmux resize-pane -D 15
tmux send-keys "cd ${NODES_ROOT}/wallet" C-m
tmux send-keys "dcrwallet -C ../wallet.conf --create" C-m
sleep 2
tmux send-keys "123" C-m "123" C-m "n" C-m "y" C-m
sleep 1
tmux send-keys "${WALLET_SEED}" C-m C-m
tmux send-keys "dcrwallet -C ../wallet.conf" C-m
tmux select-pane -t 1
tmux send-keys "cd ${NODES_ROOT}/wallet" C-m
cat > "${NODES_ROOT}/wallet/ctl" <<EOF
#!/bin/sh
dcrctl -C ../dcrctl.conf --wallet -c ./data/rpc.cert \$*
EOF
chmod +x "${NODES_ROOT}/wallet/ctl"
cat > "${NODES_ROOT}/wallet/tickets" <<EOF
#!/bin/sh
NUM=1
case \$1 in
''|*[!0-9]*) ;;
*) NUM=\$1 ;;
esac
./ctl purchaseticket default 999999 1 \`./ctl getnewaddress\` \$NUM
EOF
chmod +x "${NODES_ROOT}/wallet/tickets"
cat > "${NODES_ROOT}/wallet/xfer" <<EOF
#!/bin/sh
FEE=0.001
case \$1 in
''|*[!0-9\.]*) FEE=\`python -c "import random ; print((1e5 + random.expovariate(0.00002)) / 1e8)"\` ;;
*) FEE=\$1 ;;
esac
./ctl settxfee \$FEE
./ctl sendtoaddress ${WALLET_XFER_ADDR} 0.1
./ctl settxfee 0.001
EOF
chmod +x "${NODES_ROOT}/wallet/xfer"
################################################################################
# Setup the serially connected nodes
################################################################################
cat > "${NODES_ROOT}/1/ctl" <<EOF
#!/bin/sh
dcrctl -C ../dcrctl.conf -s 127.0.0.1:19566 \$*
EOF
chmod +x "${NODES_ROOT}/1/ctl"
tmux new-window -t $SESSION:2 -n 'network'
tmux send-keys "cd ${NODES_ROOT}/1" C-m
tmux send-keys "dcrd -C ../dcrd.conf --listen 127.0.0.1:19565 --rpclisten :19566 --connect 127.0.0.1:19555 " C-m
tmux attach-session -t $SESSION
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment