Регистрация участия и запуск узла валидатора в тестовой сети проекта Solana

Артем
7 min readSep 22, 2020

--

Требования к оборудованию, необходимому для запуска узла в тестовой сети:

Процессор:
Разработчиками рекомендуется использовать процессор с максимально возможным количеством ядер. Наиболее подходящими являются процессоры AMD Threadripper или Intel Server (Xeon). Стоит отметить, что на текущей стадии работы тестовой сети возможно использование процессоров других классов, к примеру AMD Ryzen 7 3700X, AMD Ryzen 9 3900, Intel Core i9–9900K, Intel Core i7–10800K и других, но данная возможность не гарантирует, что производительности этих процессоров будет достаточно в дальнейшем (ввиду роста TPS), тем более для работы узла в основной сети Mainnet-Beta, в случае, если участник планирует претендовать на делегацию от Solana Foundation и будет выбран в валидаторский сет этой сети (данный выбор основывается на показателях работы в тестовой сети).

Дисковая система:
Для успешной работы узла в сети должны использоваться исключительно диски NVMe минимальным объемом 1Tb
Если дисков несколько (к примеру два) и используется RAID-массив, то в этом случае это должен быть RAID-0 (ввиду большей производительности).

Графический процессор (видеокарта):
В текущей тестовой сети TdS возможна работа узла только с использованием вычислительной мощности CPU, но как уже упоминалось ранее, как только пропускная способность транзакций сети (TPS) будет увеличена, использование графических процессоров будет являться необходимой мерой. Поэтому крайне желательно иметь в составе конфигурации узла валидатора графический процессор. Разработчиками рекомендуются видеокарты серии Nvidia 2080Ti, 1080Ti или серверные видеокарты серии Tesla. Графические процессоры AMD в настоящее время не поддерживаются ввиду отсутствия поддержки OpenCL (в дальнейшем поддержка планируется).

Пропускная способность подключения к сети Интернет:
При работе узла генерируется большой объем UDP-трафика, поэтому необходимые требования к каналу составляют 1Gbit/s

Программное обеспечение:
Операционная система Ubuntu 20.04. Также для работы узла порты с 8000 по 10000 должны быть открыты для входящего и исходящего трафика.

Регистрация участия в тестовой сети:

На текущий момент имеется возможность участия в тестовой сети с целью дальнейшего получения делегации от Solana Foundation уже в основной сети.

Регистрация осуществляется на сайте Solana.foundation в разделе https://www.solana.foundation/delegation-program

Для успешной регистрации в тестовой сети и возможности получения делегации от Solana Foundation необходимо выполнить следующие шаги:

1. Сгенерировать ключи валидатора для тестовой сети и сети майннет (см. ниже инструкции по генерации)

2. Пройти верификацию KYC/AML.

Для генерации идентификационного ключа валидатора (Validator Identity Public Key) необходимо выполнить следующие действия:

  1. Скачать и установить актуальный релиз программного обеспечения узла. Актуальную версию релиза возможно узнать в канале анонсов в Discord https://discord.gg/53ArAmybMD
curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.9.1/install/solana-install-init.sh | sh -s - 1.9.1

2. Прописать в переменную PATH путь к актуальному релизу, данная команда появится в терминале после установки и выглядит примерно так

export PATH=”/путь_к_текущему_профилю_пользователя/.local/share/solana/install/active_release/bin:$PATH”

3. Ключи генерируются следующей командой

solana-keygen new -o ~/validator-keypair.json

Требуется обязательно сохранить вывод данной команды — pubkey (указывается при регистрации) и seed-фразу, пароль, введенный при генерации ключа, а также сделать резервную копию файла validator-keypair.json, который будет создан в корневой директории текущего пользователя Ubuntu.

Для создания второго ключа необходимо повторить указанную выше команду, изменив имя файла, например на validator-keypair-mainnet.json и также сохранить все необходимые данные и сам файл.

Данную процедуру можно выполнить на любом ПК или VPS с установленной операционной системой Ubuntu. Это позволяет пройти регистрацию заранее, если конфигурация для запуска узла валидатора еще полностью не готова. В последствие нужно будет перенести файл validator-keypair.json на уже «рабочую» конфигурацию, где будет производится запуск узла.

Запуск узла валидатора в тестовой сети:

  1. Скачиваем и устанавливаем актуальный релиз программного обеспечения узла. Актуальную версию релиза возможно узнать в канале анонсов в Discord https://discord.gg/53ArAmybMD
curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.9.1/install/solana-install-init.sh | sh -s - v1.9.1

2. Прописываем в переменную PATH путь к актуальному релизу, данная команда появится в терминале после установки и выглядит примерно так:

export PATH=”/путь_к_текущему_профилю_пользователя/.local/share/solana/install/active_release/bin:$PATH”

3. Увеличиваем лимит открытых файлов до 1000000 следующими командами

sudo sysctl -w vm.max_map_count=1000000sudo sysctl -a | grep vm.max_map_count

4. Создаем папку solana в корневой директории текущего пользователя Ubuntu

mkdir ~/solana

и помещаем в нее идентификационный ключ валидатора validator-keypair.json, который генерировался при подаче заявки на участие.

5. Настраиваем конфигурацию cli, а также путь к идентификационному ключу валидатора

solana config set --url https://api.testnet.solana.com --keypair ~/solana/validator-keypair.json

