March 3, 2022

Klever. Развертывание ноды.

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

Даный пости содержит всю необходимую для запуска ноды информацию.

Системные требования и установка Docker

В системных требованиях обозначена следующая минимальная конфигурация:

  • CPU 4 ядра
  • RAM 8GB
  • SSD 200 GB.
  • интернет соединение не менее 100 Mbps
  • Linux or MacOS.

Для начала работы с Klever blockchain, необходимо иметь установленный Docker и загрузить последний Klever Toolchain образ.

Я не буду останавливаться на процессе установки Docker. Подробные инструкции можно найти по адресу https://docs.docker.com/engine/install

Klever Toolchain

Загружаем последний образ Toolchain

docker pull kleverapp/klever-go-testnet:latest

дожидаемся загрузки образа Klever

Кошелек

Выполняется однократно. Файл walletKey.pem является одним из ключевых для идентификации ноды. Подлежит обязательному резервному копированию!

Создаем каталог в котором будет находиться кошелек:

mkdir wallet

Выполняем команду create-wallet:

docker run -it --rm --user "$(id -u):$(id -g)" \ -v $(pwd)/wallet:/opt/klever-blockchain \ --entrypoint=/usr/local/bin/operator kleverapp/klever-go-testnet:latest "create-wallet"

Эта команда создает кошелек и возвращает адрес связанный с ним

результат выполнения create-wallet

Для проверки адреса и сертификата кошелька набираем:

docker run -it --rm --user "$(id -u):$(id -g)" \
 -v $(pwd)/wallet:/opt/klever-blockchain \
 --entrypoint=/usr/local/bin/operator \
 kleverapp/klever-go-testnet:latest "getAddress"
Адрес кошелька

#Запускаем ноду

Klever нода работает внутри контейнера docker.

  • Создаем каталог statics

Каталог в котором будут храниться все данные:

mkdir -p $(pwd)/node/config $(pwd)/node/db $(pwd)/node/logs
  • Network genesis конфиг
Сожержит актуальный конфиг сети. Данный файл необходим в случае запуска ноды с нуля, после network reset или при сбоях синхронизации.

Загружаем актуальный конфиг файл и распаковываем в каталог config

curl -k https://backup.testnet.klever.finance/config.testnet.100007.tar.gz\
| tar -xz -C ./node
  • Создаем BLS key валидатора
Выполняется однократно. Подлежит обязательному резервному копированию!

Выполняем команду внутри Docker контейнера для создания ключа валидатора. Данные перенаправляются в каталог созданный ранее..

docker run -it --rm -v $(pwd)/node/config:/opt/klever-blockchain \
    --user "$(id -u):$(id -g)" \
    --entrypoint='' kleverapp/klever-go-testnet:latest keygenerator
  • Загружаем и распаковываем архив данных для более быстрого старта

Содержит актуальный на данный момент цепочку транзакий (?). Необходим для быстрой синхронизации ноды с чейном. необходим после Network Reset или миграции/восстановления ноды! В случае наличия бэкапа загружаем его. В противном случае используем общий архив.

Подлежит обязательному резервному копированию!
curl -k https://backup.testnet.klever.finance/kleverchain.latest.tar.gz \
| tar -xz -C ./node
  • Стартуем ноду

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

docker run -it --rm \
    --user "$(id -u):$(id -g)" \
    --name klever-node \
    -v $(pwd)/node/config:/opt/klever-blockchain/config/node \
    -v $(pwd)/node/db:/opt/klever-blockchain/db \
    -v $(pwd)/node/logs:/opt/klever-blockchain/logs \
    --network=host \
    --entrypoint=/usr/local/bin/validator \
    kleverapp/klever-go-testnet:latest \
    '--log-save' '--rest-api-interface=0.0.0.0:8080'

Разберем немного подробнее:

Импортируем конфиг и сгенерированный .pem файл (BLS Key).
-v $(pwd)/node/config:/opt/klever-blockchain/config/node
Указываем каталог DB.
-v $(pwd)/node/db:/opt/klever-blockchain/db
Сохраняем лог файл и назначаем каталог логов.
-v $(pwd)/klv/logs:/opt/klever-blockchain/logs

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

Работа узла, показывающая, сколько блоков было предложено и принято, текущие блоки, слоты и подключенные узлы, последний сгенерированный хэш, вычислительную информацию, эпоху и сетевые процессы, а также сегмент основной информации журнала.
  • Запуск ноды в фоновом режиме

При запуске в фоновом режиме добавьте параметр --use-log-view и замените --rm на -d

docker run -it -d \
    --user "$(id -u):$(id -g)" \
    --name klever-node \
    -v $(pwd)/node/config:/opt/klever-blockchain/config/node \
    -v $(pwd)/node/db:/opt/klever-blockchain/db \
    -v $(pwd)/node/logs:/opt/klever-blockchain/logs \
    --network=host \
    --entrypoint=/usr/local/bin/validator \
    kleverapp/klever-go-testnet:latest \
    '--log-save' '--use-log-view' '--rest-api-interface=0.0.0.0:8080'

Если вы запускаете узел в фоновом режиме, вы можете либо проверить журналы в папке ./node/logs, либо использовать команду docker:

docker logs -f --tail 5 klever-node
  • Остановка ноды

Используем команду

docker stop klever-node

Либо находясь в окне визуального интерфейса нажимаем Ctrl + C

Итоги

Имеем сконфигурированную и готовую к запуску ноду Klever.

В дальнейшем рассмотрим операции обслуживания ноды и получения статуса валидатора.

Далее: Обслуживание ноды Klever