Установка collator node в Moonbeam

cyberG
5 min readSep 13, 2021

Привет, сообщество Moonbeam.

Хотел бы поделиться гайдом по установке collator node в Moonbase Network , настроить телеметрию и податься в коллаторы.

Системные требования:

Запуск ноды

Скачиваем бинарник:

wget https://github.com/PureStake/moonbeam/releases/download/v0.12.1/moonbeam

Проверяем бинарник:

sha256sum moonbeam

Делаем бинарник исполняемым:

chmod +x moonbeam

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

adduser moonbase_service --system --no-create-home

Создаем директорию для этого бинарника:

mkdir /var/lib/alphanet-data

Изменяем владельца этой директории:

chown moonbase_service /var/lib/alphanet-data

Перемещаем бинарник в нужную нам директорию:

cp ./moonbeam /var/lib/alphanet-data

Создаем сервисный файл:

nano /etc/systemd/system/moonbeam.service

Добавляем данные в сервисный файл:

[Unit]
Description="Moonbasystemctl --user start minase Alpha systemd service"
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=on-failure
RestartSec=10
User=moonbase_service
SyslogIdentifier=moonbase
SyslogFacility=local7
KillSignal=SIGHUP
ExecStart=/var/lib/alphanet-data/moonbeam \
--validator \
--port 30333 \
--rpc-port 9933 \
--ws-port 9944 \
--pruning=archive \
--state-cache-size 1 \
--base-path /var/lib/alphanet-data \
--chain alphanet \
--name "YOUR-NODE-NAME" \
-- \
--port 30334 \
--rpc-port 9934 \
--ws-port 9945 \
--execution wasm \
--wasm-execution compiled \
--state-cache-size 1 \
--pruning=archive \
--name="YOUR-NODE-NAME (Embedded Relay)"
[Install]
WantedBy=multi-user.target
"YOUR-NODE-NAME" - имя вашей ноды

Делаем нашу сервисную службу загружаемой после запуска:

systemctl enable moonbeam.service

Стартуем сервис:

systemctl start moonbeam.service

Проверяем статус:

systemctl status moonbeam.service

Проверяем логи:

journalctl -f -u moonbeam.service

Теперь наша нода работает и мы можем перейти к настройке телеметрии.

Настройка телеметрии

Создаем аккаунт в https://app.gantree.io и получаем свой API-ключ

Скачиваем бинарник:

wget https://github.com/gantree-io/gantree-node-watchdog/releases/download/v1.1.0rc1/gantree-node-watchdog-v1.1.0rc1-linux.tar.gz

Распаковываем его:

tar -xzf gantree-node-watchdog-v1.1.0rc1-linux.tar.gz

Перемещаем бинарник в необходимую директорию:

mv gantree_node_watchdog /usr/local/bin/

Создаем конфиг для ноды-наблюдателя релейчейнов:Создаем две директори для конфигов:

mkdir -p /var/lib/gantree/parachain
mkdir -p /var/lib/gantree/relay

Создаем конфиг для ноды-наблюдтеля парчейнов:

nano /var/lib/gantree/parachain/.gnw_config.json

Добавляем данные:

{
"api_key": "YOUR-API-KEY",
"project_id": "moonbeam",
"client_id": "YOUR-SERVER-NAME-parachain"
"metrics_host": "http://127.0.0.1:9615"
}

Создаем конфиг для ноды-наблюдателя релейчейнов:

nano /var/lib/gantree/relay/.gnw_config.json

Добавляем данные в конфиг:

{
"api_key": "YOUR-API-KEY",
"project_id": "moonbeam",
"client_id": "YOUR-SERVER-NAME-relay",
"metrics_host": "http://127.0.0.1:9616"
}
"YOUR-API-KEY" - ваш API ключ в Gantree
"YOUR-SERVER-NAME-relay" - имя вашей ноды-наблюдателя (у каждого наблюдателя должно быть разное имя)
"PCK-key" больше не нужен

Создаем сервисный файл для ноды-наблюдателя парчейнов:

nano /etc/systemd/system/gantree-parachain.service

Добавляем данные в него:

[Unit]
Description=Gantree Node Watchdog Parachain
After=network.target
[Service]
WorkingDirectory=/var/lib/gantree/parachain
Type=simple
Restart=always
ExecStart=/usr/local/bin/gantree_node_watchdog
[Install]
WantedBy=multi-user.target

Создаем сервисный файл для ноды-наблюдателя релейчейнов:

nano /etc/systemd/system/gantree-relay.service

