waves_logo Docs
  • Руководство владельца ноды
    Руководство владельца ноды
  • Установить ноду Waves
    • Развернуть ноду в Docker
      Развернуть ноду в Docker
    • Установить ноду на Ubuntu
      Установить ноду на Ubuntu
    • Установить ноду на macOS
      Установить ноду на macOS
    • Установить ноду на Windows
      Установить ноду на Windows
    • Установить из исходников (сборка SBT)
      Установить из исходников (сборка SBT)
    Установить ноду Waves
  • Синхронизировать блокчейн Waves
    • Импортировать и экспортировать блокчейн
      Импортировать и экспортировать блокчейн
    • Загрузить актуальный блокчейн
      Загрузить актуальный блокчейн
    • Откатить ноду
      Откатить ноду
    Синхронизировать блокчейн Waves
  • Генерировать блоки
    Генерировать блоки
  • Обновить ноду
    Обновить ноду
  • Конфигурация ноды
    Конфигурация ноды
  • Логирование
    Логирование
  • Кошелек ноды
    Кошелек ноды
  • Фичи
    • Протокол активации
      Протокол активации
    Фичи
  • Собственный блокчейн
    Собственный блокчейн
  • REST API ноды
    • API-ключ
      API-ключ
    • Работа с транзакциями
      Работа с транзакциями
    • Формат числовых полей
      Формат числовых полей
    • Постраничная выборка
      Постраничная выборка
    • CORS
      CORS
    • Ограничения пула публичных нод
      Ограничения пула публичных нод
    • Медленные запросы
      Медленные запросы
    • Коды ответов и ошибки
      Коды ответов и ошибки
    REST API ноды
  • Расширения
    • gRPC Server
      gRPC Server
    • Blockchain Updates
      Blockchain Updates
    Расширения
  • Устранение неполадок
    • Генерация блока FAQ
      Генерация блока FAQ
    Устранение неполадок
  • Нода на языке Go
    Нода на языке Go
      • English
      • Русский
      On this page
        • Обязательные параметры
        • Изменение настроек ноды
        • Секции файла конфигурации
          • Настройки Waves
          • Настройки базы данных
          • Настройки сети
          • Настройки кошелька
          • Настройки блокчейна
          • Настройки генератора блоков
          • Настройки REST API
          • Настройки синхронизации
          • Настройки UTX-пула
          • Настройки фич
          • Настройки вознаграждения
      waves_logo Docs

          # Конфигурация ноды

          Параметры ноды 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 для Mainnet
          6863 для Testnet
          6862 для 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 можно настроить параметры кошелька ноды.

          Имя Описание Значение по умолчанию
          file Путь к файлу кошелька ноды По умолчанию путь формируется относительно основного каталога приложения
          password Пароль для защиты файла кошелька ноды. "строка пароля"
          seed Секретная (seed) фраза в кодировке base58. Этот параметр используется для воссоздания существующего кошелька на новой ноде. Если у вас нет кошелька, закомментируйте этот параметр и запустите ноду. Во время первого запуска приложение создаст для вас новый кошелек со случайной секретной фразой. В этом случае секретная фраза будет отображаться в логе приложения. Если вы пропустили ее или не хотите проверять логи, секретную фразу можно получить с помощью метода GET wallet/seed Node REST API. "строка seed в BASE58"

          Внимание: кошелек является важнейшей частью вашей ноды. Лучше создать его файл в безопасном и защищенном месте. Не забудьте сделать резервную копию файла кошелька. Рекомендуется удалить секретную фразу из файла конфигурации сразу после запуска ноды. Если злоумышленник получит доступ к секретной фразе, он получит доступ к вашим средствам на всех ваших адресах!

          # Настройки блокчейна

          В секции 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 можно задать параметры генератора блоков.

          Имя Описание Значение по умолчанию
          enable Включение/выключение генерации блоков. По умолчанию генерация включена, но если ее выключить, то нода не будет генерировать новые блоки
          quorum Минимальное количество подключенных peer-нод, необходимое для генерации новых блоков По умолчанию задано значение 1. Это означает, что ваша нода начнет генерацию блоков, как только подключится к первой peer-ноде P2P-сети. Значение 0 включает офлайн-генерацию
          interval-after-last-block-then-generation-is-allowed Настройка загрузки и генерации блоков По умолчанию задано значение 1 день. Это означает, что ваша нода не начнет генерацию, если последний блок локального блокчейна старше 1 дня. Используя данный параметр, вы даете команду ноде актуализировать блокчейн перед началом генерации новых блоков. Это применимо только после длительных отключений ноды
          no-quorum-mining-delay Задержка попыток генерации блоков, если кворум недоступен 5s
          micro-block-interval Интервал между микроблоками 2s начиная с версии ноды 1.4.7
          5s до версии ноды 1.4.6 включительно
          max-transactions-in-micro-block Максимальное количество транзакций в микроблоке 255
          min-micro-block-age Генератор блока ссылается на лучший микроблок, который существует не менее указанного времени 2s
          minimal-block-generation-offset Минимальный оффсет генерации блока 0
          private-keys Закрытые ключи аккаунтов, которые будут генерировать блоки вместо основного аккаунта из кошелька ноды

          # Настройки 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 включительно. Отрицательные значения игнорируются.

          Подробнее см. в статье Монетарная политика, управляемая сообществом.

          Обновить ноду
          Логирование
          Обновить ноду
          Логирование