Guest User

Untitled

a guest
Oct 5th, 2018
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.48 KB | None | 0 0
  1. #!/bin/sh
  2. #
  3. # Script to setup parallel dcrd nodes with separate wallets.
  4. # Useful for testing reorgs by disconnecting nodes, mining individually, then
  5. # reconnecting them.
  6. #
  7. # alpha <------> beta
  8. # listen 19100 19200
  9. # rpclisten 19101 <. .> 19201
  10. # w-alpha | | w-beta
  11. # rpclisten 19102 19202
  12. #
  13. # For simplicity, node "beta" is configured to connect to node "alpha" via
  14. # --connect on the command line, so that you can easily disconnect the nodes
  15. # by stopping beta, removing the --connect, then restarting it.
  16.  
  17. set -e
  18.  
  19. SESSION="dcrd-parallel-nodes"
  20. NODES_ROOT=~/dcrdsimnetnodes
  21. RPCUSER="USER"
  22. RPCPASS="PASS"
  23. WALLET01_SEED="1111111111111111111111111111111111111111111111111111111111111111"
  24. WALLET02_SEED="2222222222222222222222222222222222222222222222222222222222222222"
  25. WALLET01_MININGADDR="Ssoaqgx4ecmHX54LqrUXgqi6miUFxP9iUvc"
  26. WALLET02_MININGADDR="SsgkhRgr9JdonELE7MjK8qUkwSPsrTnWcE6"
  27.  
  28. if [ -d "${NODES_ROOT}" ] ; then
  29. rm -R "${NODES_ROOT}"
  30. fi
  31.  
  32. mkdir -p "${NODES_ROOT}/"{alpha,beta,w-alpha,w-beta}
  33.  
  34. # Config Files
  35.  
  36. cat > "${NODES_ROOT}/dcrd.conf" <<EOF
  37. rpcuser=${RPCUSER}
  38. rpcpass=${RPCPASS}
  39. simnet=1
  40. logdir=./log
  41. datadir=./data
  42. txindex=1
  43. debuglevel=TXMP=TRACE,MINR=TRACE,CHAN=TRACE
  44. EOF
  45.  
  46. cat > "${NODES_ROOT}/dcrctl.conf" <<EOF
  47. rpcuser=${RPCUSER}
  48. rpcpass=${RPCPASS}
  49. simnet=1
  50. EOF
  51.  
  52. cat > "${NODES_ROOT}/wallet.conf" <<EOF
  53. username=${RPCUSER}
  54. password=${RPCPASS}
  55. simnet=1
  56. logdir=./log
  57. appdata=./data
  58. pass=123
  59. enablevoting=1
  60. enableticketbuyer=1
  61. nogrpc = 1
  62. ticketbuyer.nospreadticketpurchases=1
  63. ticketbuyer.maxperblock=5
  64. ; ticketbuyer.minfee=0.002
  65. EOF
  66.  
  67.  
  68. cp ${NODES_ROOT}/dcrd.conf ${NODES_ROOT}/alpha
  69. cat >> ${NODES_ROOT}/alpha/dcrd.conf <<EOF
  70. listen = 127.0.0.1:19100
  71. rpclisten = 127.0.0.1:19101
  72. miningaddr = ${WALLET01_MININGADDR}
  73. EOF
  74. cp ${NODES_ROOT}/dcrctl.conf ${NODES_ROOT}/alpha
  75. cat >> ${NODES_ROOT}/alpha/dcrctl.conf <<EOF
  76. rpcserver = 127.0.0.1:19101
  77. EOF
  78. cp ${NODES_ROOT}/dcrctl.conf ${NODES_ROOT}/w-alpha
  79. cat >> ${NODES_ROOT}/w-alpha/dcrctl.conf <<EOF
  80. walletrpcserver = 127.0.0.1:19102
  81. EOF
  82.  
  83.  
  84. cp ${NODES_ROOT}/dcrd.conf ${NODES_ROOT}/beta
  85. cat >> ${NODES_ROOT}/beta/dcrd.conf <<EOF
  86. listen = 127.0.0.1:19200
  87. rpclisten = 127.0.0.1:19201
  88. miningaddr = ${WALLET02_MININGADDR}
  89. EOF
  90. cp ${NODES_ROOT}/dcrctl.conf ${NODES_ROOT}/beta
  91. cat >> ${NODES_ROOT}/beta/dcrctl.conf <<EOF
  92. rpcserver = 127.0.0.1:19201
  93. EOF
  94. cp ${NODES_ROOT}/dcrctl.conf ${NODES_ROOT}/w-beta
  95. cat >> ${NODES_ROOT}/w-beta/dcrctl.conf <<EOF
  96. walletrpcserver = 127.0.0.1:19202
  97. EOF
  98.  
  99. # Node Scripts
  100.  
  101. cat > "${NODES_ROOT}/alpha/ctl" <<EOF
  102. #!/bin/sh
  103. dcrctl -C ./dcrctl.conf \$*
  104. EOF
  105. chmod +x "${NODES_ROOT}/alpha/ctl"
  106.  
  107. cat > "${NODES_ROOT}/alpha/mine" <<EOF
  108. #!/bin/sh
  109. NUM=1
  110. case \$1 in
  111. ''|*[!0-9]*) ;;
  112. *) NUM=\$1 ;;
  113. esac
  114.  
  115. for i in \$(seq \$NUM) ; do
  116. dcrctl -C ./dcrctl.conf generate 1
  117. sleep 0.3
  118. done
  119. EOF
  120. chmod +x "${NODES_ROOT}/alpha/mine"
  121.  
  122. # script to mine one block on each node
  123. cat > "${NODES_ROOT}/mine-both" <<EOF
  124. #!/bin/sh
  125. NUM=1
  126. case \$1 in
  127. ''|*[!0-9]*) ;;
  128. *) NUM=\$1 ;;
  129. esac
  130.  
  131. for i in \$(seq \$NUM) ; do
  132. cd ${NODES_ROOT}/alpha && ./mine
  133. cd ${NODES_ROOT}/beta && ./mine
  134. done
  135. EOF
  136. chmod +x "${NODES_ROOT}/mine-both"
  137.  
  138.  
  139. cp ${NODES_ROOT}/alpha/ctl ${NODES_ROOT}/beta
  140. cp ${NODES_ROOT}/alpha/mine ${NODES_ROOT}/beta
  141.  
  142.  
  143. # Wallet Scripts
  144.  
  145. cat > "${NODES_ROOT}/w-alpha/ctl" <<EOF
  146. #!/bin/sh
  147. dcrctl -C ./dcrctl.conf --wallet -c ./data/rpc.cert \$*
  148. EOF
  149. chmod +x "${NODES_ROOT}/w-alpha/ctl"
  150.  
  151. cat > "${NODES_ROOT}/w-alpha/tickets" <<EOF
  152. #!/bin/sh
  153. NUM=1
  154. case \$1 in
  155. ''|*[!0-9]*) ;;
  156. *) NUM=\$1 ;;
  157. esac
  158.  
  159. ./ctl purchaseticket default 999999 1 \`./ctl getnewaddress\` \$NUM
  160. EOF
  161. chmod +x "${NODES_ROOT}/w-alpha/tickets"
  162.  
  163. cat > "${NODES_ROOT}/w-alpha/xfer" <<EOF
  164. #!/bin/sh
  165. ./ctl sendtoaddress \`./ctl getnewaddress\` 0.1
  166. EOF
  167. chmod +x "${NODES_ROOT}/w-alpha/xfer"
  168.  
  169. cp ${NODES_ROOT}/w-alpha/ctl ${NODES_ROOT}/w-beta
  170. cp ${NODES_ROOT}/w-alpha/tickets ${NODES_ROOT}/w-beta
  171. cp ${NODES_ROOT}/w-alpha/xfer ${NODES_ROOT}/w-beta
  172.  
  173.  
  174. cd ${NODES_ROOT} && tmux -2 new-session -d -s $SESSION
  175.  
  176. tmux rename-window -t $SESSION:0 'prompt'
  177.  
  178.  
  179. # Alpha Node
  180.  
  181. tmux new-window -t $SESSION:1 -n 'alpha'
  182. tmux split-window -v
  183. tmux select-pane -t 0
  184. tmux send-keys "cd alpha" C-m
  185. tmux send-keys "dcrd -C ./dcrd.conf" C-m
  186. tmux select-pane -t 1
  187. tmux send-keys "cd alpha" C-m
  188. #sleep 3
  189. #tmux send-keys "./ctl generate 16" C-m
  190.  
  191.  
  192. # Beta Node
  193.  
  194. tmux new-window -t $SESSION:2 -n 'beta'
  195. tmux split-window -v
  196. tmux select-pane -t 0
  197. tmux send-keys "cd beta" C-m
  198. tmux send-keys "dcrd -C ./dcrd.conf --connect 127.0.0.1:19100" C-m
  199. tmux select-pane -t 1
  200. tmux send-keys "cd beta" C-m
  201. #sleep 3
  202. #tmux send-keys "./ctl generate 16" C-m
  203.  
  204. sleep 3
  205. tmux send-keys -t $SESSION:0 "./mine-both 16" C-m
  206.  
  207. # Wallets
  208.  
  209. tmux new-window -t $SESSION:3 -n 'wallets'
  210. tmux split-window -h
  211. tmux split-window -v
  212. tmux select-pane -t 0
  213. tmux split-window -v
  214.  
  215.  
  216. tmux select-pane -t 0
  217. tmux send-keys "cd w-alpha" C-m
  218. tmux send-keys "dcrwallet -C ../wallet.conf --create" C-m
  219. sleep 2
  220. tmux send-keys "123" C-m "123" C-m "n" C-m "y" C-m
  221. sleep 1
  222. tmux send-keys "${WALLET01_SEED}" C-m C-m
  223. tmux send-keys "dcrwallet -C ../wallet.conf --rpcconnect 127.0.0.1:19101 \
  224. --rpclisten 127.0.0.1:19102" C-m
  225. tmux select-pane -t 2
  226. tmux send-keys "cd w-alpha" C-m
  227.  
  228. tmux select-pane -t 1
  229. tmux send-keys "cd w-beta" C-m
  230. tmux send-keys "dcrwallet -C ../wallet.conf --create" C-m
  231. sleep 2
  232. tmux send-keys "123" C-m "123" C-m "n" C-m "y" C-m
  233. sleep 1
  234. tmux send-keys "${WALLET02_SEED}" C-m C-m
  235. tmux send-keys "dcrwallet -C ../wallet.conf --rpcconnect 127.0.0.1:19201 \
  236. --rpclisten 127.0.0.1:19202" C-m
  237. tmux select-pane -t 3
  238. tmux send-keys "cd w-beta" C-m
  239.  
  240.  
  241.  
  242.  
  243. tmux attach-session -t $SESSION
Add Comment
Please, Sign In to add comment