consensus_simulation.sh 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/bin/bash
  2. # Simulation of the consensus network for n(>2) nodes.
  3. nodes=4
  4. # moving one folder up
  5. cd ..
  6. # PIDs array
  7. pids=()
  8. # Starting node 0 (seed) in background
  9. LOG_TARGETS="!sled,!net" ./darkfid \
  10. -v \
  11. --consensus \
  12. --consensus-p2p-accept tcp://127.0.0.1:6000 \
  13. --consensus-p2p-external tcp://127.0.0.1:6000 \
  14. --database ./tmp/node0/blockchain \
  15. --rpc-listen tcp://127.0.0.1:6010 \
  16. --sync-p2p-accept tcp://127.0.0.1:6020 \
  17. --sync-p2p-external tcp://127.0.0.1:6020 \
  18. --wallet-path ./tmp/node0/wallet.db &
  19. pids[${#pids[@]}]=$!
  20. # Waiting for seed to setup
  21. sleep 20
  22. # Starting nodes 1 till second to last node in background
  23. bound=$(($nodes-2))
  24. for i in $(eval echo "{1..$bound}")
  25. do
  26. LOG_TARGETS="!sled,!net" ./darkfid \
  27. -v \
  28. --consensus \
  29. --consensus-p2p-seed tcp://127.0.0.1:6000 \
  30. --consensus-seed-rpc tcp://127.0.0.1:6010 \
  31. --sync-p2p-seed tcp://127.0.0.1:6020 \
  32. --consensus-p2p-accept tcp://127.0.0.1:600$i \
  33. --consensus-p2p-external tcp://127.0.0.1:600$i \
  34. --database ./tmp/node$i/blockchain \
  35. --rpc-listen tcp://127.0.0.1:601$i \
  36. --sync-p2p-accept tcp://127.0.0.1:602$i \
  37. --sync-p2p-external tcp://127.0.0.1:602$i \
  38. --wallet-path ./tmp/node$i/wallet.db &
  39. pids[${#pids[@]}]=$!
  40. # waiting for node to setup
  41. sleep 20
  42. done
  43. # Trap kill signal
  44. trap ctrl_c INT
  45. # On kill signal, terminate background node processes
  46. function ctrl_c() {
  47. for pid in ${pids[@]}
  48. do
  49. kill $pid
  50. done
  51. }
  52. bound=$(($nodes-1))
  53. # Starting last node
  54. LOG_TARGETS="!sled,!net" ./darkfid \
  55. -v \
  56. --consensus \
  57. --consensus-p2p-seed tcp://127.0.0.1:6000 \
  58. --consensus-seed-rpc tcp://127.0.0.1:6010 \
  59. --sync-p2p-seed tcp://127.0.0.1:6020 \
  60. --consensus-p2p-accept tcp://127.0.0.1:600$bound \
  61. --consensus-p2p-external tcp://127.0.0.1:600$bound \
  62. --database ./tmp/node$bound/blockchain \
  63. --rpc-listen tcp://127.0.0.1:601$bound \
  64. --sync-p2p-accept tcp://127.0.0.1:602$bound \
  65. --sync-p2p-external tcp://127.0.0.1:602$bound \
  66. --wallet-path ./tmp/node$bound/wallet.db