github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/dev/testnet/addnewnode.sh (about) 1 #!/usr/bin/env bash 2 3 source fbc.profile 4 5 set -e 6 set -o errexit 7 set -a 8 set -m 9 10 set -x # activate debugging 11 12 PRERUN=false 13 while getopts "i:n:p:r:s:b:dux" opt; do 14 case $opt in 15 i) 16 echo "IP=$OPTARG" 17 IP=$OPTARG 18 ;; 19 x) 20 echo "PRERUN=$OPTARG" 21 PRERUN=true 22 ;; 23 d) 24 echo "DOWNLOAD_DELTA=$OPTARG" 25 DOWNLOAD_DELTA="--download-delta=true" 26 MULTI_CACHE="--multi-cache=false" 27 ;; 28 u) 29 echo "DOWNLOAD_DELTA=$OPTARG" 30 UPLOAD_DELTA="--upload-delta=true" 31 ;; 32 n) 33 echo "INPUT_INDEX=$OPTARG" 34 INPUT_INDEX=$OPTARG 35 ;; 36 p) 37 echo "INPUT_P2PPORT=$OPTARG" 38 INPUT_P2PPORT=$OPTARG 39 ;; 40 r) 41 echo "INPUT_RPCPORT=$OPTARG" 42 INPUT_RPCPORT=$OPTARG 43 ;; 44 s) 45 echo "INPUT_SEEDNODE=$OPTARG" 46 INPUT_SEEDNODE=$OPTARG 47 ;; 48 b) 49 echo "BIN_NAME=$OPTARG" 50 BIN_NAME=$OPTARG 51 ;; 52 \?) 53 echo "Invalid option: -$OPTARG" 54 ;; 55 esac 56 done 57 58 function usage { 59 echo "Invalid index!" 60 echo "Use '-n' to specify the node id. Less then 99." 61 } 62 63 if [ -z "${INPUT_INDEX}" ]; then 64 usage 65 exit 66 fi 67 68 NAME=node${INPUT_INDEX} 69 let p2p_port=${BASE_PORT_PREFIX}+${INPUT_INDEX}*100+${P2P_PORT_SUFFIX} 70 let rpc_port=${BASE_PORT_PREFIX}+${INPUT_INDEX}*100+${RPC_PORT_SUFFIX} 71 72 # overwrite default ones 73 if [ ! -z ${INPUT_RPCPORT} ]; then 74 rpc_port=${INPUT_RPCPORT} 75 fi 76 77 if [ ! -z ${INPUT_P2PPORT} ]; then 78 p2p_port=${INPUT_P2PPORT} 79 fi 80 81 if [ -z ${IP} ]; then 82 IP="127.0.0.1" 83 fi 84 85 if [ -d ${FBCHAIN_NET_CACHE}/node0/fbchaind ]; then 86 seed_addr=$(${BIN_NAME} tendermint show-node-id --home ${FBCHAIN_NET_CACHE}/node0/fbchaind)@${IP}:${seedp2pport} 87 fi 88 89 if [ ! -z ${INPUT_SEEDNODE} ]; then 90 seed_addr=${INPUT_SEEDNODE} 91 fi 92 93 94 init() { 95 if [ ${INPUT_INDEX} -gt 99 ]; then 96 usage 97 exit 98 fi 99 100 if [ "${INPUT_INDEX}" -lt 1 ]; then 101 usage 102 exit 103 fi 104 105 if [ -d ${FBCHAIN_NET_CACHE}/${NAME} ]; then 106 echo "Invalid index!" 107 echo "<${FBCHAIN_NET_CACHE}/${NAME}> already exists. Use '-n' to try another index." 108 echo "For example: ./addnewnode.sh -n 9 -s ${seed_addr}" 109 exit 110 fi 111 112 if [ -z ${seed_addr} ]; then 113 echo "Invalid seed node!" 114 echo "Use '-s' to specify the seed node." 115 echo "For example: ./addnewnode.sh -n 6 -s ${seed_addr}" 116 exit 117 fi 118 119 ${BIN_NAME} init ${NAME} -o --chain-id ${CHAIN_ID} --home ${FBCHAIN_NET_CACHE}/${NAME}/fbchaind --node-index ${INPUT_INDEX} 120 } 121 122 123 start() { 124 echo "init new node..." 125 init 126 echo "init new node done" 127 128 129 echo "copy the genesis file..." 130 rm ${FBCHAIN_NET_CACHE}/${NAME}/fbchaind/config/genesis.json 131 cp ${FBCHAIN_NET_CACHE}/node0/fbchaind/config/genesis.json ${FBCHAIN_NET_CACHE}/${NAME}/fbchaind/config/ 132 echo "copy the genesis file done" 133 134 echo "start new node..." 135 p2pport=$1 136 rpcport=$2 137 seednode=$3 138 ((restport = INPUT_INDEX * 100 + REST_PORT)) # for evm tx 139 140 # echo "${BIN_NAME} --home ${FBCHAIN_NET_CACHE}/${NAME}/fbchaind start --p2p.laddr tcp://${IP}:${p2pport} --p2p.seeds ${seednode} --rpc.laddr tcp://${IP}:${rpcport}" 141 142 # LOG_LEVEL=main:info,*:error 143 LOG_LEVEL=main:info,*:error,state:info 144 # LOG_LEVEL=main:info,*:error,state:debug,consensus:debug 145 146 ${BIN_NAME} start \ 147 --chain-id ${CHAIN_ID} \ 148 --home ${FBCHAIN_NET_CACHE}/${NAME}/fbchaind \ 149 --p2p.laddr tcp://${IP}:${p2pport} \ 150 --p2p.seeds ${seednode} \ 151 --rest.laddr tcp://${IP}:${restport} \ 152 --log_level ${LOG_LEVEL} \ 153 --enable-gid \ 154 --append-pid \ 155 ${UPLOAD_DELTA} \ 156 ${DOWNLOAD_DELTA} \ 157 ${MULTI_CACHE} \ 158 --p2p.addr_book_strict=false \ 159 --enable-preruntx=${PRERUN} \ 160 --rpc.laddr tcp://${IP}:${rpcport} > ${FBCHAIN_NET_CACHE}/rpc${INPUT_INDEX}.log 2>&1 & 161 162 # echo "start new node done" 163 # --download-delta \ 164 # --enable-preruntx \ 165 166 } 167 168 169 start ${p2p_port} ${rpc_port} ${seed_addr}