ПОЛЕЗНЫЕ ССЫЛКИ
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 нужен на сервере). Тот же validators.app будет помечать красным восклицательным знаком тех, кто пойдет по первому варианту, так что рекомендация заморочиться со вторым, который описан ниже
Сценарий посложнее:
Плюс сценария в том, что 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