| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #!/bin/sh
- set -e
- set -x
- # Accept path to `drk` binary as arg or use default
- DEFAULT_DRK="../../../drk -c drk0.toml"
- DRK="${1:-$DEFAULT_DRK}"
- # Path to contract to be deployed
- WASM="../../../../smart-contract/membership.wasm"
- CLIENT="../../../../smart-contract/membership"
- # Script configuration
- OUTPUT_FOLDER=/tmp/darkfi
- mkdir -p $OUTPUT_FOLDER
- SLEEP_TIME=5
- # First run the darkfid nodes and the miners:
- #
- # ./clean.sh
- # ./init-wallets.sh
- # ./tmux_sessions.sh
- #
- # Set the right path for WASM and CLIENT binaries for your membership contract.
- # Now you can run this script
- token_balance() {
- BALANCE="$($1 wallet balance 2>/dev/null)"
- # No tokens received at all yet
- if echo "$BALANCE" | grep -q "No unspent balances found"; then
- echo 0
- return
- fi
- BALANCE="$(echo "$BALANCE" | grep -q "$2")"
- # 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_token() {
- while [ "$(token_balance "$1" "$2")" = 0 ]; do
- sleep $SLEEP_TIME
- sh ./sync-wallet.sh "$1" > /dev/null
- done
- }
- deployment_status() {
- STATUS="$($1 contract list $2)"
- # contract deployment hasn't been confirmed yet
- if echo "$STATUS" | grep -q "No history records found"; then
- echo 0
- return
- fi
- echo 1
- }
- wait_deployment() {
- while [ "$(deployment_status "$1" "$2")" = 0 ]; do
- sleep $SLEEP_TIME
- sh ./sync-wallet.sh "$1" > /dev/null
- done
- }
- deploy_contract() {
- ADDRESS="$($1 contract generate-deploy | awk 'NR==3 {print $3}')"
- $1 contract deploy $ADDRESS $WASM | tee $OUTPUT_FOLDER/deploy-$ADDRESS.tx | $1 broadcast >/dev/null 2>&1
- echo "$ADDRESS"
- }
- tx_status() {
- STATUS="$($1 explorer txs-history | grep $2 | awk '{print $3}')"
- if echo "$STATUS" | grep -q "Broadcasted"; then
- echo 0
- return
- fi
- echo 1
- }
- wait_tx() {
- while [ "$(tx_status "$1" "$2")" = 0 ]; do
- sleep $SLEEP_TIME
- sh ./sync-wallet.sh "$1" > /dev/null
- done
- }
- generate_key() {
- SECRET_KEY="$($CLIENT generate | awk 'NR==1 {print $3}')"
- echo "$SECRET_KEY"
- }
- register_call() {
- TX_ID="$($CLIENT register $2 $3 | tee $OUTPUT_FOLDER/register-$2-$3.call | $1 tx-from-calls | tee $OUTPUT_FOLDER/register-$2-$3.tx | $1 broadcast | awk 'NR==4 {print $3}')"
- echo "$TX_ID"
- }
- deregister_call() {
- TX_ID="$($CLIENT deregister $2 $3 | tee $OUTPUT_FOLDER/deregister-$2-$3.call | $1 tx-from-calls | tee $OUTPUT_FOLDER/deregister-$2-$3.tx | $1 broadcast | awk 'NR==4 {print $3}')"
- echo "$TX_ID"
- }
- wait_token "$DRK" DRK
- CONTRACT_ADDRESS="$(deploy_contract "$DRK")"
- wait_deployment "$DRK" "$CONTRACT_ADDRESS"
- wait_token "$DRK" DRK
- SECRET_KEY="$(generate_key "$DRK" "$CONTRACT_ADDRESS")"
- TX_ID="$(register_call "$DRK" "$CONTRACT_ADDRESS" "$SECRET_KEY")"
- wait_tx "$DRK" "$TX_ID"
- TX_ID="$(deregister_call "$DRK" "$CONTRACT_ADDRESS" "$SECRET_KEY")"
- wait_tx "$DRK" "$TX_ID"
|