Solana Mainnet Validator - Quickstart

Введение

Чтобы развернуть Solana mainnet validator, вы будете использовать CLI-инструмент SLV. Это краткое руководство объясняет, как запустить и развернуть hot spare для mainnet validator.
На вашем сервере должна быть выполнена чистая установка Ubuntu 24.04 LTS.

Подготовка Baremetal Server

Хотя запуск Solana node на VPS или виртуальных машинах (VM) возможен, добиться оптимальной производительности и стабильной работы сложно. Solana официально рекомендует использовать baremetal server.
Mainnet validators должны быть подготовлены так, чтобы сохранять стабильность во время перегрузок.
Ниже приведен ориентир, основанный на официальной документации Solana / Agave / Firedancer.

Agave Validator (официальные требования и рекомендации)

Требования по SOL
  • строгого минимального требования по SOL нет
  • Vote Account требует 0.02685864 SOL, чтобы быть rent-exempt
  • голосующие транзакции могут стоить до ~1.1 SOL / day
Требования к оборудованию (ориентир)
ComponentValidatorRPC Node (reference)
CPU2.8GHz+ / AMD Gen3+ / Intel Ice Lake+ / SHA extensions / AVX216 cores / 32 threads+
RAM256GB+512GB+
DiskNVMe Gen3 x4 или лучше / рекомендуется разделение Accounts-Ledger-SnapshotsРекомендуется больший объем
GPUНе требуетсяНе требуется
Note:
Clock speed и эффективная пропускная способность считаются более важными, чем количество ядер.

Firedancer (Frankendancer)

Firedancer (Frankendancer) в настоящее время зависит от Agave,
поэтому как минимум предполагает рекомендованную конфигурацию Agave или выше.
Минимум
  • 24-core CPU @ >2.8GHz
  • 256GB RAM
  • 2TB NVMe (High TBW)
Рекомендуется
  • 32-core CPU @ >3GHz (поддержка AVX512)
  • 512GB RAM (ECC)
  • разделение Accounts / Ledger
  • пропускная способность сети 1Gbps или выше
Для сбалансированной конфигурации по соотношению стоимости и производительности практичным ориентиром является Agave с 24-core CPU и 384GB RAM.
Когда вы запускаете команду slv v init, система спросит, настроен ли ваш baremetal server:
bash
 slv v init
? Select Solana Network (testnet) › mainnet
? 🛡️ Do you have a Solana Node Compatible Server? (no)
 yes
  no
Это руководство предполагает, что вы выбираете yes.
Если вы еще не подготовили baremetal server, обратитесь к руководству по настройке Baremetal Server.
Также могут быть полезны следующие ресурсы:

Развертывание Solana Mainnet Firedancer Jito Validator

В новых развертываниях SLV всегда используется unstaked-keypair.json в качестве identity key. Это best practice для предотвращения double voting и других проблем.
Поэтому после развертывания используйте slv v set:identity, чтобы задать authorized identity key.
В большинстве сценариев эксплуатации mainnet validator вы будете использовать slv v switch для смены identity key. Для миграции без простоя см. это руководство.

Выберите сеть Solana

Выберите сеть Solana, которую хотите развернуть.
bash
slv v init
? Select Solana Network (mainnet)
  testnet
 mainnet

Введите стандартное имя пользователя сервера

В большинстве случаев стандартное имя пользователя — ubuntu или root.
bash
? What's the user for the server? (ubuntu) › ubuntu

Введите IP-адрес сервера

Введите IP-адрес сервера.
bash
? What's the IP address of the server? ›

Укажите RSA Key для SSH

※ Укажите путь к вашему RSA key. Путь по умолчанию — ~/.ssh/id_rsa.
bash
? What's the path to your RSA key? (~/.ssh/id_rsa) › ~/.ssh/id_rsa
🔍 Checking SSH connection...
✔︎ SSH connection succeeded
Затем SLV проверит подключение к серверу. Если подключение успешно, будет предложен следующий шаг.

Выберите тип Solana Validator

Выберите тип Solana validator.
bash
? Select Validator Type (firedancer-jito)
  agave
  jito
  jito-bam
  firedancer-agave
 firedancer-jito

Установите ставку комиссии

Задайте ставку комиссии для вашего validator. ※ 1000 соответствует 10%.
bash
? Enter Commission BPS (Max 1000 = 10%) (1000)

Сгенерируйте или задайте Solana Validator Identity Key

Вы можете сгенерировать новый identity key или задать существующий identity key. В этом примере показано, как задать существующий identity key с именем "epics-sub".
bash
? Do you want to create a new identity key now? (Y/n) › No
? Please Enter Your Identity Public Key › KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM
? Enter Inventory Name (KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM) › epics-sub
⚠️ Please place your identity key in

  ~/.slv/keys/KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM.json
.
.
✔︎ Success
 Inventory updated to ~/.slv/inventory.yml
 Successfully created solv user on x.x.x.x
Поместите ваш identity key в ~/.slv/keys/<your-pubkey>.json.

Автоматическое определение региона

Затем система выполнит ping до каждого block engine с настроенного узла, чтобы автоматически определить ближайший регион. Измеряя фактические значения ping, вы сможете выбрать оптимальный регион.
bash
 Inventory updated to ~/.slv/inventory.mainnet.validators.yml

