69 lines
2.2 KiB
Bash
Executable File
69 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -ex
|
|
|
|
#shellcheck source=/dev/null
|
|
#. ~/service-env.sh
|
|
PATH=/home/sol/.local/share/solana/install/active_release/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
|
|
|
|
# Parameters from https://docs.solana.com/clusters#mainnet-beta
|
|
ENTRYPOINT=mainnet-beta.solana.com:8001
|
|
TRUSTED_VALIDATOR_PUBKEYS=(7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S)
|
|
EXPECTED_BANK_HASH=Fi4p8z3AkfsuGXZzQ4TD28N8QDNSWC7ccqAqTs2GPdPu
|
|
EXPECTED_GENESIS_HASH=5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
|
|
EXPECTED_SHRED_VERSION=13490
|
|
|
|
# Delete any zero-length snapshots that can cause validator startup to fail
|
|
find /data/sol/ledger/snapshot-* -size 0 -print -exec rm {} \; || true
|
|
|
|
|
|
identity_keypair=~/api-identity.json
|
|
|
|
if [[ -f $identity_keypair ]]; then
|
|
echo 'identity_keypair exists'
|
|
else
|
|
echo 'generating identity_keypair'
|
|
solana-keygen new -o $identity_keypair --no-passphrase
|
|
fi
|
|
|
|
identity_pubkey=$(solana-keygen pubkey $identity_keypair)
|
|
|
|
trusted_validators=()
|
|
for tv in "${TRUSTED_VALIDATOR_PUBKEYS[@]}"; do
|
|
[[ $tv = "$identity_pubkey" ]] || trusted_validators+=(--trusted-validator "$tv")
|
|
done
|
|
|
|
if [[ -n "$EXPECTED_BANK_HASH" ]]; then
|
|
maybe_expected_bank_hash="--expected-bank-hash $EXPECTED_BANK_HASH"
|
|
fi
|
|
|
|
args=(
|
|
--gossip-port 8001
|
|
--dynamic-port-range 8002-8012
|
|
--entrypoint "${ENTRYPOINT}"
|
|
--ledger /data/sol/ledger
|
|
--accounts /mnt/accounts
|
|
--identity "$identity_keypair"
|
|
--enable-rpc-transaction-history
|
|
--limit-ledger-size 50000000
|
|
--health-check-slot-distance 500
|
|
--cuda
|
|
--rpc-port 8899
|
|
--private-rpc
|
|
--expected-genesis-hash "$EXPECTED_GENESIS_HASH"
|
|
--expected-shred-version "$EXPECTED_SHRED_VERSION"
|
|
${maybe_expected_bank_hash}
|
|
"${trusted_validators[@]}"
|
|
--no-untrusted-rpc
|
|
--no-voting
|
|
--log -
|
|
--wal-recovery-mode skip_any_corrupted_record
|
|
)
|
|
|
|
# Note: can get into a bad state that requires actually fetching a new snapshot. One such error that indicates this:
|
|
# "...processing for bank 0 must succeed: FailedToLoadEntries(InvalidShredData(Custom(\"could not reconstruct entries\")))"
|
|
if [[ -d /data/sol/ledger ]]; then
|
|
args+=(--no-snapshot-fetch)
|
|
fi
|
|
|
|
exec solana-validator "${args[@]}"
|