Полезное для валидаторов Solana

ПОЛЕЗНЫЕ ССЫЛКИ

Official FAQ - официальная инструкция по установке, настройке и т.д.

Видео от @diman_io - серия видео где также есть ответы на большинство частых вопросов, новичкам рекомендован к просмотру весь плейлист

Видео от @Abezyan - серия видео по тонкой настройке железа и софта, особенно актуально на сегодня видео по селф-стейку

Ресурс от @XuengChang с полезными тулзами, в том числе мониторинг очереди в тестнет

Группа в Телеграм для новичков

Группа в Телеграм для опытных и тех, кто стремится таковыми стать ;)

ЖЕЛЕЗО

Посмотреть загрузку каждого ядра процессора

watch -n 1 "grep 'cpu MHz' /proc/cpuinfo"

Бенчмарк сетевого соединения

Один попроще

apt install speedtest-cli -y

затем

speedtest

Второй поинформативнее

если нету curl, то сначала

sudo apt install curl -y

а затем

curl -sL yabs.sh | bash -s -- -fg

Бенчмарк дисков и сети вместе

curl -sL yabs.sh | bash -s — -ig

Проверка диска

sudo apt install nvme-cli -y nvme smart-log /dev/nvme0

Проверить свободное место на диске

Частая причина ошибок в работе сервера, особенно когда забыли настроить ротацию логов. Выполняем

df -h

ищем что-то вроде такой строчки, там указан процент использования диска

/dev/sda1 38G 12G 24G 33% /

Проверяем износ дисков

sudo apt install smartmontools smartctl -a /dev/nvme0

Настраиваем TRIM

По умолчанию TRIM делается раз в неделю, для соланы этого недостаточно. Можно изменить расписание трим так:

systemctl edit fstrim.timer

и дописываем, например, чтобы раз в сутки делало :

[Timer] OnCalendar=daily

или еще чаще, например, раз в 6 часов:

[Timer] OnCalendar=0/6:00:00

Мониторинг памяти, процессоров и др. в графическом виде

sudo apt install htop -y

htop

Разгон процессора

watch "grep 'cpu MHz' /proc/cpuinfo"

смотрим в реальном времени частоту каждого ядра

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

проверяем режим работы процессора, обычно статусы power save (экономия электроэнергии), on demand (по запросу) и performance (высокая производительность), крайний вариант предпочтителен.

for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo performance > $i; done

прописываем perfomance или ondemand

первый всегда будет как следует прожаривать ваш камень, второй будет делать это только тогда, когда этого будет требовать установленный на вашем сервере софт.

После выполнения этой команды снова проверяем в реальном времени частоту каждого ядра, должна быть заметная разница в большую сторону

SOLANA

НЕДАВНО ДОБАВЛЕННЫЕ И ОСОБЕННО АКТУАЛЬНЫЕ КОМАНДЫ ИЩЕМ ВВЕРХУ

Кредитс

Кроме скипрейта важно контролировать как ваша нода голосует

solana validators -ul --sort=credits -r -n | sed -n 1,101p && solana validators -ul --sort=credits -r -n | grep -e ВАШ АЙДЕНТИТИ

команда покажет топ-100 по кредитсам и место, которое занимает ваша нода, если ниже 500, то стоит проанализировать что еще можно улучшить, в первую очередь обычно поменять слабое железо на более мощное ну и так далее :) Можете также дописать в конце сколько угодно других айдентити через -e и таким образом будете видеть например успехи ваших гуру :)

Посмотреть логи

tail -f /root/solana.log

Средний скип по кластеру

solana validators -ul | grep "Average Stake-Weighted Skip Rate" | awk '{print $5}'

или

sudo apt install jq -y

solana validators -ut --output json-compact | jq .averageSkipRate

Проверка состояния ноды

solana catchup solana address http://127.0.0.1:8899

либо

solana-validator monitor

либо

solana catchup --our-localhost --follow --log

Правильная перезагрузка ноды с удалением леджера

systemctl stop solana rm -rf ledger systemctl start solana

