# Конфигурация ноды
Параметры ноды 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 включительно. Отрицательные значения игнорируются.
Подробнее см. в статье Монетарная политика, управляемая сообществом.