diff --git a/multinode-demo/setup-from-mainnet-beta.sh b/multinode-demo/setup-from-mainnet-beta.sh index 629fd07016..69c8a2e822 100755 --- a/multinode-demo/setup-from-mainnet-beta.sh +++ b/multinode-demo/setup-from-mainnet-beta.sh @@ -15,13 +15,13 @@ mkdir -p "$SOLANA_CONFIG_DIR"/latest-mainnet-beta-snapshot wget --trust-server-names http://api.mainnet-beta.solana.com/snapshot.tar.bz2 ) -snapshot=$(ls "$SOLANA_CONFIG_DIR"/latest-mainnet-beta-snapshot/snapshot-[0-9]*-*.tar.bz2) +snapshot=$(ls "$SOLANA_CONFIG_DIR"/latest-mainnet-beta-snapshot/snapshot-[0-9]*-*.tar.zst) if [[ -z $snapshot ]]; then echo Error: Unable to find latest snapshot exit 1 fi -if [[ ! $snapshot =~ snapshot-([0-9]*)-.*.tar.bz2 ]]; then +if [[ ! $snapshot =~ snapshot-([0-9]*)-.*.tar.zst ]]; then echo Error: Unable to determine snapshot slot for "$snapshot" exit 1 fi diff --git a/multinode-demo/setup-from-testnet.sh b/multinode-demo/setup-from-testnet.sh new file mode 100755 index 0000000000..d99c360ee1 --- /dev/null +++ b/multinode-demo/setup-from-testnet.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +here=$(dirname "$0") +# shellcheck source=multinode-demo/common.sh +source "$here"/common.sh + +set -e + +rm -rf "$SOLANA_CONFIG_DIR"/latest-testnet-snapshot +mkdir -p "$SOLANA_CONFIG_DIR"/latest-testnet-snapshot +( + cd "$SOLANA_CONFIG_DIR"/latest-testnet-snapshot || exit 1 + set -x + wget http://api.testnet.solana.com/genesis.tar.bz2 + wget --trust-server-names http://testnet.solana.com/snapshot.tar.bz2 +) + +snapshot=$(ls "$SOLANA_CONFIG_DIR"/latest-testnet-snapshot/snapshot-[0-9]*-*.tar.zst) +if [[ -z $snapshot ]]; then + echo Error: Unable to find latest snapshot + exit 1 +fi + +if [[ ! $snapshot =~ snapshot-([0-9]*)-.*.tar.zst ]]; then + echo Error: Unable to determine snapshot slot for "$snapshot" + exit 1 +fi + +snapshot_slot="${BASH_REMATCH[1]}" + +rm -rf "$SOLANA_CONFIG_DIR"/bootstrap-validator +mkdir -p "$SOLANA_CONFIG_DIR"/bootstrap-validator + + +# Create genesis ledger +if [[ -r $FAUCET_KEYPAIR ]]; then + cp -f "$FAUCET_KEYPAIR" "$SOLANA_CONFIG_DIR"/faucet.json +else + $solana_keygen new --no-passphrase -fso "$SOLANA_CONFIG_DIR"/faucet.json +fi + +if [[ -f $BOOTSTRAP_VALIDATOR_IDENTITY_KEYPAIR ]]; then + cp -f "$BOOTSTRAP_VALIDATOR_IDENTITY_KEYPAIR" "$SOLANA_CONFIG_DIR"/bootstrap-validator/identity.json +else + $solana_keygen new --no-passphrase -so "$SOLANA_CONFIG_DIR"/bootstrap-validator/identity.json +fi + +$solana_keygen new --no-passphrase -so "$SOLANA_CONFIG_DIR"/bootstrap-validator/vote-account.json +$solana_keygen new --no-passphrase -so "$SOLANA_CONFIG_DIR"/bootstrap-validator/stake-account.json + +$solana_ledger_tool create-snapshot \ + --ledger "$SOLANA_CONFIG_DIR"/latest-testnet-snapshot \ + --faucet-pubkey "$SOLANA_CONFIG_DIR"/faucet.json \ + --faucet-lamports 500000000000000000 \ + --bootstrap-validator "$SOLANA_CONFIG_DIR"/bootstrap-validator/identity.json \ + "$SOLANA_CONFIG_DIR"/bootstrap-validator/vote-account.json \ + "$SOLANA_CONFIG_DIR"/bootstrap-validator/stake-account.json \ + --hashes-per-tick sleep \ + "$snapshot_slot" "$SOLANA_CONFIG_DIR"/bootstrap-validator + +$solana_ledger_tool modify-genesis \ + --ledger "$SOLANA_CONFIG_DIR"/latest-testnet-snapshot \ + --hashes-per-tick sleep \ + "$SOLANA_CONFIG_DIR"/bootstrap-validator