run-dao-test.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #!/bin/sh
  2. set -e
  3. set -x
  4. # Path to `drk` binary
  5. DRK="../../../drk"
  6. # First run the consensus node and the faucet:
  7. #
  8. # ./tmux_sessions.sh now && cd ../../../ && make darkfid faucetd && cd -
  9. # ./clean.sh
  10. # ./tmux_sessions.sh -v
  11. # ./sync-wallet.sh
  12. #
  13. # In another term run the wallet syncing:
  14. #
  15. # ./sync-wallet.sh
  16. #
  17. # Finally you can run this script
  18. mint_tokens() {
  19. $DRK token generate-mint
  20. $DRK token generate-mint
  21. TOKEN_ID1="$($DRK token list 2>/dev/null | awk 'NR == 3 {print $1}')"
  22. TOKEN_ID2="$($DRK token list 2>/dev/null | awk 'NR == 4 {print $1}')"
  23. $DRK alias add WCKD "$TOKEN_ID1"
  24. $DRK alias add MLDY "$TOKEN_ID2"
  25. ADDR="$($DRK wallet --address)"
  26. $DRK token mint WCKD 42 "$ADDR" | tee /tmp/mint-wkcd.tx | $DRK broadcast
  27. $DRK token mint MLDY 20 "$ADDR" | tee /tmp/mint-mldy.tx | $DRK broadcast
  28. $DRK token list
  29. }
  30. token_balance() {
  31. BALANCE="$($DRK wallet --balance 2>/dev/null)"
  32. # No tokens received at all yet
  33. if echo "$BALANCE" | grep -q "No unspent balances found"; then
  34. echo 0
  35. return
  36. fi
  37. BALANCE="$(echo "$BALANCE" | grep -q "$1")"
  38. # Not received yet so no entry
  39. if [ $? = 1 ]; then
  40. echo 0
  41. return
  42. fi
  43. # OK we have the token, show the actual balance
  44. echo "$BALANCE" | awk '{print $5}'
  45. }
  46. wait_tokens() {
  47. while [ "$(token_balance WCKD)" = 0 ] || [ "$(token_balance MLDY)" = 0 ]; do
  48. sleep 1
  49. done
  50. }
  51. mint_dao() {
  52. $DRK dao create 20 10 0.67 MLDY > /tmp/dao.dat
  53. $DRK dao import MiladyMakerDAO < /tmp/dao.dat
  54. $DRK dao list
  55. $DRK dao list MiladyMakerDAO
  56. $DRK dao mint MiladyMakerDAO | tee /tmp/dao-mint.tx | $DRK broadcast
  57. }
  58. wait_dao_mint() {
  59. while [ "$($DRK dao list MiladyMakerDAO | grep '^Tx hash: ' | awk '{print $3}')" = None ]; do
  60. sleep 1
  61. done
  62. }
  63. fill_treasury() {
  64. PUBKEY="$($DRK dao list 1 | grep '^Public key: ' | cut -d ' ' -f3)"
  65. BULLA="$($DRK dao list 1 | grep '^Bulla: ' | cut -d' ' -f2)"
  66. $DRK transfer 20 WCKD "$PUBKEY" --dao "$BULLA" | tee /tmp/xfer.tx | $DRK broadcast
  67. }
  68. dao_balance() {
  69. BALANCE=$($DRK dao balance 1 2>/dev/null)
  70. # No tokens received at all yet
  71. if echo "$BALANCE" | grep -q "No unspent balances found"; then
  72. echo 0
  73. return
  74. fi
  75. BALANCE=$(echo "$BALANCE" | grep "$1")
  76. # Not received yet so no entry
  77. if [ $? = 1 ]; then
  78. echo 0
  79. return
  80. fi
  81. # OK we have the token, show the actual balance
  82. echo "$BALANCE" | awk '{print $5}'
  83. }
  84. wait_dao_treasury() {
  85. while [ "$(dao_balance WCKD)" = 0 ]; do
  86. sleep 1
  87. done
  88. }
  89. propose() {
  90. MY_ADDR=$($DRK wallet --address)
  91. $DRK dao balance MiladyMakerDAO
  92. $DRK dao propose MiladyMakerDAO "$MY_ADDR" 0.1 WCKD > /tmp/propose.tx
  93. $DRK broadcast < /tmp/propose.tx
  94. }
  95. proposal_status() {
  96. PROPOSALS_LEN=$($DRK dao proposals MiladyMakerDAO | wc -l)
  97. if [ "$PROPOSALS_LEN" = 0 ]; then
  98. echo 0
  99. else
  100. echo 1
  101. fi
  102. }
  103. wait_proposal() {
  104. while [ "$(proposal_status)" = 0 ]; do
  105. sleep 1
  106. done
  107. }
  108. vote() {
  109. PROPOSAL_ID=1
  110. $DRK dao vote MiladyMakerDAO "$PROPOSAL_ID" 1 20 > /tmp/dao-vote.tx
  111. $DRK broadcast < /tmp/dao-vote.tx
  112. }
  113. vote_status() {
  114. PROPOSAL_ID=1
  115. $DRK dao proposal MiladyMakerDAO "$PROPOSAL_ID" | grep -q yes
  116. echo $?
  117. }
  118. wait_vote() {
  119. while [ "$(vote_status)" != 0 ]; do
  120. sleep 1
  121. done
  122. }
  123. do_exec() {
  124. PROPOSAL_ID=1
  125. $DRK dao exec MiladyMakerDAO "$PROPOSAL_ID" > /tmp/dao-exec.tx
  126. $DRK broadcast < /tmp/dao-exec.tx
  127. }
  128. $DRK wallet --keygen
  129. mint_tokens
  130. wait_tokens
  131. mint_dao
  132. wait_dao_mint
  133. fill_treasury
  134. wait_dao_treasury
  135. propose
  136. wait_proposal
  137. vote
  138. wait_vote
  139. do_exec