Настройка ноды Aeternity, установленной через бинарный дистрибутив

Этот документ описывает настройку ноды Aeternity, установленной через бинарный дистрибутив, для соединения с публичной сетью нод.

Пользовательская конфигурация

Система aeternity поддерживает пользовательские параметры через файлы конфигурации форматов JSON или YAML.

Имя и расположение файла

Формат файла конфигурации определяется расширением файла: .json для JSON, или .yaml для YAML.Расположение файлов можно указать разными способами (в порядке приоритета):

  1. Переменная среды ОС AETERNITY_CONFIG содержит имя файла;
  2. Переменная среды Erlang/OTP -aecore config содержит имя файла;
  3. Файл с именем aeternity.{yaml,json} существует в ${HOME}/.aeternity/aeternity/
  4. Файл с именем aeternity.{yaml,json} существует в ${AETERNITY_TOP}/

Если все вышеуказанные проверки не дают результата, пользовательская конфигурация не применяется.

Валидация

Содержимое файла конфигурации будет проверятся на соответствие с JSON-Schema, расположенном в ноде по адресу data/aeternity_config_schema.json. Если какие-либо параметры не соответствуют schema, нода не запустится.

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

Пиринговая сеть

Важно, что узел может не только подключаться к другим нодам, но и принимать входящие подключения. Чем больше у ноды входящих и исходящих соединений, тем меньше будет общая задержка в пиринговой сети (время распространения блока).По-умолчанию ноды прослушивают TCP-порт 3015. Это значение можно изменить с помощью параметра sync > port в файле конфигурации, если по какой-то причине порт 3015 нельзя использовать (например, порт занят другой службой).

Файрвол

Пример конфигурации: node(firewall)<->firewall<->Internet

Если нода находится за файрволом, порт (3015 по-умолчанию или другой порт, согласно файлу конфигурации) должен быть открыт для входящих TCP подключений.Обратите внимание, порт должен быть открыт на машине, где запущен узел, и на любом другом внешнем устройстве, которое перенаправляет сетевой трафик (роутер, файрвол). У разных файроволов разные конфигурации, потому нельзя предоставить универсальную инструкцию для всех.

Чтобы узнать, как открыть порты в вашем случае, ознакомьтесь с документацией для вашего устройства или ПО.

NAT

Пример конфигурации: node<->NAT(router)<->Internet.

Если нода находится за NAT (от англ. Network Address Translation — «преобразование сетевых адресов») вроде домашнего роутера, порт на устройстве должен быть проброшен для входящих подключений из интернета и перенаправлять их на соответствующий порт на ноде.У разных файроволов разные конфигурации, потому нельзя предоставить универсальную инструкцию для всех.

Чтобы узнать, как открыть порты в вашем случае, ознакомьтесь с документацией для вашего устройства или ПО.

Продвинутый NAT

Это продвинутая конфигурация, которая может привести к ошибкам в настройке ноды и плохому p2p-соединении. Используйте осторожно.Если порт синхронизации (3015 по-умолчанию) не может использоваться в качестве внешнего форвардинг-порта, его можно изменить с помощью параметра конфигурации sync>external_port. Это порт, который нода объявит в сети, чтобы быть доступной для внешних интернет-подключений.Пример схемы: node(sync>port)<->router(sync>external_port)<->Internet

UPnP/NAT-PMP

Если на вашем роутере не настроен порт-форвардинг, но есть поддержка UPnP или NAT-PMP, нода предоставляет службу UPnP/NAT-PMP для оптимизации сетевой конфигурации..Чтобы запустить службу UPnP/NAT-PMP:

  • Убедитесь, что на вашем роутере включен UPnP/NAT-PMP;
  • В пользовательской конфигурации измените значение параметра sync > upnp_enabled на true.

Дальше нода автоматически создаст подходящую карту портов, согласно параметрам конфигурации.

Проверка порта

