solana/run.sh

121 lines
3.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
2019-02-16 09:48:51 -08:00
#
# Run a minimal Solana cluster. Ctrl-C to exit.
#
# Before running this script ensure standard Solana programs are available
# in the PATH, or that `cargo build` ran successfully
2019-02-16 09:48:51 -08:00
#
set -e
# Prefer possible `cargo build` binaries over PATH binaries
cd "$(dirname "$0")/"
profile=debug
if [[ -n $NDEBUG ]]; then
profile=release
fi
PATH=$PWD/target/$profile:$PATH
2019-02-16 09:48:51 -08:00
ok=true
for program in solana-{drone,genesis,keygen,validator}; do
2019-02-16 09:48:51 -08:00
$program -V || ok=false
done
$ok || {
echo
echo "Unable to locate required programs. Try building them first with:"
echo
echo " $ cargo build --all"
echo
2019-02-16 09:48:51 -08:00
exit 1
}
2019-02-21 15:16:09 -08:00
blockstreamSocket=/tmp/solana-blockstream.sock # Default to location used by the block explorer
2019-02-16 10:16:27 -08:00
while [[ -n $1 ]]; do
2019-02-21 15:16:09 -08:00
if [[ $1 = --blockstream ]]; then
blockstreamSocket=$2
2019-02-16 10:16:27 -08:00
shift 2
else
echo "Unknown argument: $1"
exit 1
fi
done
2018-10-14 11:48:10 -07:00
export RUST_LOG=${RUST_LOG:-solana=info} # if RUST_LOG is unset, default to info
export RUST_BACKTRACE=1
2019-07-30 22:43:47 -07:00
dataDir=$PWD/config/"$(basename "$0" .sh)"
ledgerDir=$PWD/config/ledger
2019-02-16 09:48:51 -08:00
set -x
leader_keypair="$dataDir/leader-keypair.json"
if [[ -e $leader_keypair ]]; then
echo "Use existing leader keypair"
else
solana-keygen new --no-passphrase -so "$leader_keypair"
fi
leader_vote_account_keypair="$dataDir/leader-vote-account-keypair.json"
if [[ -e $leader_vote_account_keypair ]]; then
echo "Use existing leader vote account keypair"
else
solana-keygen new --no-passphrase -so "$leader_vote_account_keypair"
fi
leader_stake_account_keypair="$dataDir/leader-stake-account-keypair.json"
if [[ -e $leader_stake_account_keypair ]]; then
echo "Use existing leader stake account keypair"
else
solana-keygen new --no-passphrase -so "$leader_stake_account_keypair"
fi
faucet_keypair="$dataDir"/faucet-keypair.json
if [[ -e $faucet_keypair ]]; then
echo "Use existing faucet keypair"
else
solana-keygen new --no-passphrase -fso "$faucet_keypair"
fi
leader_storage_account_keypair="$dataDir"/leader-storage-account-keypair.json
if [[ -e $leader_storage_account_keypair ]]; then
echo "Use existing leader storage account keypair"
else
solana-keygen new --no-passphrase -fso "$leader_storage_account_keypair"
fi
2018-12-07 16:04:34 -08:00
solana-genesis \
--hashes-per-tick sleep \
--faucet-pubkey "$dataDir"/faucet-keypair.json \
--faucet-lamports 500000000000000000 \
--bootstrap-leader-pubkey "$dataDir"/leader-keypair.json \
--bootstrap-vote-pubkey "$dataDir"/leader-vote-account-keypair.json \
--bootstrap-stake-pubkey "$dataDir"/leader-stake-account-keypair.json \
--bootstrap-storage-pubkey "$dataDir"/leader-storage-account-keypair.json \
--ledger "$ledgerDir" \
2019-11-15 20:16:42 -08:00
--operating-mode development
abort() {
set +e
kill "$drone" "$validator"
wait "$validator"
}
trap abort INT TERM EXIT
solana-drone --keypair "$dataDir"/faucet-keypair.json &
drone=$!
2018-12-07 16:04:34 -08:00
2019-02-16 10:16:27 -08:00
args=(
--identity-keypair "$dataDir"/leader-keypair.json
--storage-keypair "$dataDir"/leader-storage-account-keypair.json
--voting-keypair "$dataDir"/leader-vote-account-keypair.json
--ledger "$ledgerDir"
--gossip-port 8001
2019-02-16 10:16:27 -08:00
--rpc-port 8899
2019-03-06 09:26:12 -08:00
--rpc-drone-address 127.0.0.1:9900
--accounts "$dataDir"/accounts
--log -
--enable-rpc-exit
--init-complete-file "$dataDir"/init-completed
2019-02-16 10:16:27 -08:00
)
2019-02-21 15:16:09 -08:00
if [[ -n $blockstreamSocket ]]; then
args+=(--blockstream "$blockstreamSocket")
2019-02-16 10:16:27 -08:00
fi
solana-validator "${args[@]}" &
validator=$!
wait "$validator"