6. Если все прошло успешно, то команда

solana-gossip spy --entrypoint entrypoint.testnet.solana.com:8001

отобразит список текущих валидаторов в кластере.
Для выхода нажимаем Ctrl+c.

7. Далее создаем vote account, который необходим непосредственно для запуска процесса валидирования
Для этого понадобится новый ключ

solana-keygen new -o ~/solana/vote-account-keypair.json

Необходимо сохранить вывод данной команды - pubkey и seed-фразу, пароль, введенный при генерации ключа, а также сделать резервную копию файла vote-account-keypair.json, который будет доступен в папке solana.

С недавних пор появилось обязательное требование указывать withdraw authority address при создании vote account. Поэтому необходимо создать третий адрес (authorized-withdrawer-keypair.json), который будет выступать в этой роли. Адрес создается также, как описано выше, сам файл и данные от него, само собой, нужно тоже сохранить.

Следующей командой записываем информацию о созданном vote account в блокчейн, а также связываем его с используемым validator-keypair и authorized-withdrawer-keypair.

solana create-vote-account ~/solana/vote-account-keypair.json ~/solana/validator-keypair.json ~/solana/authorized-withdrawer-keypair.json

Дожидаемся подтверждения сети, после этого информация о vote account будет записана в блокчейн.

8. Теперь необходимо создать сервисный файл, который непосредственно будет запускать программное обеспечение узла, для этого выполним команду:

sudo nano /etc/systemd/system/solana.service

и вставляем туда следующее:

[Unit]
Description=Solana Testnet Node
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
LimitNOFILE=1024000
Environment="SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=tds,u=testnet_write,p=c4fa841aa918bf8274e3e2a44d77568d9861b3ea""
ExecStart=/home/serv/.local/share/solana/install/active_release/bin/solana-validator \
--entrypoint entrypoint.testnet.solana.com:8001 \
--entrypoint entrypoint2.testnet.solana.com:8001 \
--entrypoint entrypoint3.testnet.solana.com:8001 \
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
--known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \
--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
--expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \
--only-known-rpc \
--limit-ledger-size 50000000 \
--identity /home/serv/solana/validator-keypair.json \
--vote-account /home/serv/solana/vote-account-keypair.json \
--ledger /home/serv/solana/validator-ledger \
--dynamic-port-range 8001-8010 \
--gossip-port 8001 \
--rpc-port 8899 \
--log -
[Install]
WantedBy=multi-user.target

Следует особенно обратить внимание на параметры ExecStart, identity, vote-account и ledger, в которых необходимо указать корректный путь к указанным файлам узла валидатора с учетом текущего профиля пользователя:

ExecStart=/путь_к_текущему_профилю_пользователя/.local/share/solana/install/active_release/bin/solana-validator--identity /путь_к_текущему_профилю_пользователя/solana/validator-keypair.json--vote-account /путь_к_текущему_профилю_пользователя/solana/vote-account-keypair.json--ledger /путь_к_текущему_профилю_пользователя/solana/validator-ledger

Затем нажимаем Ctrx+x и соглашаемся с сохранением в файл solana.service

В целом содержание данного файла может меняться из-за возможных вносимых изменений, требуемых для корректировки параметров запуска узла валидатора. Как правило данные изменения публикуются в канале анонсов в Discord. Выше приведено актуальное на момент написания статьи содержание.

Для автозапуска службы узла валидатора выполняем команды:

sudo systemctl daemon-reloadsudo systemctl enable solana.service

9. Теперь можно непосредственно запустить службу:

sudo systemctl start solana

10. Для отслеживая логов работы службы можно выполнить команду:

journalctl -u solana -f

Для выхода нажимаем Ctrl+c.

Также основным методом отслеживания корректной работы узла валидатора является команда:

solana catchup ~/solana/validator-keypair.json

Она отображает текущий статус синхронизации с блокчейном. Во время начального запуска узел валидатора будет “догонять” текущую высоту блока и вывод команды будет примерно такой:

После успешной синхронизации значения us и them должны совпадать:

А при вводе команды:

solana validators

validator-keypair и vote account будут отображаться в списке.

На этом этапе узел валидатора успешно запущен!

11. Дополнительно имеется возможность опубликовать информацию об узле валидатора в инструментах для мониторинга (таких как Solanabeach.io).

В аккаунте keybase, в разделе Files создаем папку solana (/keybase/public/keybase_username/solana) и загружаем в нее пустой файл с именем validator-публичный_ключ. Например, validator-5BFP2FY7kdV3ggDrKf9UtKpfrRSd3kNGC7p4q18i1rSR. Ключ указывается тот, который подавался при регистрации.

Далее на узле валидатора используем следующую команду:

solana validator-info publish “отображаемое_имя” -n keybase_username -w “сайт”

где вводится произвольное имя в кавычках, аккаунт keybase (берется изображение профиля пользователя keybase) и сайт. При необходимости ключ -w можно не указывать.

Эксплореры (обозреватели сети)

Здесь можно найти данные о валидаторах и их работе, количество стейкуемых токенов, транзакции сети и другие технические данные.

  • Explorer.solana.comофициальный стандартный эксплорер. Показывает циркуляцию токенов, транзакции, высоту блока, эпоху, крупнейших холдеров

Инструменты для мониторинга валидаторов и общей статистики блокчейна

Сообществo

Русскоязычные

Англоязычные

--

--