x 3 лет назад
Родитель
Сommit
e3106338e9

+ 163 - 0
contrib/localnet/darkfid-single-node/run-dao-test.sh

@@ -0,0 +1,163 @@
+#!/bin/sh -x
+set -e
+
+# First run the consensus node:
+#
+#   ./tmux_sessions.sh now && cd ../../../ && make darkfid && cd -
+#   ./clean.sh
+#   ./tmux_sessions.sh -v
+#   ./sync-wallet.sh
+#
+# In another term run the wallet syncing:
+#
+#   ./sync-wallet.sh
+#
+# Finally you can run this script
+
+mint_tokens() {
+    drk token generate-mint
+    drk token generate-mint
+
+    TOKEN_ID1=$(drk token list 2>/dev/null | awk 'NR == 3 {print $1}')
+    TOKEN_ID2=$(drk token list 2>/dev/null | awk 'NR == 4 {print $1}')
+
+    drk alias add WCKD "$TOKEN_ID1"
+    drk alias add MLDY "$TOKEN_ID2"
+
+    ADDR=$(drk wallet --address)
+
+    drk token mint WCKD 42 "$ADDR" > /tmp/mint-wkcd.tx
+    drk token mint MLDY 20 "$ADDR" > /tmp/mint-mldy.tx
+
+    drk broadcast < /tmp/mint-wkcd.tx
+    drk broadcast < /tmp/mint-mldy.tx
+
+    drk token list
+}
+
+token_balance() {
+    BALANCE=$(drk wallet --balance 2>/dev/null)
+    # No tokens received at all yet
+    echo "$BALANCE" | rg "No unspent balances found" > /dev/null
+    if [ "$?" = 0 ]; then
+        echo 0
+        return
+    fi
+    BALANCE=$(echo "$BALANCE" | rg "$1")
+    # Not received yet so no entry
+    if [ "$?" = 1 ]; then
+        echo 0
+        return
+    fi
+    # OK we have the token, show the actual balance
+    echo "$BALANCE" | awk '{print $5}'
+}
+
+wait_tokens() {
+    while [ "$(token_balance WCKD)" = 0 ] || [ "$(token_balance MLDY)" = 0 ]; do
+        sleep 1
+    done
+}
+
+mint_dao() {
+    drk dao create 20 10 0.67 MLDY > /tmp/dao.dat
+    drk dao import MiladyMakerDAO < /tmp/dao.dat
+    drk dao list
+    drk dao list MiladyMakerDAO
+
+    drk dao mint MiladyMakerDAO > /tmp/dao-mint.tx
+    drk broadcast < /tmp/dao-mint.tx
+}
+
+wait_dao_mint() {
+    while [ "$(drk dao list MiladyMakerDAO | rg "Tx hash" | awk '{print $3}')" = None ]; do
+        sleep 1
+    done
+}
+
+fill_treasury() {
+    PUBKEY=$(drk dao list 1 | awk 'NR==9 {print $3}')
+    BULLA=$(drk dao list 1 | awk 'NR==4 {print $2}')
+    drk transfer 20 WCKD "$PUBKEY" --dao "$BULLA" > /tmp/xfer.tx
+    drk broadcast < /tmp/xfer.tx
+}
+
+dao_balance() {
+    BALANCE=$(drk dao balance 1 2>/dev/null)
+    # No tokens received at all yet
+    echo "$BALANCE" | rg "No unspent balances found" > /dev/null
+    if [ "$?" = 0 ]; then
+        echo 0
+        return
+    fi
+    BALANCE=$(echo "$BALANCE" | rg "$1")
+    # Not received yet so no entry
+    if [ "$?" = 1 ]; then
+        echo 0
+        return
+    fi
+    # OK we have the token, show the actual balance
+    echo "$BALANCE" | awk '{print $5}'
+}
+wait_dao_treasury() {
+    while [ "$(dao_balance WCKD)" = 0 ]; do
+        sleep 1
+    done
+}
+
+propose() {
+    MY_ADDR=$(drk wallet --address)
+    drk dao balance MiladyMakerDAO
+    drk dao propose MiladyMakerDAO "$MY_ADDR" 0.1 WCKD > /tmp/propose.tx
+    drk broadcast < /tmp/propose.tx
+}
+
+proposal_status() {
+    PROPOSALS_LEN=$(drk dao proposals MiladyMakerDAO | wc -l)
+    if [ "$PROPOSALS_LEN" = 0 ]; then
+        echo 0
+    else
+        echo 1
+    fi
+}
+wait_proposal() {
+    while [ "$(proposal_status)" = 0 ]; do
+        sleep 1
+    done
+}
+
+vote() {
+    PROPOSAL_ID=1
+    drk dao vote MiladyMakerDAO "$PROPOSAL_ID" 1 20 > /tmp/dao-vote.tx
+    drk broadcast < /tmp/dao-vote.tx
+}
+
+vote_status() {
+    drk dao proposal MiladyMakerDAO 1 | rg yes > /dev/null
+    echo $?
+}
+wait_vote() {
+    while [ "$(vote_status)" != 0 ]; do
+        sleep 1
+    done
+}
+
+do_exec() {
+    PROPOSAL_ID=1
+    drk dao exec MiladyMakerDAO "$PROPOSAL_ID" > /tmp/dao-exec.tx
+    drk broadcast < /tmp/dao-exec.tx
+}
+
+drk wallet --keygen
+mint_tokens
+wait_tokens
+mint_dao
+wait_dao_mint
+fill_treasury
+wait_dao_treasury
+propose
+wait_proposal
+vote
+wait_vote
+do_exec
+

+ 14 - 0
contrib/localnet/darkfid-single-node/sync-wallet.sh

@@ -0,0 +1,14 @@
+#!/bin/bash
+
+while true; do
+    drk ping 2> /dev/null
+    if [ $? == 0 ]; then
+        break
+    fi
+    sleep 1
+done
+
+drk wallet --initialize
+drk scan
+drk subscribe blocks
+