run-dao-test.sh 3.5 KB

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