После запуска узла вы можете проверить валидность конфигурации. Например, для этого можно запустить внешнюю проверку порта (при порте 3015 по-умолчанию):
nc -zv $(curl -s https://api.ipify.org) 3015
Пример ответа:
Connection to 13.53.161.215 3015 port [tcp/] succeeded!

IP-адрес должен соответствовать внешнему IP-адресу тестируемой ноды (в примере используется одна из seed-нод.)

Каналы

Нода предоставляет инфраструктуру для использования каналов состояний (state channels). В процессе задействованы два протокола:

  • протокол клиента WebSocket;
  • протокол The Noise Protocol Framework

Последний не описан в этом документе.

Настройке WebSocket клиента для каналов

Чтобы подключиться в качестве WebSocket клиента, нужно настроить порт и хост, на котором служба будет слушать. Порт TCP настраивается через параметр websocket>channel>port. Адрес, который будет прослушивать служба устанавливается параметром websocket>channel>listen_address. По-умолчанию установлен адрес 127.0.0.1, потому конечная точка WebSocket не будет видимой.

Network ID

По-умолчанию дистрибутив настроен на network_id основной сети (mainnet). Чтобы взаимодействовать с тестнетом, нужно изменить конфигурацию. Network ID тестнета (который изначально назывался UAT): ae_uat:fork_management:network_id:ae_uat

Для основной сети network ID сбрасывается на ae_mainnet.

Инструкции

Инструкции ниже предполагают, что:

  • узел развернут в директории ~/aeternity/node;
  • В ключе peers в файле конфигурации не указаны специальные пиры. Если ключ peers не определен, используются сид-пиры мейннета, встроенные в дистрибутив.

В ином случае инструкции нужно скорректировать.Создайте файл конфигурации с нижеследующим содержанием. Поместите файл конфигурации по одному из адресов, указанных в разделе Имя и расположение файла. Убедитесь, что для параметра sync > port установлено желаемое значение.---
sync:
port: 3015

keys:
dir: keys
peer_password: "secret"

http:
external:
port: 3013
internal:
port: 3113

websocket:
channel:
port: 3014

mining:
autostart: false

chain:
persist: true
db\path: ./my\db

forkmanagement:
network\id: ae\mainnet

Нода автоматически создает директорию db_path для хранения блокчейна, если она не была создана ранее.В приведенной выше конфигурации параметр mining>autostart установлен на false, потому майнинг не начнется автоматически. Чтобы настроить ноду для майнинга, ознакомьтесь с разделом Конфигурация майнера.

Учитывайте, что в YAML-файлах много пустого пространства, потому важно убедиться в том, что все отступы проставлены правильно и файл заканчивается новой строкой.Файл конфигурации можно проверить перед запуском кода: cd ~/aeternity/node
bin/aeternity checkconfig aeternity.yaml
Ответ должен быть таким:OK

Если файл является валидным YAML, но не содержит валидной конфигурации, в ответе будет содержаться полезная информация.

Конфигурация майнера

Инструкции ниже предполагают, что вы уже знаете публичный ключ вашего beneficiary аккаунта (если нет, ознакомьтесь с разделом Аккаунт бенефициара).

Если вы хотите использовать свою ноду для майнинга, можете использовать майнинг по-умолчанию. Для этого в файле конфигурации aeternity.yaml нужно определить следующие параметры: mining:
beneficiary:"beneficiary_pubkey_to_be_replaced"

autostart: true

Убедитесь, что заменили значение параметра mining>beneficiary на ваш публичный ключ.

Чтобы улучшить производительность синхронизации (sync), перед настройкой майнера запустите ноду с параметром autostart:false. После синхронизации измените значение параметра autostart на true и перезапустите ноду.

Параметры майнера должны соответствовать возможностям вашего аппаратного обеспечения, следовательно нужно решить, как именно настроить ваш майнер. Вы можете ознакомиться с документацией по CUDA-майнингу или использовать все ядра на вашем ПК, кроме одного, для майнинга (оставьте одно ядро доступным для трансляции транзакций (transaction gossiping), синхронизации и т.д.). Если у вас 16 ядер, в можете назначить 14 из них для майнинга с помощью следующей конфигурации: mining:beneficiary:"beneficiary_pubkey_to_be_replaced"
cuckoo:
edge_bits: 29
miners:
- executable: mean29-avx2
extra_args: -t 14

Объединение разных майнеров

В вашем комплекте оборудования может быть несколько майнеров, одновременно задействованных вашей нодой. Например, чтобы объединить CPU-майнер с CUDA-майнером, можно использовать следующую конфигурацию: mining:beneficiary:"beneficiary_pubkey_to_be_replaced"
cuckoo:
edgebits: 29
miners:
- executable: mean29-generic
extraargs: -t 2
- executablegroup: aecuckooprebuilt
executable: cuda29
extraargs: -t 1
hex\encoded\header: true

Подробнее о CUDA-майнинге в документации по CUDA-майнингу.

Аккаунт бенефициара

Чтобы задать получателя награды за майнинг (бенефициара), нужно указать публичный ключ бенефициара. Если у вас еще нет публичного ключа, вы можете сгенерировать пару из приватного и публичного ключей с помощью AirGap wallet.

Генерация аккаунта бенефициара для тестирования

В дистрибутив включен альтернативный инструмент для генерации пар приватных/публичных ключей keys_gen, предназначенный исключительно для тестирования.

Пара ключей будет зашифрована паролем, который нужно передать инструменту keys_gen (код ниже предполагает, что нода расположена в директории ~/aeternity/node).
Сгенерированная пара ключей будет находиться в ~/aeternity/node/generated_keys. Публичный ключ должен быть задан в качестве значения параметра mining>beneficiary в файле конфигурации.

Сделайте бэкап-копию директории ~/aeternity/node/generated\keys (и запомните пароль): если нода будет уничтожена, вы сможете настроить новую для того же аккаунта бенефициара. Никогда не раскрывайте никому свой приватный ключ или пароль.

Пример:

cd~/aeternity/node
bin/aeternity keys\gen my\secret\password ## This way of generating a key-pair is only for testing purpose, use a proper wallet/mechanism for your mainnet tokens: e.g., AirGap wallet

Generated keypair with encoded pubkey: ak\2D9REvQsrAgnJgmdwPq585D8YksJC8PSAA8MscQdxinbkFC7rq

Не используйте сгенерированный публичный ключ в примере (ak_2D9REvQsrAgnJgmdwPq585D8YksJC8PSAA8MscQdxinbkFC7rq), в своей конфигурации. Это лишь пример значения, которое вы должны получить после запуска команды bin/aeternity keys_gen.

Майнинг в пулах

В экосистеме Aeternity существует несколько пулов, каждый из которых свои правила майнинга. Для майнинга в пуле нет необходимости в клиенте и настройке локального окружения, майнеры пользуются ПО пула.

aeternityблокчейнмайнингнастройка
51%
337
12
0.643 GOLOS
0
В избранное
aeternity
аeternity - блокчейн-платформа, которая генерирует масштабируемые умные контракты, работающие с данными реального мира.
12
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (1)
Сортировать по:
Сначала старые