| 
									
										
										
										
											2018-11-11 08:19:04 -08:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | set -e | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-04 09:21:03 -07:00
										 |  |  | cd "$(dirname "$0")"/../.. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-05 16:40:08 -08:00
										 |  |  | set -x | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  | deployMethod="$1" | 
					
						
							|  |  |  | nodeType="$2" | 
					
						
							| 
									
										
										
										
											2019-05-03 11:01:35 -07:00
										 |  |  | entrypointIp="$3" | 
					
						
							|  |  |  | numNodes="$4" | 
					
						
							|  |  |  | RUST_LOG="$5" | 
					
						
							|  |  |  | skipSetup="$6" | 
					
						
							| 
									
										
										
										
											2019-05-15 15:16:45 -07:00
										 |  |  | failOnValidatorBootupFailure="$7" | 
					
						
							| 
									
										
										
										
											2019-06-10 19:42:49 -07:00
										 |  |  | externalPrimordialAccountsFile="$8" | 
					
						
							|  |  |  | stakeNodesInGenesisBlock="$9" | 
					
						
							|  |  |  | nodeIndex="${10}" | 
					
						
							| 
									
										
										
										
											2019-06-11 18:47:35 -07:00
										 |  |  | numBenchTpsClients="${11}" | 
					
						
							|  |  |  | benchTpsExtraArgs="${12}" | 
					
						
							|  |  |  | numBenchExchangeClients="${13}" | 
					
						
							|  |  |  | benchExchangeExtraArgs="${14}" | 
					
						
							|  |  |  | genesisOptions="${15}" | 
					
						
							| 
									
										
										
										
											2019-07-14 13:17:30 -06:00
										 |  |  | noSnapshot="${16}" | 
					
						
							| 
									
										
										
										
											2018-12-05 16:40:08 -08:00
										 |  |  | set +x | 
					
						
							| 
									
										
										
										
											2019-04-09 10:39:31 -07:00
										 |  |  | export RUST_LOG | 
					
						
							| 
									
										
										
										
											2018-09-04 09:21:03 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-04 14:51:52 -07:00
										 |  |  | # Use a very large stake (relative to the default multinode-demo/ stake of 42) | 
					
						
							| 
									
										
										
										
											2019-05-23 15:06:01 -07:00
										 |  |  | # for the testnet validators setup by net/.  This make it less likely that | 
					
						
							| 
									
										
										
										
											2019-04-16 13:03:01 -07:00
										 |  |  | # low-staked ephemeral validator a random user may attach to testnet will cause | 
					
						
							|  |  |  | # trouble | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Ref: https://github.com/solana-labs/solana/issues/3798 | 
					
						
							|  |  |  | stake=424243 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-07 08:46:20 -07:00
										 |  |  | missing() { | 
					
						
							|  |  |  |   echo "Error: $1 not specified" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [[ -n $deployMethod ]]  || missing deployMethod | 
					
						
							|  |  |  | [[ -n $nodeType ]]      || missing nodeType | 
					
						
							|  |  |  | [[ -n $entrypointIp ]]  || missing entrypointIp | 
					
						
							|  |  |  | [[ -n $numNodes ]]      || missing numNodes | 
					
						
							| 
									
										
										
										
											2018-12-09 17:28:18 -08:00
										 |  |  | [[ -n $skipSetup ]]     || missing skipSetup | 
					
						
							| 
									
										
										
										
											2019-04-29 21:38:03 -07:00
										 |  |  | [[ -n $failOnValidatorBootupFailure ]] || missing failOnValidatorBootupFailure | 
					
						
							| 
									
										
										
										
											2018-09-04 22:21:58 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-17 18:15:22 -07:00
										 |  |  | airdropsEnabled=true | 
					
						
							|  |  |  | if [[ -n $stakeNodesInGenesisBlock ]]; then | 
					
						
							|  |  |  |   airdropsEnabled=false | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2018-09-04 09:21:03 -07:00
										 |  |  | cat > deployConfig <<EOF | 
					
						
							|  |  |  | deployMethod="$deployMethod" | 
					
						
							| 
									
										
										
										
											2018-09-04 22:21:58 -07:00
										 |  |  | entrypointIp="$entrypointIp" | 
					
						
							| 
									
										
										
										
											2018-09-04 09:21:03 -07:00
										 |  |  | numNodes="$numNodes" | 
					
						
							| 
									
										
										
										
											2019-04-29 21:38:03 -07:00
										 |  |  | failOnValidatorBootupFailure=$failOnValidatorBootupFailure | 
					
						
							| 
									
										
										
										
											2019-05-18 14:01:36 -07:00
										 |  |  | genesisOptions="$genesisOptions" | 
					
						
							| 
									
										
										
										
											2019-06-17 18:15:22 -07:00
										 |  |  | airdropsEnabled=$airdropsEnabled | 
					
						
							| 
									
										
										
										
											2018-09-04 09:21:03 -07:00
										 |  |  | EOF | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  | 
 | 
					
						
							|  |  |  | source net/common.sh | 
					
						
							|  |  |  | loadConfigFile | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-13 19:37:36 -07:00
										 |  |  | initCompleteFile=init-complete-node.log | 
					
						
							|  |  |  | waitForNodeToInit() { | 
					
						
							|  |  |  |   echo "--- waiting for node to boot up" | 
					
						
							|  |  |  |   SECONDS= | 
					
						
							|  |  |  |   while [[ ! -r $initCompleteFile ]]; do | 
					
						
							|  |  |  |     if [[ $SECONDS -ge 720 ]]; then | 
					
						
							|  |  |  |       echo "^^^ +++" | 
					
						
							|  |  |  |       echo "Error: $initCompleteFile not found in $SECONDS seconds" | 
					
						
							|  |  |  |       exit 1 | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |     echo "Waiting for $initCompleteFile ($SECONDS)..." | 
					
						
							|  |  |  |     sleep 5 | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  |   echo "Node booted up" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  | case $deployMethod in | 
					
						
							| 
									
										
										
										
											2018-10-30 18:05:38 -07:00
										 |  |  | local|tar) | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  |   PATH="$HOME"/.cargo/bin:"$PATH" | 
					
						
							|  |  |  |   export USE_INSTALL=1 | 
					
						
							| 
									
										
										
										
											2018-12-10 22:59:38 -08:00
										 |  |  |   export SOLANA_METRICS_DISPLAY_HOSTNAME=1 | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-09 17:28:18 -08:00
										 |  |  |   # Setup `/var/snap/solana/current` symlink so rsyncing the genesis | 
					
						
							| 
									
										
										
										
											2018-12-07 12:33:58 -08:00
										 |  |  |   # ledger works (reference: `net/scripts/install-rsync.sh`) | 
					
						
							| 
									
										
										
										
											2018-12-09 17:28:18 -08:00
										 |  |  |   sudo rm -rf /var/snap/solana/current | 
					
						
							|  |  |  |   sudo mkdir -p /var/snap/solana | 
					
						
							|  |  |  |   sudo ln -sT /home/solana/solana /var/snap/solana/current | 
					
						
							| 
									
										
										
										
											2018-12-07 12:33:58 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  |   ./fetch-perf-libs.sh | 
					
						
							| 
									
										
										
										
											2018-11-12 17:50:16 -08:00
										 |  |  |   # shellcheck source=/dev/null | 
					
						
							|  |  |  |   source ./target/perf-libs/env.sh | 
					
						
							| 
									
										
										
										
											2019-06-05 09:10:23 -07:00
										 |  |  |   SUDO_OK=1 source scripts/tune-system.sh | 
					
						
							| 
									
										
										
										
											2018-09-04 23:15:39 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-23 22:12:58 -08:00
										 |  |  |   ( | 
					
						
							| 
									
										
										
										
											2019-07-10 20:11:55 -07:00
										 |  |  |     sudo SOLANA_METRICS_CONFIG="$SOLANA_METRICS_CONFIG" scripts/oom-monitor.sh | 
					
						
							| 
									
										
										
										
											2018-12-23 22:12:58 -08:00
										 |  |  |   ) > oom-monitor.log 2>&1 & | 
					
						
							| 
									
										
										
										
											2019-01-09 11:17:34 -07:00
										 |  |  |   echo $! > oom-monitor.pid | 
					
						
							| 
									
										
										
										
											2018-09-10 15:52:08 -07:00
										 |  |  |   scripts/net-stats.sh  > net-stats.log 2>&1 & | 
					
						
							| 
									
										
										
										
											2019-01-09 11:17:34 -07:00
										 |  |  |   echo $! > net-stats.pid | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  | 
 | 
					
						
							|  |  |  |   case $nodeType in | 
					
						
							| 
									
										
										
										
											2018-12-07 15:59:25 -08:00
										 |  |  |   bootstrap-leader) | 
					
						
							| 
									
										
										
										
											2019-05-23 15:06:01 -07:00
										 |  |  |     if [[ -e /dev/nvidia0 && -x ~/.cargo/bin/solana-validator-cuda ]]; then | 
					
						
							|  |  |  |       echo Selecting solana-validator-cuda | 
					
						
							| 
									
										
										
										
											2018-11-07 10:56:40 -08:00
										 |  |  |       export SOLANA_CUDA=1 | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2019-01-09 10:50:43 -07:00
										 |  |  |     set -x | 
					
						
							| 
									
										
										
										
											2019-06-10 19:42:49 -07:00
										 |  |  |     rm -rf ./solana-node-keys | 
					
						
							|  |  |  |     rm -rf ./solana-node-stakes | 
					
						
							|  |  |  |     mkdir ./solana-node-stakes | 
					
						
							|  |  |  |     if [[ -n $stakeNodesInGenesisBlock ]]; then | 
					
						
							|  |  |  |       for i in $(seq 0 "$numNodes"); do | 
					
						
							|  |  |  |         solana-keygen new -o ./solana-node-keys/"$i" | 
					
						
							|  |  |  |         pubkey="$(solana-keygen pubkey ./solana-node-keys/"$i")" | 
					
						
							|  |  |  |         echo "${pubkey}: $stakeNodesInGenesisBlock" >> ./solana-node-stakes/fullnode-stakes.yml | 
					
						
							|  |  |  |       done | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2019-06-18 14:44:53 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     lamports_per_signature="42" | 
					
						
							|  |  |  |     # shellcheck disable=SC2206 # Do not want to quote $genesisOptions | 
					
						
							|  |  |  |     genesis_args=($genesisOptions) | 
					
						
							|  |  |  |     for i in "${!genesis_args[@]}"; do | 
					
						
							|  |  |  |       if [[ "${genesis_args[$i]}" = --target-lamports-per-signature ]]; then | 
					
						
							|  |  |  |         lamports_per_signature="${genesis_args[$((i+1))]}" | 
					
						
							|  |  |  |         break | 
					
						
							|  |  |  |       fi | 
					
						
							|  |  |  |     done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-11 18:47:35 -07:00
										 |  |  |     rm -rf ./solana-client-accounts | 
					
						
							|  |  |  |     mkdir ./solana-client-accounts | 
					
						
							|  |  |  |     for i in $(seq 0 $((numBenchTpsClients-1))); do | 
					
						
							|  |  |  |       # shellcheck disable=SC2086 # Do not want to quote $benchTpsExtraArgs | 
					
						
							| 
									
										
										
										
											2019-06-18 14:44:53 -07:00
										 |  |  |       solana-bench-tps --write-client-keys ./solana-client-accounts/bench-tps"$i".yml \
 | 
					
						
							|  |  |  |         --target-lamports-per-signature "$lamports_per_signature" $benchTpsExtraArgs | 
					
						
							| 
									
										
										
										
											2019-06-11 18:47:35 -07:00
										 |  |  |       # Skip first line, as it contains header | 
					
						
							|  |  |  |       tail -n +2 -q ./solana-client-accounts/bench-tps"$i".yml >> ./solana-client-accounts/client-accounts.yml | 
					
						
							|  |  |  |       echo "" >> ./solana-client-accounts/client-accounts.yml | 
					
						
							|  |  |  |     done | 
					
						
							| 
									
										
										
										
											2019-06-13 11:51:35 -07:00
										 |  |  |     for i in $(seq 0 $((numBenchExchangeClients-1))); do | 
					
						
							| 
									
										
										
										
											2019-06-11 18:47:35 -07:00
										 |  |  |       # shellcheck disable=SC2086 # Do not want to quote $benchExchangeExtraArgs | 
					
						
							| 
									
										
										
										
											2019-06-13 11:51:35 -07:00
										 |  |  |       solana-bench-exchange --batch-size 1000 --fund-amount 20000 \
 | 
					
						
							|  |  |  |         --write-client-keys ./solana-client-accounts/bench-exchange"$i".yml $benchExchangeExtraArgs | 
					
						
							|  |  |  |       tail -n +2 -q ./solana-client-accounts/bench-exchange"$i".yml >> ./solana-client-accounts/client-accounts.yml | 
					
						
							|  |  |  |       echo "" >> ./solana-client-accounts/client-accounts.yml | 
					
						
							| 
									
										
										
										
											2019-06-11 18:47:35 -07:00
										 |  |  |     done | 
					
						
							| 
									
										
										
										
											2019-06-10 19:42:49 -07:00
										 |  |  |     [[ -z $externalPrimordialAccountsFile ]] || cat "$externalPrimordialAccountsFile" >> ./solana-node-stakes/fullnode-stakes.yml | 
					
						
							|  |  |  |     if [ -f ./solana-node-stakes/fullnode-stakes.yml ]; then | 
					
						
							| 
									
										
										
										
											2019-06-13 11:51:35 -07:00
										 |  |  |       genesisOptions+=" --primordial-accounts-file ./solana-node-stakes/fullnode-stakes.yml" | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |     if [ -f ./solana-client-accounts/client-accounts.yml ]; then | 
					
						
							|  |  |  |       genesisOptions+=" --primordial-keypairs-file ./solana-client-accounts/client-accounts.yml" | 
					
						
							| 
									
										
										
										
											2019-06-10 19:42:49 -07:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2018-12-09 17:28:18 -08:00
										 |  |  |     if [[ $skipSetup != true ]]; then | 
					
						
							| 
									
										
										
										
											2019-05-31 19:58:52 -07:00
										 |  |  |       args=( | 
					
						
							|  |  |  |         --bootstrap-leader-stake-lamports "$stake" | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2019-05-18 14:01:36 -07:00
										 |  |  |       # shellcheck disable=SC2206 # Do not want to quote $genesisOptions | 
					
						
							|  |  |  |       args+=($genesisOptions) | 
					
						
							|  |  |  |       ./multinode-demo/setup.sh "${args[@]}" | 
					
						
							| 
									
										
										
										
											2018-12-09 17:28:18 -08:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2019-06-17 18:15:22 -07:00
										 |  |  |     if [[ -z $stakeNodesInGenesisBlock ]]; then | 
					
						
							|  |  |  |       ./multinode-demo/drone.sh > drone.log 2>&1 & | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2019-05-03 11:01:35 -07:00
										 |  |  |     args=( | 
					
						
							|  |  |  |       --enable-rpc-exit | 
					
						
							|  |  |  |       --gossip-port "$entrypointIp":8001 | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2019-03-04 14:27:06 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-10 19:42:49 -07:00
										 |  |  |     if [[ -n $stakeNodesInGenesisBlock ]]; then | 
					
						
							|  |  |  |       args+=(--no-airdrop) | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2019-06-13 19:37:36 -07:00
										 |  |  |     args+=(--init-complete-file "$initCompleteFile") | 
					
						
							| 
									
										
										
										
											2019-07-14 13:17:30 -06:00
										 |  |  |     args+=("$noSnapshot") | 
					
						
							| 
									
										
										
										
											2019-05-27 08:47:11 -07:00
										 |  |  |     nohup ./multinode-demo/validator.sh --bootstrap-leader "${args[@]}" > fullnode.log 2>&1 & | 
					
						
							| 
									
										
										
										
											2019-06-13 19:37:36 -07:00
										 |  |  |     waitForNodeToInit | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2019-05-23 15:06:01 -07:00
										 |  |  |   validator|blockstreamer) | 
					
						
							| 
									
										
										
										
											2018-12-05 16:40:08 -08:00
										 |  |  |     net/scripts/rsync-retry.sh -vPrc "$entrypointIp":~/.cargo/bin/ ~/.cargo/bin/ | 
					
						
							| 
									
										
										
										
											2019-06-10 19:42:49 -07:00
										 |  |  |     rm -f ~/solana/fullnode-identity.json | 
					
						
							|  |  |  |     [[ -z $stakeNodesInGenesisBlock ]] || net/scripts/rsync-retry.sh -vPrc \
 | 
					
						
							|  |  |  |     "$entrypointIp":~/solana/solana-node-keys/"$nodeIndex" ~/solana/fullnode-identity.json | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-23 15:06:01 -07:00
										 |  |  |     if [[ -e /dev/nvidia0 && -x ~/.cargo/bin/solana-validator-cuda ]]; then | 
					
						
							|  |  |  |       echo Selecting solana-validator-cuda | 
					
						
							| 
									
										
										
										
											2018-11-07 10:56:40 -08:00
										 |  |  |       export SOLANA_CUDA=1 | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-04 08:22:36 -07:00
										 |  |  |     args=( | 
					
						
							|  |  |  |       "$entrypointIp":~/solana "$entrypointIp:8001" | 
					
						
							|  |  |  |       --gossip-port 8001 | 
					
						
							|  |  |  |       --rpc-port 8899 | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2019-02-21 16:35:26 -07:00
										 |  |  |     if [[ $nodeType = blockstreamer ]]; then | 
					
						
							| 
									
										
										
										
											2019-02-17 12:29:53 -08:00
										 |  |  |       args+=( | 
					
						
							| 
									
										
										
										
											2019-02-21 16:16:09 -07:00
										 |  |  |         --blockstream /tmp/solana-blockstream.sock | 
					
						
							| 
									
										
										
										
											2019-03-13 13:50:30 -07:00
										 |  |  |         --no-voting | 
					
						
							| 
									
										
										
										
											2019-04-16 13:03:01 -07:00
										 |  |  |         --stake 0 | 
					
						
							| 
									
										
										
										
											2019-06-18 13:07:59 -07:00
										 |  |  |         --generate-snapshots | 
					
						
							| 
									
										
										
										
											2019-02-17 12:29:53 -08:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2019-04-16 13:03:01 -07:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2019-05-15 15:16:45 -07:00
										 |  |  |       args+=(--stake "$stake") | 
					
						
							| 
									
										
										
										
											2019-04-25 09:30:59 -07:00
										 |  |  |       args+=(--enable-rpc-exit) | 
					
						
							| 
									
										
										
										
											2019-02-17 09:48:27 -08:00
										 |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-10 19:42:49 -07:00
										 |  |  |     if [[ -f ~/solana/fullnode-identity.json ]]; then | 
					
						
							|  |  |  |       args+=(--identity ~/solana/fullnode-identity.json) | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if [[ -n $stakeNodesInGenesisBlock ]]; then | 
					
						
							|  |  |  |       args+=(--no-airdrop) | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-09 10:50:43 -07:00
										 |  |  |     set -x | 
					
						
							| 
									
										
										
										
											2018-12-09 17:28:18 -08:00
										 |  |  |     if [[ $skipSetup != true ]]; then | 
					
						
							| 
									
										
										
										
											2019-05-23 15:06:01 -07:00
										 |  |  |       ./multinode-demo/clear-config.sh | 
					
						
							| 
									
										
										
										
											2018-12-09 17:28:18 -08:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2019-02-17 09:48:27 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-21 16:35:26 -07:00
										 |  |  |     if [[ $nodeType = blockstreamer ]]; then | 
					
						
							| 
									
										
										
										
											2019-05-09 07:27:13 -07:00
										 |  |  |       # Sneak the mint-keypair.json from the bootstrap leader and run another drone | 
					
						
							| 
									
										
										
										
											2019-03-21 21:09:03 -07:00
										 |  |  |       # with it on the blockstreamer node.  Typically the blockstreamer node has | 
					
						
							|  |  |  |       # a static IP/DNS name for hosting the blockexplorer web app, and is | 
					
						
							|  |  |  |       # a location that somebody would expect to be able to airdrop from | 
					
						
							| 
									
										
										
										
											2019-05-09 07:27:13 -07:00
										 |  |  |       scp "$entrypointIp":~/solana/config-local/mint-keypair.json config-local/ | 
					
						
							| 
									
										
										
										
											2019-06-17 18:15:22 -07:00
										 |  |  |       if [[ -z $stakeNodesInGenesisBlock ]]; then | 
					
						
							|  |  |  |         ./multinode-demo/drone.sh > drone.log 2>&1 & | 
					
						
							|  |  |  |       fi | 
					
						
							| 
									
										
										
										
											2019-07-09 15:45:46 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |       # Grab the TLS cert generated by /certbot-restore.sh | 
					
						
							|  |  |  |       if [[ -f /.cert.pem ]]; then | 
					
						
							|  |  |  |         sudo install -o $UID -m 400 /.cert.pem /.key.pem . | 
					
						
							|  |  |  |         ls -l .cert.pem .key.pem | 
					
						
							|  |  |  |       fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-28 19:50:02 -07:00
										 |  |  |       export BLOCKEXPLORER_GEOIP_WHITELIST=$PWD/net/config/geoip.yml | 
					
						
							| 
									
										
										
										
											2019-02-18 16:48:32 -08:00
										 |  |  |       npm install @solana/blockexplorer@1 | 
					
						
							| 
									
										
										
										
											2019-02-17 12:29:53 -08:00
										 |  |  |       npx solana-blockexplorer > blockexplorer.log 2>&1 & | 
					
						
							| 
									
										
										
										
											2019-03-13 09:57:35 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |       # Confirm the blockexplorer is accessible | 
					
						
							|  |  |  |       curl --head --retry 3 --retry-connrefused http://localhost:5000/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # Redirect port 80 to port 5000 | 
					
						
							|  |  |  |       sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT | 
					
						
							|  |  |  |       sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT | 
					
						
							|  |  |  |       sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 5000 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # Confirm the blockexplorer is now globally accessible | 
					
						
							|  |  |  |       curl --head "$(curl ifconfig.io)" | 
					
						
							| 
									
										
										
										
											2019-02-17 12:29:53 -08:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2019-04-22 14:51:20 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-13 19:37:36 -07:00
										 |  |  |     args+=(--init-complete-file "$initCompleteFile") | 
					
						
							| 
									
										
										
										
											2019-07-14 13:17:30 -06:00
										 |  |  |     args+=("$noSnapshot") | 
					
						
							| 
									
										
										
										
											2019-05-27 08:47:11 -07:00
										 |  |  |     nohup ./multinode-demo/validator.sh "${args[@]}" > fullnode.log 2>&1 & | 
					
						
							| 
									
										
										
										
											2019-06-13 19:37:36 -07:00
										 |  |  |     waitForNodeToInit | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2019-05-31 15:27:31 -07:00
										 |  |  |   replicator) | 
					
						
							| 
									
										
										
										
											2019-05-31 22:33:55 -07:00
										 |  |  |     net/scripts/rsync-retry.sh -vPrc "$entrypointIp":~/.cargo/bin/ ~/.cargo/bin/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-31 15:27:31 -07:00
										 |  |  |     args=( | 
					
						
							|  |  |  |       "$entrypointIp":~/solana "$entrypointIp:8001" | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2019-06-10 19:42:49 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if [[ -n $stakeNodesInGenesisBlock ]]; then | 
					
						
							|  |  |  |       args+=(--no-airdrop) | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-31 15:27:31 -07:00
										 |  |  |     if [[ $skipSetup != true ]]; then | 
					
						
							|  |  |  |       ./multinode-demo/clear-config.sh | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2019-07-14 13:17:30 -06:00
										 |  |  |     args+=("$noSnapshot") | 
					
						
							| 
									
										
										
										
											2019-05-31 15:27:31 -07:00
										 |  |  |     nohup ./multinode-demo/replicator.sh "${args[@]}" > fullnode.log 2>&1 & | 
					
						
							|  |  |  |     sleep 1 | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  |   *) | 
					
						
							|  |  |  |     echo "Error: unknown node type: $nodeType" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   esac | 
					
						
							| 
									
										
										
										
											2019-01-16 19:18:32 -08:00
										 |  |  |   disown | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  |   ;; | 
					
						
							|  |  |  | *) | 
					
						
							|  |  |  |   echo "Unknown deployment method: $deployMethod" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | esac |