github.com/Finschia/finschia-sdk@v0.48.1/tools/cosmovisor/upgrade.sh (about) 1 #!/bin/sh 2 3 set -e 4 5 [ -n "$DAEMON_HOME" ] 6 [ -d $DAEMON_HOME ] 7 [ -n "$DAEMON_NAME" ] 8 [ -x $(which $DAEMON_NAME) ] 9 10 [ -n "$CHAIN_ID" ] 11 12 UPGRADE_HEIGHT=5 13 14 assert_begin() { 15 info=$($DAEMON_NAME q block --log_level info 2>/dev/null) 16 if [ -z "$info" ] 17 then 18 return 1 19 fi 20 21 height=$(echo "$info" | jq -r '.block.header.height') 22 if [ "$height" -ge 0 ] 2>/dev/null 23 then 24 return 0 25 else 26 return 1 27 fi 28 } 29 30 wait_for_begin() { 31 while ! assert_begin 32 do 33 sleep 1 34 done 35 } 36 37 keyring_backend=test 38 39 new_binary=$(realpath ./dummyd) 40 prepare_upgrade() { 41 name=$1 42 bindir=$DAEMON_HOME/cosmovisor/upgrades/$name/bin 43 mkdir -p $bindir 44 cp $new_binary $bindir/$DAEMON_NAME 45 } 46 47 submit_upgrade() { 48 name=$1 49 checksum=sha256:$(sha256sum $new_binary | awk '{print $1}') 50 info='{"binaries":{"any":"file://'$new_binary'?checksum='$checksum'"}}' 51 $DAEMON_NAME --home $DAEMON_HOME tx --keyring-backend $keyring_backend gov submit-proposal software-upgrade $name --upgrade-height $UPGRADE_HEIGHT --upgrade-info $info --title upgrade --description "test upgrade" --deposit 1stake --broadcast-mode block --from validator0 --chain-id $CHAIN_ID --yes 52 } 53 54 vote() { 55 proposal=$1 56 $DAEMON_NAME --home $DAEMON_HOME tx --keyring-backend $keyring_backend gov vote $proposal VOTE_OPTION_YES --broadcast-mode sync --from validator0 --chain-id $CHAIN_ID --yes 57 } 58 59 wait_for_begin 60 61 if [ "$DAEMON_ALLOW_DOWNLOAD_BINARIES" != true ] 62 then 63 prepare_upgrade testing 64 fi 65 submit_upgrade testing 66 vote 1