|
|
@ -1,6 +1,6 @@ |
|
|
|
#!/usr/bin/env bash |
|
|
|
#!/usr/bin/env bash |
|
|
|
|
|
|
|
|
|
|
|
version="v1 20191105.1" |
|
|
|
version="v1 20191221.0" |
|
|
|
|
|
|
|
|
|
|
|
unset -v progname |
|
|
|
unset -v progname |
|
|
|
progname="${0##*/}" |
|
|
|
progname="${0##*/}" |
|
|
@ -94,7 +94,9 @@ function setup_env |
|
|
|
print_usage() { |
|
|
|
print_usage() { |
|
|
|
cat <<- ENDEND |
|
|
|
cat <<- ENDEND |
|
|
|
|
|
|
|
|
|
|
|
usage: ${progname} [-1ch] [-k KEYFILE] |
|
|
|
usage: ${progname} [options] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
options: |
|
|
|
-c back up database/logs and start clean |
|
|
|
-c back up database/logs and start clean |
|
|
|
(use only when directed by Harmony) |
|
|
|
(use only when directed by Harmony) |
|
|
|
-1 do not loop; run once and exit |
|
|
|
-1 do not loop; run once and exit |
|
|
@ -107,6 +109,7 @@ usage: ${progname} [-1ch] [-k KEYFILE] |
|
|
|
-D do not download Harmony binaries (default: download when start) |
|
|
|
-D do not download Harmony binaries (default: download when start) |
|
|
|
-m collect and upload node metrics to harmony prometheus + grafana |
|
|
|
-m collect and upload node metrics to harmony prometheus + grafana |
|
|
|
-N network join the given network (mainnet, testnet, devnet; default: mainnet) |
|
|
|
-N network join the given network (mainnet, testnet, devnet; default: mainnet) |
|
|
|
|
|
|
|
-n port specify the public base port of the node (default: 9000) |
|
|
|
-t equivalent to -N testnet (deprecated) |
|
|
|
-t equivalent to -N testnet (deprecated) |
|
|
|
-T nodetype specify the node type (validator, explorer; default: validator) |
|
|
|
-T nodetype specify the node type (validator, explorer; default: validator) |
|
|
|
-i shardid specify the shard id (valid only with explorer node; default: 1) |
|
|
|
-i shardid specify the shard id (valid only with explorer node; default: 1) |
|
|
@ -118,6 +121,7 @@ usage: ${progname} [-1ch] [-k KEYFILE] |
|
|
|
-V print out the version of the Harmony binary |
|
|
|
-V print out the version of the Harmony binary |
|
|
|
-z run in staking mode |
|
|
|
-z run in staking mode |
|
|
|
-y run in legacy, foundational-node mode (default) |
|
|
|
-y run in legacy, foundational-node mode (default) |
|
|
|
|
|
|
|
-M support multi-key mode (default: off) |
|
|
|
|
|
|
|
|
|
|
|
examples: |
|
|
|
examples: |
|
|
|
|
|
|
|
|
|
|
@ -137,6 +141,9 @@ examples: |
|
|
|
# upgrade harmony binaries from specified repo |
|
|
|
# upgrade harmony binaries from specified repo |
|
|
|
${progname} -1 -U upgrade |
|
|
|
${progname} -1 -U upgrade |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# start the node in a different port 9010 |
|
|
|
|
|
|
|
${progname} -n 9010 |
|
|
|
|
|
|
|
|
|
|
|
ENDEND |
|
|
|
ENDEND |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -151,24 +158,25 @@ BUCKET=pub.harmony.one |
|
|
|
OS=$(uname -s) |
|
|
|
OS=$(uname -s) |
|
|
|
|
|
|
|
|
|
|
|
unset start_clean loop run_as_root blspass do_not_download download_only metrics network node_type shard_id download_harmony_db db_file_to_dl |
|
|
|
unset start_clean loop run_as_root blspass do_not_download download_only metrics network node_type shard_id download_harmony_db db_file_to_dl |
|
|
|
unset upgrade_rel public_rpc staking_mode |
|
|
|
unset upgrade_rel public_rpc staking_mode pub_port multi_key |
|
|
|
start_clean=false |
|
|
|
start_clean=false |
|
|
|
loop=true |
|
|
|
loop=true |
|
|
|
run_as_root=true |
|
|
|
run_as_root=true |
|
|
|
do_not_download=false |
|
|
|
do_not_download=false |
|
|
|
download_only=false |
|
|
|
download_only=false |
|
|
|
metrics=false |
|
|
|
metrics=false |
|
|
|
network=main |
|
|
|
network=mainnet |
|
|
|
node_type=validator |
|
|
|
node_type=validator |
|
|
|
shard_id=1 |
|
|
|
shard_id=-1 |
|
|
|
download_harmony_db=false |
|
|
|
download_harmony_db=false |
|
|
|
public_rpc=false |
|
|
|
public_rpc=false |
|
|
|
staking_mode=false |
|
|
|
staking_mode=false |
|
|
|
|
|
|
|
multi_key=false |
|
|
|
${BLSKEYFILE=} |
|
|
|
${BLSKEYFILE=} |
|
|
|
|
|
|
|
|
|
|
|
unset OPTIND OPTARG opt |
|
|
|
unset OPTIND OPTARG opt |
|
|
|
OPTIND=1 |
|
|
|
OPTIND=1 |
|
|
|
while getopts :1chk:sSp:dDmN:tT:i:ba:U:PvVyz opt |
|
|
|
while getopts :1chk:sSp:dDmN:tT:i:ba:U:PvVyzn:M opt |
|
|
|
do |
|
|
|
do |
|
|
|
case "${opt}" in |
|
|
|
case "${opt}" in |
|
|
|
'?') usage "unrecognized option -${OPTARG}";; |
|
|
|
'?') usage "unrecognized option -${OPTARG}";; |
|
|
@ -183,8 +191,10 @@ do |
|
|
|
p) blspass="${OPTARG}";; |
|
|
|
p) blspass="${OPTARG}";; |
|
|
|
d) download_only=true;; |
|
|
|
d) download_only=true;; |
|
|
|
D) do_not_download=true;; |
|
|
|
D) do_not_download=true;; |
|
|
|
|
|
|
|
M) multi_key=true;; |
|
|
|
m) metrics=true;; |
|
|
|
m) metrics=true;; |
|
|
|
N) network="${OPTARG}";; |
|
|
|
N) network="${OPTARG}";; |
|
|
|
|
|
|
|
n) pub_port="${OPTARG}";; |
|
|
|
t) network=devnet;; |
|
|
|
t) network=devnet;; |
|
|
|
T) node_type="${OPTARG}";; |
|
|
|
T) node_type="${OPTARG}";; |
|
|
|
i) shard_id="${OPTARG}";; |
|
|
|
i) shard_id="${OPTARG}";; |
|
|
@ -431,35 +441,38 @@ if ${run_as_root}; then |
|
|
|
check_root |
|
|
|
check_root |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
# multi_key mode will use specified keys in .hmy/multikeys directory |
|
|
|
"") |
|
|
|
if ! ${multi_key}; then |
|
|
|
unset -v f |
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
for f in \ |
|
|
|
"") |
|
|
|
~/*--????-??-??T??-??-??.*Z--bls_???????????????????????????????????????????????????????????????????????????????????????????????? \ |
|
|
|
unset -v f |
|
|
|
~/????????????????????????????????????????????????????????????????????????????????????????????????.key \ |
|
|
|
for f in \ |
|
|
|
*--????-??-??T??-??-??.*Z--bls_???????????????????????????????????????????????????????????????????????????????????????????????? \ |
|
|
|
~/*--????-??-??T??-??-??.*Z--bls_???????????????????????????????????????????????????????????????????????????????????????????????? \ |
|
|
|
????????????????????????????????????????????????????????????????????????????????????????????????.key |
|
|
|
~/????????????????????????????????????????????????????????????????????????????????????????????????.key \ |
|
|
|
do |
|
|
|
*--????-??-??T??-??-??.*Z--bls_???????????????????????????????????????????????????????????????????????????????????????????????? \ |
|
|
|
[ -f "${f}" ] || continue |
|
|
|
????????????????????????????????????????????????????????????????????????????????????????????????.key |
|
|
|
|
|
|
|
do |
|
|
|
|
|
|
|
[ -f "${f}" ] || continue |
|
|
|
|
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
|
|
|
|
"") |
|
|
|
|
|
|
|
BLSKEYFILE="${f}" |
|
|
|
|
|
|
|
;; |
|
|
|
|
|
|
|
*) |
|
|
|
|
|
|
|
[ "${f}" -ef "${BLSKEYFILE}" ] || \ |
|
|
|
|
|
|
|
err 69 "multiple key files found (${f}, ${BLSKEYFILE}); please use -k to specify" |
|
|
|
|
|
|
|
;; |
|
|
|
|
|
|
|
esac |
|
|
|
|
|
|
|
done |
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
"") |
|
|
|
"") err 69 "could not autodetect BLS key file; please use -k to specify";; |
|
|
|
BLSKEYFILE="${f}" |
|
|
|
|
|
|
|
;; |
|
|
|
|
|
|
|
*) |
|
|
|
|
|
|
|
[ "${f}" -ef "${BLSKEYFILE}" ] || \ |
|
|
|
|
|
|
|
err 69 "multiple key files found (${f}, ${BLSKEYFILE}); please use -k to specify" |
|
|
|
|
|
|
|
;; |
|
|
|
|
|
|
|
esac |
|
|
|
esac |
|
|
|
done |
|
|
|
msg "autodetected BLS key file: ${BLSKEYFILE}" |
|
|
|
case "${BLSKEYFILE}" in |
|
|
|
;; |
|
|
|
"") err 69 "could not autodetect BLS key file; please use -k to specify";; |
|
|
|
*) |
|
|
|
|
|
|
|
msg "using manually specified BLS key file: ${BLSKEYFILE}" |
|
|
|
|
|
|
|
;; |
|
|
|
esac |
|
|
|
esac |
|
|
|
msg "autodetected BLS key file: ${BLSKEYFILE}" |
|
|
|
fi |
|
|
|
;; |
|
|
|
|
|
|
|
*) |
|
|
|
|
|
|
|
msg "using manually specified BLS key file: ${BLSKEYFILE}" |
|
|
|
|
|
|
|
;; |
|
|
|
|
|
|
|
esac |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
any_new_binaries() { |
|
|
|
any_new_binaries() { |
|
|
|
local outdir |
|
|
|
local outdir |
|
|
@ -483,7 +496,7 @@ else |
|
|
|
download_binaries . || err 69 "initial node software update failed" |
|
|
|
download_binaries . || err 69 "initial node software update failed" |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
NODE_PORT=9000 |
|
|
|
NODE_PORT=${pub_port:-9000} |
|
|
|
PUB_IP= |
|
|
|
PUB_IP= |
|
|
|
METRICS= |
|
|
|
METRICS= |
|
|
|
PUSHGATEWAY_IP= |
|
|
|
PUSHGATEWAY_IP= |
|
|
@ -642,10 +655,14 @@ do |
|
|
|
-ip "${PUB_IP}" |
|
|
|
-ip "${PUB_IP}" |
|
|
|
-port "${NODE_PORT}" |
|
|
|
-port "${NODE_PORT}" |
|
|
|
-is_genesis |
|
|
|
-is_genesis |
|
|
|
-blskey_file "${BLSKEYFILE}" |
|
|
|
|
|
|
|
-network_type="${network_type}" |
|
|
|
-network_type="${network_type}" |
|
|
|
-dns_zone="${dns_zone}" |
|
|
|
-dns_zone="${dns_zone}" |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
if ! ${multi_key}; then |
|
|
|
|
|
|
|
args+=( |
|
|
|
|
|
|
|
-blskey_file "${BLSKEYFILE}" |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
fi |
|
|
|
if ${public_rpc}; then |
|
|
|
if ${public_rpc}; then |
|
|
|
args+=( |
|
|
|
args+=( |
|
|
|
-public_rpc |
|
|
|
-public_rpc |
|
|
|