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}