# Полезное для валидаторов Solana **Published by:** [inextremo.eth (💙,🧡) 🛸](https://paragraph.com/@inextremo/) **Published on:** 2022-08-17 **URL:** https://paragraph.com/@inextremo/solana ## Content ПОЛЕЗНЫЕ ССЫЛКИ 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 Опубликовать информацию о себе 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 Посмотреть полученные вознаграждения за эпохи За последнюю эпоху solana inflation rewards Также можно указать конкретную эпоху solana inflation rewards --rewards-epoch <номер эпохи> За несколько эпох можно так посмотреть, указав в последнем ключе количество эпох. solana vote-account --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 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 ## Publication Information - [inextremo.eth (💙,🧡) 🛸](https://paragraph.com/@inextremo/): Publication homepage - [All Posts](https://paragraph.com/@inextremo/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@inextremo): Subscribe to updates - [Twitter](https://twitter.com/1nExtremo): Follow on Twitter