Created
September 10, 2018 12:09
-
-
Save matheusd/c2d4e13cb2c68121680955e777c5057d to your computer and use it in GitHub Desktop.
Setup 4 dcrd simnet nodes using a serial network topology
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/sh | |
# Tmux script to create 4 dcrd nodes connected in series. Useful for testing | |
# message relaying | |
# Network layout: | |
# master <-> 1 <-> 2 <-> 3 | |
# 19555 19665 19675 19685 | |
set -e | |
SESSION="dcrd-serial-nodes" | |
NODES_ROOT=~/dcrdsimnetnodes | |
RPCUSER="USER" | |
RPCPASS="PASS" | |
WALLET_SEED="b280922d2cffda44648346412c5ec97f429938105003730414f10b01e1402eac" | |
WALLET_MINING_ADDR="SsWKp7wtdTZYabYFYSc9cnxhwFEjA5g4pFc" # NOTE: This must be changed if the seed is changed. | |
WALLET_XFER_ADDR="Sso52TPnorVkSaRYzHmi4FgU8F5BFEDZsiK" # same as above | |
if [ -d "${NODES_ROOT}" ] ; then | |
rm -R "${NODES_ROOT}" | |
fi | |
mkdir -p "${NODES_ROOT}/"{master,1,2,3,wallet} | |
cat > "${NODES_ROOT}/dcrd.conf" <<EOF | |
rpcuser=${RPCUSER} | |
rpcpass=${RPCPASS} | |
simnet=1 | |
logdir=./log | |
datadir=./data | |
; debuglevel=FEES=DEBUG,TXMP=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 | |
ticketbuyer.nospreadticketpurchases=1 | |
ticketbuyer.maxperblock=5 | |
; ticketbuyer.minfee=0.002 | |
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 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 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 0.3 | |
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 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 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" | |
tmux send-keys "./tickets 300" | |
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" | |
cat > "${NODES_ROOT}/2/ctl" <<EOF | |
#!/bin/sh | |
dcrctl -C ../dcrctl.conf -s 127.0.0.1:19576 \$* | |
EOF | |
chmod +x "${NODES_ROOT}/2/ctl" | |
cat > "${NODES_ROOT}/3/ctl" <<EOF | |
#!/bin/sh | |
dcrctl -C ../dcrctl.conf -s 127.0.0.1:19586 \$* | |
EOF | |
chmod +x "${NODES_ROOT}/3/ctl" | |
tmux new-window -t $SESSION:2 -n 'wallet' | |
tmux send-keys "cd 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 split-window -v | |
tmux select-pane -t 1 | |
tmux send-keys "cd 2" C-m | |
tmux send-keys "dcrd -C ../dcrd.conf --listen 127.0.0.1:19575 --rpclisten :19576 --connect 127.0.0.1:19565 " C-m | |
tmux split-window -v | |
tmux select-pane -t 2 | |
tmux send-keys "cd 3" C-m | |
tmux send-keys "dcrd -C ../dcrd.conf --listen 127.0.0.1:19585 --rpclisten :19586 --connect 127.0.0.1:19575 " C-m | |
tmux select-layout even-vertical | |
tmux attach-session -t $SESSION |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment