Описание основных параметров и секций конфигурационного файла ноды

Для параметров в конфигурационном файле применяется несколько типов значений:

  • Числовое значение, используемое для указания точного количества элементов. Это может быть количество транзакций, блоков, соединений.

  • Числовое значение с указанием единиц измерения, используемое для определения временного периода или объёма памяти. В таком виде, как правило, указываются временные периоды в днях, часах или секундах, или объём кэш-памяти, например, memory = 256M или connection-timeout = 30s.

  • Строковое значение, используемое для указания адресов, путей к директориям, паролям и т.д. Путь к директории указывается в формате, приемлемом для текущей ОС. Значение указывается в кавычках.

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

  • Логический тип no или yes, используемый для активации различных опций.

Пример конфигурационного файла приведен на странице подготовки конфигурационных файлов. В состав файла входят следующие секции:

  • node - общая секция, куда входят все секции и дополнительные параметры для настройки ноды.

  • synchronization.transaction-broadcaster - настройка параметров синхронизации для отправки неподтверждённых транзакций в блокчейн.

  • additional-cache - настройка параметров дополнительной кеш-памяти для временного хранения входящих блоков.

  • loggers - детализированная настройка логгеров.

  • ntp - настройка параметров NTP-сервера.

  • blockchain - настройка основных параметров блокчейна.

  • features - настройка дополнительных параметров ноды.

  • tls - включение и настройка TLS ноды.

  • network - сетевые настройки.

  • wallet - настройка доступа к закрытым ключам ноды.

  • miner - настройка майнинга.

  • api - настройка REST API/gRPC и типа авторизации.

  • privacy - настройка групп доступа к конфиденциальной информации.

  • docker-engine - настройка Docker смарт-контрактов.

Секция node

Дополнительные параметры секции:

  • waves-crypto - тип шифрования в блокчейне. Возможные значения: yes - выбор криптографии Waves, no - выбор ГОСТ-криптографии.

  • directory - основная директория для хранения ПО ноды.

  • data-directory - директория для хранения данных блокчейна в RocksDB: блоки, транзакции, стейт ноды.

  • logging-level - уровень логирования работы ноды. Возможные значения: DEBUG, INFO, WARN, ERROR, по умолчанию установлено значение INFO.

  • owner-address - адрес ноды, которая будет владельцем конфигурационного файла. Если владелец ноды будет начальным участником сети, то его адрес и публичный ключ должны быть в genesis блоке.

Секция synchronization.transaction-broadcaster

  • max-batch-size и max-batch-time – технические параметры, позволяющие регулировать скорость уменьшения очереди транзакций.

  • min-broadcast-count – минимальное число соединений, которые можно использовать для отправки каждой транзакции в блокчейн. Значение не должно превышать число нод в сети минус один (нода-отправитель в расчёт не принимается).

  • retry-delay – интервал повторной отправки транзакции, если количества текущих соединений не хватило, или произошли ошибки во время отправки.

  • extension-batch-size - количество блоков в серии, используемое для запроса расширения от пиров.

  • known-tx-cache-size - максимальное количество неподтверждённых транзакций в кеш-памяти.

  • known-tx-cache-time - максимальное время жизни неподтверждённых транзакций в кеш-памяти.

Секция additional-cache

  • rocksdb - параметры БД RocksDB:

    • max-cache-size - максимальный размер кеш-памяти.

    • max-rollback-depth - количество блоков, на которые ноду можно откатить в ручном режиме.

    • remember-blocks-interval-in-cache - период хранения блоков к кеш-памяти.

  • block-ids - параметры кеша для входящих блоков.

    • max-size - максимальный размер кеш-памяти.

    • expire-after - период, через который хранимые блоки удаляются из кеша.

Секция loggers

Секция предназначена для перечисления логгеров с заданным индивидуально уровнем логгирования. Список логгеров можно узнать при использовании метода GET /node​/logging. Логгеры указываются в следующем виде:

"com.wavesplatform.mining.MinerImplPoa": TRACE
    "com.wavesplatform.utx.UtxPoolImpl": DEBUG

Секция ntp

  • servers - список адресов NTP-серверов. Рекомендуемое значение - [ "0.pool.ntp.org", "1.pool.ntp.org", ... "10.pool.ntp.org" ].

  • request-timeout - таймаут для одного запроса на NTP-сервер. Рекомендуемое значение - 10 секунд.

  • expiration-timeout - таймаут синхронизации запросов к NTP-серверу. Рекомендуемое значение - 1 минута.

  • fatal-timeout - таймаут подключения к NTP-серверу. Рекомендуемое значение - 1 минута.

Секция blockchain

  • type - тип блокчейна. Возможные значения MAINNET или CUSTOM. Значение MAINNET позволяет использовать genesis-блок, консенсус и настройки сети Mainnet. При выборе значения MAINNET в конфигурационном файле ноды, которая подключается к сети Mainnet, не нужно указывать параметры блоков custom, genesis и consensus.

  • consensus.type - тип консенсуса в блокчейне. Возможные значения: pos, poa или cft. Вы можете подробно почитать о настройке консенсуса здесь.

Блок fees

  • enabled - опция использования комиссий за выпуск транзакций. Возможные значения false или true.

Блок custom

  • address-scheme-character - байт сети, для «Waves Enterprise Mainnet» - V, для «Waves Enterprise Partnernet» - P. Данный параметр используется для предотвращения конфликта адресов из разных сетей. Для сайдчейна или для тестовых версий блокчейн-платформы Waves Enterprise можно использовать любые буквы. Ноды в одной блокчейн-сети должны иметь одинаковый байт сети.

  • functionality - блок настройки основных параметров блокчейна.

  • genesis - блок настройки параметров генезис-блока.

Блок functionality

  • feature-check-blocks-period - количество блоков, через которые выполняется проверка и активация опций блокчейна.

  • blocks-for-feature-activation - количество блоков, через которые применяется активированная опция.

  • pre-activated-features - набор опций блокчейна.

Блок genesis

  • average-block-delay - средняя задержка создания блоков. Данный параметр используется для консенсуса PoS.

  • initial-base-target - начальное базовое число для регулирования процесса майнинга. Данный параметр используется для консенсуса PoS. От значения параметра зависит частота формирования блоков - чем больше значение, тем чаще создаются блоки. Также величина баланса майнера влияет на использование данного параметра в майнинге - чем больше баланс майнера, тем меньше становится значение initial-base-target для выбора ноды-майнера. При выставлении значения данному параметру рекомендуется учитывать комбинацию балансов майнеров и ожидаемый интервал между блоками.

  • block-timestamp - числовой код даты и времени. Время указывается в миллисекундах, значение должно состоять из 13 цифр. Если вы берёте стандартное значение timpstamp, состоящее из 10 цифр, то в конце необходимо добавить три любые цифры.

  • initial-balance - начальный баланс сети. Значение этого параметра влияет на процесс майнинга при PoS консенсусе. Чем больше баланс майнера, тем меньше становится значение initial-base-target для определения ноды-майнера текущего раунда.

  • genesis-public-key-base-58 - хеш публичного ключа генезис-блока, зашифрованный в Base58.

  • signature - подпись генезис-блока, зашифрованная в Base58.

  • transactions - список участников сети с первоначальным балансом, создание которых войдёт в генезис-блок в виде генезис-транзакций.

  • network-participants - список сетевых участников с ролями, создание которых войдёт в генезис-блок в виде генезис-транзакций.

Секция tls

