#!/bin/bash DATA=$GOPATH/src/github.com/tendermint/tendermint/benchmarks/blockchain/data if [ ! -d $DATA ]; then echo "no data found, generating a chain... (this only has to happen once)" tendermint init --home $DATA cp $DATA/config.toml $DATA/config2.toml echo " [consensus] timeout_commit = 0 " >> $DATA/config.toml echo "starting node" tendermint node \ --home $DATA \ --proxy_app kvstore \ --p2p.laddr tcp://127.0.0.1:56656 \ --rpc.laddr tcp://127.0.0.1:56657 \ --log_level error & echo "making blocks for 60s" sleep 60 mv $DATA/config2.toml $DATA/config.toml kill %1 echo "done generating chain." fi # validator node HOME1=$TMPDIR$RANDOM$RANDOM cp -R $DATA $HOME1 echo "starting validator node" tendermint node \ --home $HOME1 \ --proxy_app kvstore \ --p2p.laddr tcp://127.0.0.1:56656 \ --rpc.laddr tcp://127.0.0.1:56657 \ --log_level error & sleep 1 # downloader node HOME2=$TMPDIR$RANDOM$RANDOM tendermint init --home $HOME2 cp $HOME1/genesis.json $HOME2 printf "starting downloader node" tendermint node \ --home $HOME2 \ --proxy_app kvstore \ --p2p.laddr tcp://127.0.0.1:56666 \ --rpc.laddr tcp://127.0.0.1:56667 \ --p2p.persistent_peers 127.0.0.1:56656 \ --log_level error & # wait for node to start up so we only count time where we are actually syncing sleep 0.5 while curl localhost:56667/status 2> /dev/null | grep "\"latest_block_height\": 0," > /dev/null do printf '.' sleep 0.2 done echo echo "syncing blockchain for 10s" for i in {1..10} do sleep 1 HEIGHT="$(curl localhost:56667/status 2> /dev/null \ | grep 'latest_block_height' \ | grep -o ' [0-9]*' \ | xargs)" let 'RATE = HEIGHT / i' echo "height: $HEIGHT, blocks/sec: $RATE" done kill %1 kill %2 rm -rf $HOME1 $HOME2