86 lines
2.3 KiB
Bash
Executable File
86 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# A thin wrapper around `solana-replicator` that automatically provisions the
|
|
# replicator's identity and/or storage keypair if not provided by the caller.
|
|
#
|
|
set -e
|
|
|
|
here=$(dirname "$0")
|
|
# shellcheck source=multinode-demo/common.sh
|
|
source "$here"/common.sh
|
|
|
|
entrypoint=127.0.0.0:8001
|
|
label=
|
|
|
|
while [[ -n $1 ]]; do
|
|
if [[ ${1:0:1} = - ]]; then
|
|
if [[ $1 = --entrypoint ]]; then
|
|
entrypoint=$2
|
|
args+=("$1" "$2")
|
|
shift 2
|
|
elif [[ $1 = --identity ]]; then
|
|
identity_keypair=$2
|
|
[[ -r $identity_keypair ]] || {
|
|
echo "$identity_keypair does not exist"
|
|
exit 1
|
|
}
|
|
args+=("$1" "$2")
|
|
shift 2
|
|
elif [[ $1 = --label ]]; then
|
|
label="-$2"
|
|
shift 2
|
|
elif [[ $1 = --ledger ]]; then
|
|
args+=("$1" "$2")
|
|
shift 2
|
|
elif [[ $1 = --storage-keypair ]]; then
|
|
storage_keypair=$2
|
|
[[ -r $storage_keypair ]] || {
|
|
echo "$storage_keypair does not exist"
|
|
exit 1
|
|
}
|
|
args+=("$1" "$2")
|
|
shift 2
|
|
else
|
|
echo "Unknown argument: $1"
|
|
$solana_replicator --help
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Unknown argument: $1"
|
|
$solana_replicator --help
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
: "${identity_keypair:="$SOLANA_ROOT"/farf/replicator-identity-keypair"$label".json}"
|
|
: "${storage_keypair:="$SOLANA_ROOT"/farf/replicator-storage-keypair"$label".json}"
|
|
ledger="$SOLANA_ROOT"/farf/replicator-ledger"$label"
|
|
|
|
rpc_url=$($solana_gossip get-rpc-url --entrypoint "$entrypoint")
|
|
|
|
if [[ ! -r $identity_keypair ]]; then
|
|
$solana_keygen new -o "$identity_keypair"
|
|
|
|
# TODO: https://github.com/solana-labs/solminer/blob/9cd2289/src/replicator.js#L17-L18
|
|
$solana_cli --keypair "$identity_keypair" --url "$rpc_url" \
|
|
airdrop 100000 lamports
|
|
fi
|
|
identity_pubkey=$($solana_keygen pubkey "$identity_keypair")
|
|
|
|
if [[ ! -r $storage_keypair ]]; then
|
|
$solana_keygen new -o "$storage_keypair"
|
|
storage_pubkey=$($solana_keygen pubkey "$storage_keypair")
|
|
|
|
$solana_cli --keypair "$identity_keypair" --url "$rpc_url" \
|
|
create-replicator-storage-account "$identity_pubkey" "$storage_pubkey"
|
|
fi
|
|
|
|
default_arg --entrypoint "$entrypoint"
|
|
default_arg --identity "$identity_keypair"
|
|
default_arg --storage-keypair "$storage_keypair"
|
|
default_arg --ledger "$ledger"
|
|
|
|
set -x
|
|
# shellcheck disable=SC2086 # Don't want to double quote $solana_replicator
|
|
exec $solana_replicator "${args[@]}"
|