Секция предназначена для работы с TLS в ноде.

  • type - состояние режима TLS. Возможные опции: DISABLED (отключен, в этом случае остальные опции не указываются или комментируются) и EMBEDDED (включен, сертификат подписывается провайдером ноды и упаковывается в JKS-файл (keystore) - при этом директория, в которой располагается сертификат, и параметры доступа к сертификату и keystore указывается пользователем вручную в последующих полях).

  • keystore-path - относительный путь к keystore, размещаемому в директории ноды: ${node.directory}"/we_tls.jks".

  • keystore-password - пароль для keystore.

  • private-key-password - пароль для приватного ключа.

Для работы с TLS, помимо его включения в конфигурационном файле ноды, необходимо получить файл keystore при помощи стандартной утилиты keytool:

keytool \
 -keystore we.jks -storepass 123456 -keypass 123456 \
 -genkey -alias we -keyalg RSA -validity 9999 \
 -dname "CN=Waves Enterprise,OU=security,O=WE,C=RU" \
 -ext "SAN=DNS:welocal.dev,DNS:localhost,IP:51.210.211.61,IP:127.0.0.1"
  • keystore - имя файла keystore.

  • storepass - пароль от keystore, указывается в конфиге в секции keystore-password.

  • keypass - пароль от приватного ключа, указывается в конфиге в секции private-key-password.

  • alias - произвольное имя.

  • keyalg - алгоритм генерации ключевой пары.

  • validity - срок действия в днях.

  • dname - уникальное имя по стандарту X.500, свзанное с alias в keystore.

  • ext - расширения, применяемые при генерации ключа, указываются все возможные имена хостов и IP-адреса для работы сертификата в различных сетях.

В результате работы keytool будет получен keystore с именем we.jks. Чтобы подключиться к ноде с включенным TLS, также необходимо выпустить клиентский сертификат:

keytool -export -keystore we.jks -alias we -file we.cert

Полученный файл сертификата we.cert необходимо импортировать в хранилище доверенных сертификатов. При работе ноды в одной сети с пользователем достаточно указать относительный путь к файлу we.jks в файле конфигурации ноды, как это показано выше.

В случае, если нода находится в другой сети, импортируйте сертификат we.cert в keystore:

keytool -importcert -alias we -file we.cert -keystore we.jks

Затем также укажите относительный путь к we.jks в файле конфигурации ноды.

Секция network

  • bind-address - сетевой адрес ноды.

  • port - номер порта.

  • known-peers - список известных сетевых адресов нод. Этот параметр должен быть обязательно заполнен. Список адресов передаётся пользователю администратором сети до подключения новой ноды.

  • declared-address - сетевой адрес ноды вместе с номером порта для процедуры handshake.

  • max-simultaneous-connections - максимальное количество одновременно поддерживаемых соединений. Параметр ограничен количеством нод в блокчейне, т.е. максимальное количество одновременных соединений будет не больше числа нод в сети.

  • peers-request-interval - интервал запроса списка пиров. Значение указывается в секундах или минутах. Рекомендуемое значение - 1-2 минуты.

  • attempt-connection-delay - интервал запроса на подключение к любому из известных ноде пиров.

Секция wallet

  • file - директория для хранения приватных ключей.

  • password - пароль для доступа к файлу с приватными ключами.

Секция miner

  • enable - активация опции майнинга.

  • quorum - необходимое количество нод-майнеров для создания блока. Значение 0 позволит генерировать блоки оффлайн. При указании значения необходимо учитывать, что собственная нода-майнер не суммируется со значением этого параметра, т.е., если вы указываете quorum = 2, то для майнинга нужно минимум 3 ноды-майнера.

  • interval-after-last-block-then-generation-is-allowed - создание блока только в том случае, если последний блок не старше указанного периода времени.

  • micro-block-interval - интервал между микроблоками.

  • min-micro-block-age - минимальный возраст микроблока.

  • max-transactions-in-micro-block - максимальное количество транзакций в микроблоке.

  • minimal-block-generation-offset - минимальный временной интервал между блоками.

Секция features

  • supported - список поддерживаемых опций.