setup-from-mainnet-beta.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env bash
  2. here=$(dirname "$0")
  3. # shellcheck source=multinode-demo/common.sh
  4. source "$here"/common.sh
  5. set -e
  6. rm -rf "$SOLANA_CONFIG_DIR"/latest-mainnet-beta-snapshot
  7. mkdir -p "$SOLANA_CONFIG_DIR"/latest-mainnet-beta-snapshot
  8. (
  9. cd "$SOLANA_CONFIG_DIR"/latest-mainnet-beta-snapshot || exit 1
  10. set -x
  11. wget http://api.mainnet-beta.solana.com/genesis.tar.bz2
  12. wget --trust-server-names http://api.mainnet-beta.solana.com/snapshot.tar.bz2
  13. )
  14. snapshot=$(ls "$SOLANA_CONFIG_DIR"/latest-mainnet-beta-snapshot/snapshot-[0-9]*-*.tar.zst)
  15. if [[ -z $snapshot ]]; then
  16. echo Error: Unable to find latest snapshot
  17. exit 1
  18. fi
  19. if [[ ! $snapshot =~ snapshot-([0-9]*)-.*.tar.zst ]]; then
  20. echo Error: Unable to determine snapshot slot for "$snapshot"
  21. exit 1
  22. fi
  23. snapshot_slot="${BASH_REMATCH[1]}"
  24. rm -rf "$SOLANA_CONFIG_DIR"/bootstrap-validator
  25. mkdir -p "$SOLANA_CONFIG_DIR"/bootstrap-validator
  26. # Create genesis ledger
  27. if [[ -r $FAUCET_KEYPAIR ]]; then
  28. cp -f "$FAUCET_KEYPAIR" "$SOLANA_CONFIG_DIR"/faucet.json
  29. else
  30. $solana_keygen new --no-passphrase -fso "$SOLANA_CONFIG_DIR"/faucet.json
  31. fi
  32. if [[ -f $BOOTSTRAP_VALIDATOR_IDENTITY_KEYPAIR ]]; then
  33. cp -f "$BOOTSTRAP_VALIDATOR_IDENTITY_KEYPAIR" "$SOLANA_CONFIG_DIR"/bootstrap-validator/identity.json
  34. else
  35. $solana_keygen new --no-passphrase -so "$SOLANA_CONFIG_DIR"/bootstrap-validator/identity.json
  36. fi
  37. $solana_keygen new --no-passphrase -so "$SOLANA_CONFIG_DIR"/bootstrap-validator/vote-account.json
  38. $solana_keygen new --no-passphrase -so "$SOLANA_CONFIG_DIR"/bootstrap-validator/stake-account.json
  39. $solana_ledger_tool create-snapshot \
  40. --ledger "$SOLANA_CONFIG_DIR"/latest-mainnet-beta-snapshot \
  41. --faucet-pubkey "$SOLANA_CONFIG_DIR"/faucet.json \
  42. --faucet-lamports 500000000000000000 \
  43. --bootstrap-validator "$SOLANA_CONFIG_DIR"/bootstrap-validator/identity.json \
  44. "$SOLANA_CONFIG_DIR"/bootstrap-validator/vote-account.json \
  45. "$SOLANA_CONFIG_DIR"/bootstrap-validator/stake-account.json \
  46. --hashes-per-tick sleep \
  47. "$snapshot_slot" "$SOLANA_CONFIG_DIR"/bootstrap-validator
  48. $solana_ledger_tool modify-genesis \
  49. --ledger "$SOLANA_CONFIG_DIR"/latest-mainnet-beta-snapshot \
  50. --hashes-per-tick sleep \
  51. "$SOLANA_CONFIG_DIR"/bootstrap-validator