то же самое с физической перезагрузкой сервера

systemctl stop solana rm -rf ledger reboot

ждем пока сервер поднялся, коннектимся и затем

systemctl start solana

Правильный перезапуск сервиса с сохранением леджера

solana-validator --ledger /root/ledger wait-for-restart-window && systemctl restart solana

В результате рестарт будет выполнен автоматически в "окно" между слотами, таким образом потенциально снижаем свой скипрейт. Обычно занимает около 10 минут. Ниже еще один вариант, но уже ищет "окно" для перезапуска в 30 минут вместо стандартных 10 и плюс логи.

solana-validator --ledger ~/solana/ledger wait-for-restart-window 30 && systemctl restart solana && tail -f solana.log

Правильное обновление ноды

Прописываем сюда вместо 1.7.10 номер актуальной версии, на которую обновляемся

solana-install init 1.7.10

Если не тюнили систему вручную то прописываем автоматический тюнинг

sudo solana-sys-tuner --user $(whoami) > sys-tuner.log 2>&1 &

И далее

solana-validator --ledger /ledger wait-for-restart-window && systemctl restart solana

В результате рестарт будет выполнен автоматически в "окно" между слотами, таким образом потенциально снижаем свой скипрейт. Обычно занимает около 10 минут. После рестарта проверяем версию, должна быть актуальная

solana --version

Посмотреть сколько слотов в эпоху назначено ботом

solana leader-schedule | grep $(solana address) | wc -l

Посмотреть сколько слотов произведено успешно/пропущено

solana -v block-production | grep СЮДА ВПИСЫВАЕМ СВОЙ АДРЕС

Информация о валидаторе

solana validators | grep СЮДА ВПИСЫВАЕМ СВОЙ АДРЕС

Отправить токены соланы на внешний нативный адрес

solana transfer --from mainnet-validator-keypair.json СЮДА ВПИСЫВАЕМ АДРЕС ПОЛУЧАТЕЛЯ 0.1 --fee-payer mainnet-validator-keypair.json

Вывод наград с воут-аккаунта

solana withdraw-from-vote-account <VOTE_ACCOUNT_ADDRESS> <RECIPIENT_ADDRESS> <AMOUNT>

Опубликовать информацию о себе

solana validator-info publish ИМЯ НОДЫ -n ИМЯ В KEYBASE -w https://ВАША СТРАНИЦА--details РАССКАЖИТЕ О ТОМ ПОЧЕМУ ВАМ СТОИТ ДЕЛЕГИРОВАТЬ ИЛИ ЕЩЕ ЧТО-НИБУДЬ :)

пример

solana validator-info publish in_extremo -n in_extremo -w https://keybase.io/in_extremo--details @In_Extremo

Информация о текущей эпохе

solana epoch-info

Посмотреть слоты отставания

solana catchup --our-localhost --follow --log

Посмотреть список всех текущих делегаций

solana stakes <vote-account-address>

Посмотреть полученные вознаграждения за эпохи

За последнюю эпоху

solana inflation rewards <vote-account-address>

Также можно указать конкретную эпоху

solana inflation rewards <vote-account-address> --rewards-epoch <номер эпохи>

За несколько эпох можно так посмотреть, указав в последнем ключе количество эпох.

solana vote-account <vote-account-address> --with-rewards --num-rewards-epochs 10

На тему использования локнутых стейков в качестве селф-стейка

Для тех, кто еще не привязал ключ тестнета к майннету - 2 варианта).

Требования:
"Self-stake" is defined as a stake account which has a withdraw authority which matches the withdraw authority of the vote account it is delegated to.

Простой сценарий:

  • в качестве выплат мы указали кошелек MAIN_IDENTITY
  • связываем MAIN_IDENTITY и TDS_IDENTITY (solana-foundation-delegation-program-cli)
  • создаем MAIN_VOTE у которого WITHDRAWER_ACCOUNT = MAIN_IDENTITY (чем исполняем требование self-stake)
  • докидываем недостающие солы на MAIN_IDENTITY, создаем стейк аккаунт и стейкаем на MAIN_VOTE