📍 Measuring latencies from x.x.x.x to mainnet regions...
  Pinging Amsterdam (amsterdam.mainnet.block-engine.jito.wtf)...
  Pinging Dublin (dublin.mainnet.block-engine.jito.wtf)...
  Pinging Frankfurt (frankfurt.mainnet.block-engine.jito.wtf)...
  Pinging London (london.mainnet.block-engine.jito.wtf)...
  Pinging New York (ny.mainnet.block-engine.jito.wtf)...
  Pinging Salt Lake City (slc.mainnet.block-engine.jito.wtf)...
  Pinging Singapore (singapore.mainnet.block-engine.jito.wtf)...
  Pinging Tokyo (tokyo.mainnet.block-engine.jito.wtf)...
 London: 8.801 ms
 Dublin: 12.946 ms
 Frankfurt: 5.888 ms
 Amsterdam: 0.169 ms
 New York: 74.321 ms
 Salt Lake City: 115.577 ms
 Singapore: 154.200 ms
 Tokyo: 229.989 ms

🎯 Nearest region: 🇳🇱 Amsterdam
   Latency: 0.169 ms
   Block Engine: https://amsterdam.mainnet.block-engine.jito.wtf
   Shred Receiver: 74.118.140.240:1002
   Relayer: http://amsterdam.mainnet.relayer.jito.wtf:8100
   NTP Server: ntp.amsterdam.jito.wtf

Сгенерируйте или задайте Solana Validator Vote Account Key

Вы можете сгенерировать новый vote account key или задать существующий vote account key. В этом примере показано, как задать существующий vote account key.
bash
? Do you want to create a new vote account key now? (Y/n) › No
? Please Enter Your Vote Account Public Key > <your-vote-account>
Информация об узле validator будет сохранена в ~/.slv/inventory.mainnet.validators.yml.
bash
✔︎ Success
 Inventory updated to ~/.slv/inventory.mainnet.validators.yml
 Successfully created solv user on epics-sub
✔︎ Validator Mainnet Config Saved To ~/.slv/inventory.mainnet.validators.yml
Now you can deploy with:

$ slv v deploy -n mainnet -p epics-sub

Разверните validator

После подтверждения конфигурации начнется развертывание.
bash
slv v deploy -n mainnet -p epics-sub
bash
Your Mainnet Validators Settings:
┌────────────────┬──────────────────────────────────────────────┐
 Identity Key KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM
├────────────────┼──────────────────────────────────────────────┤
 Vote Key EpicsoqLdDP8qRn3wQRKTSKAXbjK9dUgFfNPRQS77MQD
├────────────────┼──────────────────────────────────────────────┤
 Authority Key authAccount
├────────────────┼──────────────────────────────────────────────┤
 IP x.x.x.x
├────────────────┼──────────────────────────────────────────────┤
 Validator Type firedancer-jito
├────────────────┼──────────────────────────────────────────────┤
 Version 0.712.30006
└────────────────┴──────────────────────────────────────────────┘
? Do you want to continue? (Y/n) › Yes
.
.
.
Successfully Deployed RPC on mainnet
⚡️⚡️⚡️ Enhanced Solana RPC Connection API Key ⚡️⚡️⚡️

We're excited to offer a free API key exclusively for the Validators DAO community 🎉
It's our way of supporting the community and empowering you with fast, reliable connections.

To get your Free API key, simply join us through the link below:

Validators DAO: `https://discord.gg/X4BgkBHavp`

Unlock fast connections and elevate your experience with your very own API key 🚀

You can monitor your Node with the following steps:

Log in to your server with SSH:
ssh [email protected]

Then, run the following command to monitor your node:
$ solv m
Готово. Ваш Solana Validator развернут. Понадобится некоторое время, чтобы синхронизироваться с сетью Solana.

Отладка и мониторинг

После развертывания вы можете выполнять отладку и мониторинг внутри Solana RPC node. Состояние Solana RPC node можно проверить следующими командами:
bash
$ solv m
solv — это alias для agave-validator -l /mnt/ledger. Эта настройка добавляется в ~/.profile во время развертывания RPC node.

Смена Identity Key

После развертывания вам нужно заменить unstaked key на authorized identity key.
bash
slv v set:identity -n mainnet --pubkey epics-sub
Эта команда сменит identity key на authorized identity key.
※ Для миграции без простоя см. это руководство.

Команды SLV Validator

bash
slv validator --help
Usage:   slv validator
Version: 0.9.700

Description:

  🛠️ Manage Solana Validator Nodes 🛠️

Options:

  -h, --help  - Show this help.

Commands:

  init               - 🚀 Initialize a new validator configuration
  deploy             - 📦 Deploy Validators
  list               - 📋 List validators
  set:identity       - 🪪  Set Validator Identity
  set:unstaked       - 📴 Set Validator Identity to Unstaked Key
  setup:firedancer   - 🔥 Setup/Update Firedancer Validator
  update:firedancer  - 🔄 Update Firedancer Version
  build:solana-cli   - 🛠️ Build Solana CLI from Source
  install:solana     - ➡️ Install Solana CLI Binary
  update:script      - ⚙️  Update Validator Startup Config
  update:jinja       - 🧩 Update Jinja Template
  start              - 🟢 Start Validator
  stop               - 🔴 Stop Validator
  restart            - ♻️  Restart Validator
  cleanup            - 🧹 Cleanup Validator - Remove Ledger/Snapshot Unnecessary Files
  get:snapshot       - 💾 Download Snapshot with aria2c
  gen:vote-account   - 🗳️  Generate Vote Account
  switch             - 🔁 Switch Validator Identity - No DownTime Migration