Добавляем данные в него:

[Unit]
Description=Gantree Node Watchdog Relay
After=network.target
[Service]
WorkingDirectory=/var/lib/gantree/relay
Type=simple
Restart=always
ExecStart=/usr/local/bin/gantree_node_watchdoggantree-relay
[Install]
WantedBy=multi-user.target

Делаем сервисную службу загружаемой после запуска:

sudo systemctl enable gantree-parachain

Запускаем сервис gantree-parachain и проверяем логи:

sudo systemctl start gantree-parachain && journalctl -f -u gantree-parachain

Делаем нашу сервисную службу загружаемой после запуска:

sudo systemctl enable gantree-relay

Запускаем сервис gantree-relay и проверяем логи:

sudo systemctl start gantree-relay && journalctl -f -u gantree-relay

Далее нам необходимо стать кандидатом в коллаторы

Стать коллатором

Создаем аккаунт в https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fwss.testnet.moonbeam.network#/accounts

Узнаем размер пула кандидатов

  1. Переходим во вкладку “Developer”
  2. Выбираем раздел “JavaScript”
  3. Копируем текст в окно
  4. Сохраняем
  5. Запускаем код
  6. Копируем данные
// Simple script to get candidate pool size
const candidatePool = await api.query.parachainStaking.candidatePool();
console.log(`Candidate pool size is: ${candidatePool.length}`);

Теперь мы можем подать свою кандидатуру в коллаторы

  1. Заходим в раздел “Developers” во вкладку “Extrinsics”
  2. Выбираем свой аккаунт с токенами для коллации
  3. Подтверждаем что аккаунт имеет необходимое количество токенов
  4. Выбираем parachainStaking в меню “extrinsics"
  5. Далее выбираем функциюjoinCandidates()
  6. Выбираем количество токенов которое хотим забондить
  7. Указываем количество кандидатов в пуле (мы узнали это ранее)
  8. Подтверждаем транзакцию

Далее необходимо получить session key ноды и привязать его к нашему кандидату

Для этого используем данную команду на нашей ноде

curl http://127.0.0.1:9933 -H \
"Content-Type:application/json;charset=utf-8" -d \
'{
"jsonrpc":"2.0",
"id":1,
"method":"author_rotateKeys",
"params": []
}'

Сохраняем полученные данные

Теперь возвращаемся в кошелёк

  1. Заходим во вкладку “Developer”
  2. Выбираем опцию “Extrinsics”
  3. Выбираем свой аккаунт
  4. ВыбираемauthorMapping
  5. Выбираем addAssociation()
  6. Вводим наш (sesion key из предыдущего раздела)
  7. Выбираем “Submit Transaction”

Проверяем

  1. Заходим во вкладку “Developer”
  2. Выбираем опцию “Chain state”
  3. Выбираем authorMapping
  4. Выбираем mappingWithDeposit метод
  5. Указываем author ID
  6. Нажимем “+” button для отправки RPC call

Проверить валидатора в списке ожидания:

https://moonbase.subscan.io/waiting

Посмореть author ID если забыли:

https://moonbase.subscan.io/extrinsic?module=authormapping&call=update_association

Официальная документация:

https://docs.moonbeam.network/node-operators/networks/full-node/

Документация по Gantree:

https://www.notion.so/Gantree-Dashboard-v3-Docs-3e2b87789cf440a7915a5791eee92780

Забондить дополнительный стейк:

  1. Заходим во вкладку “Developer”
  2. Выбираем опцию “Extrinsics”
  3. Выбираем свой аккаунт
  4. ВыбираемparachainStaking
  5. Выбираем функцию candidateBondMore(more)
  6. Указываем количество
  7. Выбираем “Submit unsigned”

Номинировать стейк (для номинаторов):

Забондить дополнительный стейк:

  1. Заходим во вкладку “Developer”
  2. Выбираем опцию “Extrinsics”
  3. Выбираем свой аккаунт
  4. ВыбираемparachainStaking
  5. Выбираем функцию тщьштфну(colator,amount)
  6. Выбираем коллатора
  7. Указываем collator_nominator_count (32)
  8. Количество nomination_count (32)
  9. “Submit Transaction”

Если хотите заделегерировать мне:

Мой валидатор: https://moonbase.subscan.io/validator/0xa3D563203b7a46a545E5e1C812B54405DcD62680

Discord Moonbeam:

https://discord.gg/aCNA78Zg

Подать заявку на приглашение в коллаторы:

https://moonbeam.network/contact/

--

--