Минус сценария в том, что он условно небезопасен (MAIN_IDENTITY нужен на сервере). Тот же validators.app будет помечать красным восклицательным знаком тех, кто пойдет по первому варианту, так что рекомендация заморочиться со вторым, который описан ниже

Сценарий посложнее:

  • в качестве выплат мы указали кошелек WITHDRAWER_ACCOUNT
  • создаем ключ MAIN_IDENTITY
  • связываем MAIN_IDENTITY и TDS_IDENTITY (solana-foundation-delegation-program-cli)
  • создаем ключ MAIN_VOTE у которого withdraw authority = WITHDRAWER_ACCOUNT (чем исполняем требование self-stake)
  • докидываем недостающие солы на WITHDRAWER_ACCOUNT, создаем стейк аккаунт и стейкаем на MAIN_VOTE

Плюс сценария в том, что WITHDRAWER_ACCOUNT хранится на другой машине или в ledger (это безопаснее). Ниже также кейс для Леджера Нано.

Вы участник mainnet-beta, получили залоченные реворды за ТДС на аппаратный кошелек Ledger Nano и хотите их положить в селфстейк себе?

Для этого с помощью кошелька например Solflare открываете свой кошелек Ledger Nano или находите в эксплорере, копируете его identity и c помощью команды ниже прописываете на сервере как withdraw аккаунт по умолчанию для своей ноды. Если пути к ключам иные, соответственно нужно их подправить

solana vote-authorize-withdrawer ~/vote-account-keypair.json ~/mainnet-validator-keypair.json АЙДЕНТИТИ ЛЕДЖЕРА

Далее предположим, что Ваша нода работает успешно и необходимо с воут-аккаунта вывести награды. Для этого на локальной машине устанавливаем CLI Solana, есть в т.ч. версия для Windows https://docs.solana.com/cli/install-solana-cli-tools#windows Установка в Виндоус осуществляется в командной строке (Win+R, далее cmd.exe). После установки копируем пути, где лежат файлы json от валидатор и воут аккаунтов и подставляем в команду затем также выполняем в командной строке. Получателем можно указать также путь к своему айдентити, в этом случае награда придет на него, либо любой другой внешний нативный адрес Солана. Вместо переменной ALL можно указать нужную сумму на вывод.

solana withdraw-from-vote-account -k validator-keypair.json vote-account-keypair.json <RECIPIENT_ADDRESS> ALL --authorized-withdrawer usb://ledger

После отправки в консоли данной команды Ledger Nano попросит проверить и подписать или отвергнуть транзакцию. Подписываем и проверяем в эксплорере.

Различные команды для управления аккаунтами

создать стейк

solana create-stake-account validator-stake-keypair.json

заделегировать стейк

solana delegate-stake ~/validator-stake-keypair.json ~/vote-account-keypair.json

деактивировать стейк

solana deactivate-stake ~/validator-stake-keypair.json

вывести баланс стейка

solana withdraw-stake ~/validator-stake-keypair.json ~/validator-keypair.json

объединение стейков (действует через две эпохи)

solana merge-stake ~/validator-stake-keypair.json ~/validator-stake2-keypair.json

поменять ключи на снятия воут аккаунта

solana vote-authorize-withdrawer VOTE_ACCOUNT_ADDRESS CURRENT_WITHDRAW_AUTHORITY_KEYPAIR NEW_WITHDRAW_PUBKEY_OR_KEYPAIR

поменять ключи на снятие стейк аккаунта

solana stake-authorize STAKE_ACCOUNT_ADDRESS --withdraw-authority CURRENT_WITHDRAW_KEYPAIR --new-withdraw-authority NEW_WITHDRAW_AUTHORITY_KEYPAIR_OR_PUBKEY

Страница обновляется, если нашли неточность или что добавить пишите @In_Extremo

Subscribe to inextremo.eth (💙,🧡) 🛸
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from inextremo.eth (💙,🧡) 🛸

Skeleton

Skeleton

Skeleton