#! /bin/bash set -eu set -o pipefail DOCKER_IMAGE=$1 NETWORK_NAME=$2 IPV=$3 ID=$4 N=$5 PROXY_APP=$6 ASSERT_NODE_UP=1 ASSERT_NODE_DOWN=0 ###########################s#################################### # this runs on each peer: # kill peer # bring it back online with double_sign_check_height 10 # wait node is not run by double sign risk reduction # # kill peer # bring it back online with double_sign_check_height 1 # pass double sign risk reduction, wait for it to sync and check the app hash # # kill peer # bring it back online with double_sign_check_height 0 # wait for it to sync and check the app hash ############################################################### echo "Testing double sign risk reduction on node $ID" # kill peer set +e docker rm -vf local_testnet_$ID set -e PERSISTENT_PEERS="$(test/p2p/address.sh $IPV 1 26656 $DOCKER_IMAGE)" for j in `seq 2 $N`; do PERSISTENT_PEERS="$PERSISTENT_PEERS,$(test/p2p/address.sh $IPV $j 26656 $DOCKER_IMAGE)" done # bring it back online with double_sign_check_height 10 # wait node is not run by double sign risk reduction DSCH=10 bash test/p2p/peer.sh $DOCKER_IMAGE $NETWORK_NAME $IPV $ID $PROXY_APP "--p2p.persistent_peers $PERSISTENT_PEERS --p2p.pex --rpc.unsafe --consensus.double_sign_check_height $DSCH" bash test/p2p/client.sh $DOCKER_IMAGE $NETWORK_NAME $IPV fs_$ID "test/p2p/dsrr/check_peer.sh $IPV $ID $ASSERT_NODE_DOWN" docker stop local_testnet_$ID docker rm local_testnet_$ID # bring it back online with double_sign_check_height 1 # pass double sign risk reduction, wait for it to sync and check the app hash DSCH=1 bash test/p2p/peer.sh $DOCKER_IMAGE $NETWORK_NAME $IPV $ID $PROXY_APP "--p2p.persistent_peers $PERSISTENT_PEERS --p2p.pex --rpc.unsafe --consensus.double_sign_check_height $DSCH" bash test/p2p/client.sh $DOCKER_IMAGE $NETWORK_NAME $IPV fs_$ID "test/p2p/dsrr/check_peer.sh $IPV $ID $ASSERT_NODE_UP" docker stop local_testnet_$ID docker rm local_testnet_$ID DSCH=0 # bring it back online with double_sign_check_height 0 # double sign risk reduction is not activated, wait for it to sync and check the app hash bash test/p2p/peer.sh $DOCKER_IMAGE $NETWORK_NAME $IPV $ID $PROXY_APP "--p2p.persistent_peers $PERSISTENT_PEERS --p2p.pex --rpc.unsafe --consensus.double_sign_check_height $DSCH" bash test/p2p/client.sh $DOCKER_IMAGE $NETWORK_NAME $IPV fs_$ID "test/p2p/dsrr/check_peer.sh $IPV $ID $ASSERT_NODE_UP" echo "" echo "PASS" echo ""