cardano-docker/scripts/start-cardano-node
2021-02-13 10:19:38 -05:00

129 lines
5.0 KiB
Bash

#!/bin/bash
# Include functions
source /scripts/init_node_vars
source /scripts/functions/run_node
source /scripts/functions/get_public_ip
source /scripts/functions/init_config
function help {
echo "Arguments:"
echo "--start Start basic node."
echo "--staking Start as a staking node (Also requires the \`--start\` argument)"
echo "--create Start Stakepool creation. Initializes Stake Pool keys, addresses and certificates, and sends them to the blockchain, when starting as a stakepool, if it is not already initialized."
echo "--cold-create Initializes Stake Pool keys, addresses and certificates, and sign registration transactions. Registation transactions has to be sent using the \`--cold-register\` argument."
echo "--cold-register Submits the address and pool registration transactions to the blockchain created using the \`--cold-create\` argument."
echo "--cli Start command-line interface."
echo "--update Update the node software."
echo "--init_config Initialize config."
echo "--help Display this message."
echo "Environment variables:"
echo "NODE_PORT Port of node. Default: 3000."
echo "NODE_NAME Name of node. Default: node1."
echo "NODE_TOPOLOGY Topology of the node. Should be comma separated for each individual node to add, on the form: <ip>:<port>/<valency>. So for example: 127.0.0.1:3001/1,127.0.0.1:3002/1."
echo "NODE_RELAY Set to True if default IOHK relay should be added to the network topology. Default: False."
echo "METADATA_URL URL for file containing stake pool metadata information. See \`examples/metadata.json\` for examle. The file be uploaded to an URL accessible to public."
echo "PUBLIC_RELAY_PORT Public port of Relay node."
echo "PUBLIC_RELAY_IP Public IP address of Relay node."
echo " Values:"
echo " <Any IP address>"
echo " TOPOLOGY: Use first entry of the topology."
echo " PUBLIC: Use public IP of node."
echo " Default: TOPOLOGY."
echo "HOST_ADDR Set cardano-node host address. Defaults to public IP address."
echo "CARDANO_NETWORK Carano network to use (main, test, pioneer). Default: main."
echo "EKG_PORT Port of EKG monitoring. Default: 12788."
echo "PROMETHEUS_HOST Host of Prometheus monitoring. Default: 127.0.0.1."
echo "PROMETHEUS_PORT Port of Prometheus monitoring. Default: 12798."
echo "RESOLVE_HOSTNAMES Resolve topology hostnames to IP-addresses. Default: False."
echo "REPLACE_EXISTING_CONFIG Reset and replace existing configs. Default: False."
echo "POOL_PLEDGE Pledge (lovelace). Default: 100000000000"
echo "POOL_COST Operational costs per epoch (lovelace). Default: 10000000000"
echo "POOL_MARGIN Operator margin. Default: 0.05"
echo "AUTO_TOPOLOGY Automatically update topology.json. Default: True"
exit
}
for i in "$@"; do
case $i in
--help)
help
break
;;
--update)
/scripts/update-cardano-node
;;
--cli)
/bin/bash
break
;;
--init_config)
init_config
;;
--start)
START_NODE=1
;;
--staking)
STAKING=1
;;
--create)
CREATE=1
;;
--cold-create)
CREATE=1
COLD_CREATE=1
COLD="${COLD} --cold-create"
;;
--cold-register)
CREATE=1
COLD="${COLD} --cold-register"
;;
*)
break
;;
esac
done
if [ -z "$1" ]; then
help
fi
# Init config on first run
if [[ ! -f "${NODE_PATH}/VARS" || "$REPLACE_EXISTING_CONFIG" == "True" ]]; then
init_config
fi
# If not doing cold-create
if [ -z "${COLD_CREATE}" ]; then
# Handle IP addresses
export PUBLIC_IP=$(get_public_ip)
if [ -z "${HOST_ADDR}" ]; then
export HOST_ADDR=${PUBLIC_IP}
fi
fi
if [ -n "$CREATE" ]; then
create_stakepool ${COLD}
fi
if [ -n "$START_NODE" ]; then
if [ -n "$STAKING" ]; then
# Start as staking node
/scripts/start-stakenode
else
# Update topology
if [[ "${AUTO_TOPOLOGY}" == "True" ]]; then
tmux \
new-session "source /scripts/functions/run_node; run_node" \; \
split-window "source /scripts/functions/auto_topology_start; auto_topology_start" \; \
select-layout even-horizontal
else
run_node
fi
fi
fi