# Конфигурация ноды
Параметры ноды Waves находятся в файле конфигурации (*.conf). Система использует формат HOCON (Human-Optimized Config Object Notation), который обеспечивает простой синтаксис и возможность использовать комментарии. Подробнее про HOCON.
В случае установки ноды из APT-репозитория или из DEB-пакета файл конфигурации вложен в пакет, см. раздел Установить ноду на Ubuntu. В случае установки ноды из JAR-файла скачайте образец файла конфигурации waves-sample.conf.
# Обязательные параметры
В большинстве случаев, например, при установке новой ноды с нуля, достаточно задать следующие обязательные параметры, описывающие уникальные характеристики вашей ноды, а также тип блокчейна:
- waves.wallet.seed — если требуется, чтобы нода генерировала блоки или подписывала транзакции от имени конкретного аккаунта;
- waves.wallet.password;
- waves.rest-api.api-key-hash (для использования API ноды);
- waves.blockchain.type.
Для остальных параметров рекомендуем оставить значения по умолчанию.
# Изменение настроек ноды
После редактирования файла конфигурации перезапустите ноду.
В случае установки ноды из JAR-файла укажите в команде запуска путь к измененному файлу конфигурации (замените {*} на реальное имя файла):
java -jar {*}.jar {*}.conf
# Секции файла конфигурации
Файл конфигурации ноды содержит параметры, сгруппированные в следующие секции:
| Секция | Описание |
|---|---|
| waves | Основные параметры ноды и вложенные секции |
| db | Параметры базы данных блокчейна |
| network | Параметры сети P2P |
| wallet | Параметры встроенного кошелька ноды |
| blockchain | Параметры блокчейна |
| miner | Параметры генератора блока |
| rest-api | Параметры API ноды |
| synchronization | Параметры синхронизации ноды |
| utx | Параметры пула неподтвержденных транзакций |
| features | Параметры фич |
| rewards | Параметры вознаграждений |
| extensions | Параметры расширений |
| kamon | Параметры метрик производительности |
| metrics | Параметры метрик блоков, транзакций и др. информации |
# Настройки Waves
Корневая секция waves содержит базовые параметры ноды и вложенные секции.
С помощью параметра enable-light-mode можно включать и выключать легкий режим. В легком режиме нода применяет готовые снапшоты вместо валидации транзакций, что позволяет значительно ускорить обработку блоков. Значение по умолчанию — no. Легкий режим доступен с момента активации фичи № 22 “Light Node”.
С помощью параметра directory можно назначить путь к основному каталогу приложения. В настройках параметров конфигурации можно использовать переменные среды (environment variables). Пожалуйста, не заключайте переменные среды в кавычки: в этом случае они будут обработаны как строки и не будут применены.
Убедитесь, что для выбранного каталога корректно указан владелец: waves, waves-testnet или waves-stagenet для Mainnet, Testnet или Stagenet.
# Основной каталог приложения по умолчанию
Следующие пути используются по умолчанию, если параметр directory не задан в файле конфигурации.
Для нод, установленных из deb-пакета:
| *nix | |
|---|---|
| Mainnet | /var/lib/waves |
| Testnet | /var/lib/waves-testnet |
| Stagenet | /var/lib/waves-stagenet |
Для ноды, установленной из JAR-файла, в зависимости от операционной системы и типа блокчейна:
| *nix | macOS | Windows | |
|---|---|---|---|
| Mainnet | $XDG_DATA_HOME/waves-mainnet или $HOME/.local/share/waves-mainnet | $HOME/Library/Application Support/waves-mainnet | %LOCALAPPDATA%/waves-mainnet |
| Testnet | $XDG_DATA_HOME/waves-testnet или $HOME/.local/share/waves-testnet | $HOME/Library/Application Support/waves-testnet | %LOCALAPPDATA%/waves-testnet |
| Stagenet | $XDG_DATA_HOME/waves-stagenet или $HOME/.local/share/waves-stagenet | $HOME/Library/Application Support/waves-stagenet | %LOCALAPPDATA%/waves-stagenet |
| Custom | $XDG_DATA_HOME/waves-custom-<character>* или $HOME/.local/share/waves-custom-<character>* | $HOME/Library/Application Support/waves-custom-<character>* | %LOCALAPPDATA%/waves-custom-<character>* |
* См. описание параметра address-scheme-character в секции Настройка собственного блокчейна.
Примечание: необходимо указать количество байт для установки параметра размера кэша. Но вы можете использовать единицы измерения:
- K — килобайт
- M — мегабайт
- G — гигабайт
# Настройки базы данных
В секции DB можно настроить параметры базы данных.
| Имя | Описание | Значение по умолчанию |
|---|---|---|
directory | Задает путь к базе данных. | ${waves.directory}"/data" Путь определяется относительно параметра directory в секции waves. |
store-transactions-by-address | Данный параметр позволяет сохранять транзакции в базе данных по адресам. Если выключить, то вы не сможете получать информацию от ноды. | true |
store-invoke-script-results | Данный параметр позволяет сохранять изменения состояния базы данных. Если выключить, то вы не сможете получить информацию об изменениях состояния базы данных. | true |
max-cache-size | Ограничивает размер кэшей во время валидации блоков. Уменьшение значения слегка уменьшит использование памяти. Увеличение значения может повысить производительность ноды. Если задать 0, то кэширование отключится. | 100000 |
max-rollback-depth | По умолчанию нода может производить rollback до 2000 блоков без сборки базы данных блокчейна. С помощью данного параметра можно изменить стандартный лимит. | 2000 |
use-bloom-filter | Включение bloom фильтра позволяет ускорить импорт блокчейна. Этот параметр должен быть отключен при обычной работе ноды. | false |
store-state-hashes | Данный параметр активирует API метод /debug/stateHash/{height} | false |
# Настройки сети
В секции network можно настроить параметры сети P2P.
| Имя | Описание | Значение по умолчанию |
|---|---|---|
file | Путь базы данных, где нода хранит списки известных и занесенных в черный список peer-нод | ${waves.directory}"/peers.dat По умолчанию путь формируется относительно основного каталога приложения, заданного параметром directory в секции waves. |
declared-address | IP адрес и порт (address:port), который передается во время рукопожатия (handshake).• Может быть задан автоматически, если UPnP включен. Если declared-address не задан и UPnP включен, нода попытается подключиться к IGD (Internet Gateway Device), получить его внешний IP адрес и настроить шлюз для передачи трафика. Если у ноды это получится, то внешний IP адрес IGD будет задан в качестве значения параметра declared-address.• Если declared-address задан, а UPnP выключен, нода будет принимать входящие подключения на bind-address:port и передавать заданный declared-address пирам.• Если declared-address не задан и UPnP выключен, нода не будет принимать входящие подключения.• В некоторых случаях, хотя такой тип настройки не рекомендуется использовать, вы можете задать declared-address и включить UPnP (например когда IGD не может определить свой внешний IP адрес), чтобы нода попыталась настроить IGD для передачи трафика с внешнего порта на bind-address:port. | |
bind-address | IP-адрес локального сетевого интерфейса, на котором нода будет принимать входящие соединения | По умолчанию нода привязана к 0.0.0.0: это значит, что она будет принимать соединения на всех доступных сетевых адаптерах. |
port | Номер сетевого порта, к которому будут подключаться другие ноды Waves. Убедитесь, что порт доступен извне, иначе ваша нода будет подключаться к сети P2P только через исходящие соединения. Если этот порт занят другим приложением, ваша нода не запустится. | 6868 для Mainnet6863 для Testnet6862 для Stagenet |
node-name | Имя вашей ноды, видимое для других участников P2P-сети. Передается во время первоначального рукопожатия (handshake) | Генерируется случайным образом в формате Node-${random-nonce} |
nonce | Значение, которое отправляется во время рукопожатия. Используется для различения нод, подключенных с одного IP-адреса | Генерируется случайным образом |
known-peers | Список peer-нод, к которым ваша нода будет устанавливать исходящие соединения при инициализации. | |
peers-data-residence-time | Время, в течение которого нода хранит информацию о peer-ноде с момента последнего сеанса связи с ней. | 1d |
black-list-residence-time | Время, в течение которого нода хранит информацию о peer-ноде, помещенной в черный список. | 15m |
break-idle-connections-timeout | Разрывать соединение, если от peer-ноды не поступило ни одного сообщения в течение указанного времени | 5m |
max-inbound-connections | Максимальное количество одновременных входящих соединений, обрабатываемых нодой. | 100 |
max-outbound-connections | Максимальное количество исходящих сетевых подключений. | 100 |
max-single-host-connections | Разрешенное количество сетевых подключений с одного IP-адреса. | 3 |
connection-timeout | Таймаут сетевого подключения. | 30s |
max-unverified-peers | Максимальный размер буфера для хранения информации о peer-нодах во время процесса установления связи. | 100 |
enable-peers-exchange | Включение/отключение запрашивания и отправки информации о peer-нодах. | yes |
enable-blacklisting | Включение/отключение черного списка peer-нод. | yes |
peers-broadcast-interval | Интервал между передачей списка известных peer-нод на другие ноды. | 2m |
handshake-timeout | Время ожидания ответа при рукопожатии. В случае отсутствия ответа peer-нода будет занесена в черный список. | 30s |
upnp | Секция с параметрами UPnP. Эти настройки полезны только в том случае, если вы запускаете свою ноду в сети, где она может попросить маршрутизатор (Internet Gateway Device) установить туннель. | По умолчанию эта функция отключена. Для включения задайте значение yes для параметра enable. |
traffic-logger | Включение/отключение логирования некоторых входящих или исходящих сетевых сообщений. Сетевые сообщения регистрируются на уровне TRACE. |
Примечание: все параметры с промежутками времени задаются в миллисекундах либо с использованием единиц измерения:
- s — секунды
- m — минуты
- h — часы
- d — дни
Примеры значений можно посмотреть в списке настроек по умолчанию (не копируйте этот файл и не используйте его в качестве файла конфигурации для своей ноды).
# Настройки кошелька
В секции wallet можно настроить параметры кошелька ноды.
Внимание: кошелек является важнейшей частью вашей ноды. Лучше создать его файл в безопасном и защищенном месте. Не забудьте сделать резервную копию файла кошелька. Рекомендуется удалить секретную фразу из файла конфигурации сразу после запуска ноды. Если злоумышленник получит доступ к секретной фразе, он получит доступ к вашим средствам на всех ваших адресах!
# Настройки блокчейна
В секции blockchain можно задать тип блокчейна или настроить собственный (custom) блокчейн.
| Имя | Описание | Значение по умолчанию |
|---|---|---|
type | Тип блокчейна: TESTNET, MAINNET, STAGENET или CUSTOM. Для MAINNET, TESTNET и STAGENET параметры блокчейна встроены в приложение, поэтому дополнительная настройка не требуется. См. стандартные параметры для различных типов блокчейна. При выборе сети CUSTOM необходимо задать параметры в секции custom | TESTNET |
# Настройка собственного (custom) блокчейна
Секция custom позволяет задать параметры собственного блокчейна.
| Имя | Описание | Значение по умолчанию |
|---|---|---|
address-scheme-character | Символ, используемый при создании адреса, а также для передачи по сети во время рукопожатия, что позволяет нодам не подключаться к нодам из других сетей блокчейна | |
functionality | Секция настроек функциональности блокчейна. Описание основных настроек приведено ниже, для остальных рекомендуем оставить значения по умолчанию | |
genesis | Секция параметров блока генезиса. Описание приведено ниже | |
rewards | Секция c начальным размером вознаграждения за блок и настройками голосования за его изменение (см. раздел Монетарная политика, управляемая сообществом) |
# Настройки функциональности
| Имя | Описание | Значение по умолчанию |
|---|---|---|
feature-сheck-blocks-period | Количество блоков, составляющих период голосования за новую фичу, а также период от утверждения до активации (см. раздел Протокол активации) | 10000 |
blocks-for-feature-activation | Количество блоков с поддержкой фичи, необходимое для ее утверждения | 9000 |
max-transaction-time-back-offset | Допустимое время, на которое временная метка транзакции может отставать от временной метки блока | 120m |
max-transaction-time-forward-offset | Допустимое время, на которое временная метка транзакции может опережать временную метку блока | 90m |
pre-activated-features | Список активированных фич с высотой активации каждой фичи (см. раздел Фичи) | |
dao-address,xtn-buyback-address | Адреса, на которые будет зачисляться доля вознаграждения за блок (подробнее о распределении вознаграждения за блок — в разделе Монетарная политика, управляемая сообществом). Если адрес (или оба) не указан, соответствующую долю вознаграждения получает генератор блока |
# Параметры блока генезиса
| Имя | Описание | Значение по умолчанию |
|---|---|---|
block-timestamp | Дата и время создания блока генезиса | |
timestamp | Дата и время создания транзакций генезиса | |
signature | Подпись блока генезиса | |
initial-balance | Первоначальное количество токенов. Это значение следует задавать в атомарных единицах токена | |
average-block-delay | Скорость генерации блока в блокчейне. Это целевой период времени между блоками. На самом деле задержки между блоками могут варьироваться | |
transactions | Список первых транзакций. Каждая транзакция содержит адрес получателя в кодировке base58 и количество токена. Весь начальный баланс нужно распределить по одному или нескольким адресам в блоке генезиса. Если вы этого не сделали, блок генезиса будет считаться некорректным и приложение не запустится |
# Настройки генератора блоков
В секции miner можно задать параметры генератора блоков.
# Настройки REST API
Секция rest-api файла конфигурации ноды содержит настройки REST API ноды.
| Имя | Описание | Значение по умолчанию |
|---|---|---|
enable | Активирует REST API. Для деактивации REST API укажите значение no | yes |
bind-address | Cетевой адрес, по которому REST API будет принимать входящие подключения. Примечание: не рекомендуется менять значение по умолчанию. Чтобы предоставить внешний доступ к API вашей ноды, используйте Nginx’s proxy pass module или SSH port forwarding | "127.0.0.1" |
port | Номер порта, через который REST API будет ожидать подключения | 6869 |
api-key-hash | Хеш API-ключа для доступа к приватным методам. Подробнее | "" |
cors-headers | Секция с настройками кросс-доменных запросов. Подробнее в разделе CORS: поддержка кросс-доменных запросов. Описание настроек см. ниже | Если секция отсутствует, запросы к API ноды разрешены веб-приложениям любых доменов |
transactions-by-address-limit | • Максимальное значение limit в запросе к /transactions/address/{address}/limit/{limit}• Максимальное количество ID транзакций в запросе к /transactions/status и /transactions/merkleProof | 1000 |
distribution-address-limit | Максимальное значение limit в запросе к /assets/{assetId}/distribution/{height}/limit/{limit} | 1000 |
data-keys-request-limit | Максимальное количество ключей в запросе к /addresses/data/{address} | 1000 |
asset-details-limit | Максимальное количество ID токенов в запросе к /assets/details и /assets/balance/{address} | 100 |
blocks-request-limit | • Максимальный диапазон {from}-{to} в запросе к /blocks/address/{address}/{from}/{to}, /blocks/seq/{start}/{end} и /blocks/headers/seq/{start}/{end} | 100 |
evaluate-script-complexity-limit | Максимальная сложность выражения в /utils/script/evaluate/{address} | 52 000 |
limited-pool-threads | Максимальное количество потоков, которые обрабатывают запросы к /utils/script/compile*, /utils/script/decompile, /utils/script/estimate (время обработки каждого запроса ограничено) | 2 |
minimum-peers | Минимальное количество подключенных peer-нод, необходимое для приема транзакций через gRPC или REST API (метод broadcast). Если количество подключенных нод меньше указанного, нода отбрасывает транзакции, поступающие через API | 1 |
# Настройки CORS
| Имя | Описание | Значение по умолчанию |
|---|---|---|
access-control-allow-headers | HTTP-заголовки, которые разрешено использовать в кросс-доменном запросе | [ "Authorization", "Content-Type", "X-Requested-With", "Timestamp", "Signature" ] |
access-control-allow-origin | Домен, с которого разрешен доступ к REST API | "origin-from-request"Это означает, что нода передает в HTTP-заголовке Access-control-allow-origin домен, указанный в запросе в заголовке Origin. Таким образом, по умолчанию разрешен доступ с любых доменов |
access-control-allow-methods | Разрешенные методы HTTP | ["OPTIONS", "POST", "PUT", "GET", "DELETE"] |
access-control-allow-credentials | Следует ли предоставлять ответ JavaScript-коду приложения, если в качестве режима учетных данных запроса используется include | yes |
# Настройки синхронизации
В секции synchronization можно настроить различные параметры процесса синхронизации.
| Имя | Описание | Значение по умолчанию |
|---|---|---|
max-rollback | Количество блоков, которые будут сброшены в случае обнаружения форка. Если нода обнаружит форк с более низким score, она попытается переключиться на другой форк, для этого нода откатится на несколько блоков. Если обнаруженный форк длиннее заданного значения параметра, нода не будет переключаться, даже если score другого форка выше | 100 |
synchronization-timeout | Таймаут операции загрузки блока | 60s |
score-ttl | Интервал time-to-live публикуемых пакетов score | 90s |
history-replier | Во вложенной секции можно задать количество последних блоков и микроблоков, которые будут кэшироваться в памяти | |
micro-block-synchronizer | Во вложенной секции можно задать различные параметры протокола Waves-NG | 2s |
# Настройки UTX-пула
В секции utx можно настроить параметры пула неподтвержденных транзакций.
| Имя | Описание | Значение по умолчанию |
|---|---|---|
max-size | Размер пула неподтвержденных транзакций (как скриптованных, так и не скриптованных) | 100000 |
max-scripted-size | Размер пула неподтвержденных скриптованных транзакций. До версии ноды 1.1.6 транзакции вызова скрипта не учитывались (учитывались транзакции, для валидации которых требуется выполнить смарт-контракт) | 5000 |
max-transaction-age | Задает максимальную давность транзакций. Более старые транзакции не будут допускаться в UTX-пул |
# Настройки фич
Секция features задает параметры работы с фичами
| Имя | Описание | Значение по умолчанию |
|---|---|---|
auto-shutdown-on-unsupported-feature | Если этот параметр включен, нода будет остановлена при активации фичи, которая не поддерживается нодой. | yes |
supported | Список идентификаторов фич, поддерживаемых владельцем ноды. | По умолчанию список пуст. |
Пример:
waves {
...
features {
auto-shutdown-on-unsupported-feature = yes
supported = [20]
}
}
# Настройки вознаграждения
В данной секции вы можете указать желаемый размер вознаграждения за генерацию блоков в параметре desired. Значение указывается в WAVELET.
Если значение больше текущего размера вознаграждения, то генератор блоков голосует за увеличение вознаграждения; если меньше — за уменьшение.
Пример: желаемый размер вознаграждения 7 WAVES:
waves {
...
rewards {
desired = 700000000
}
}
В качестве значения может быть указано любое целое число в диапазоне от 0 до 9 223 372 036 854 775 807 включительно. Отрицательные значения игнорируются.
Подробнее см. в статье Монетарная политика, управляемая сообществом.