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_logo Docs

          # Протокол активации

          # Фичи

          Новая версия программного обеспечения Waves содержит новые фичи (features), которые должны быть активированы многими нодами одновременно. Раньше функции активировались по временным отметкам, и это ставило владельцев нод в жесткие рамки по срокам проведения обновления.Неспособность обновить ноду вовремя приводила к непреднамеренным форкам. Протокол активации дает сообществу Waves возможность применять новые фичи в своем темпе или совсем не применять некоторые из них.

          # Идентификация фич

          Каждая новая фича имеет уникальный идентификатор — порядковый номер. Список новых фич с номерами обычно представлен в новом релизе.

          Новые фичи поставляются с новыми версиями программного обеспечения ноды. До активации новых фич разные версии могут работать одинаково. После активации фич сеть делится на две части: ноды, которые поддерживают эту функцию, и ноды, которые этого не делают.

          # Статусы фич в блокчейне

          Статус фичи хранится в блокчейне. Первоначальный статус фичи — Voting, которое затем может измениться на Approved — это означает, что фича получила необходимое количество голосов от генераторов блоков. По истечении определенного периода (количества блоков) фича в статусе Approved получает статус Activated. С этого момента (блока) ноды, которые поддерживают эту фичу, начинают работать по-новому.

          # Голосование

          Голосование осуществляется нодами, которые генерируют блоки. Если генератор блоков поддерживает фичу и хочет проголосовать за нее, он должен указать номер фичи в списке поддерживаемых фич в разделе features файла конфигурации ноды. После этого каждый блок, сгенерированный этой нодой, будет содержать номера поддерживаемых фич. Подробнее о разделе features в файле конфигурации ноды см. в подразделе Настройки фич статьи Конфигурация ноды.

          Каждые 10 000 блоков на Mainnet, в диапазоне высоты с N × 10 000 + 1 по (N + 1) × 10 000 включительно, нода суммирует количество блоков с поддержкой фичи. Если фича поддерживается не менее чем в 80% блоков в этом диапазоне, она становится утвержденной. В противном случае голосование продолжается и может занять другой период голосования или более.

          ⚠️ См. условия голосования на Testnet и Stagenet.

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

          # Активация

          Прежде чем утвержденная фича будет активирована, должны быть сгенерированы еще 10 000 блоков. Этот период предназначен для обновления нод до новой версии. Таким образом, активация происходит на высоте (N + 2) × 10 000. Валидация транзакций в этом блоке выполняется уже с учетом того, что фича активирована.

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

          # Пример

          Допустим, в версии 1.0.0 была введена новая фича № 123.

          Генерирующий пул SuperMiners с общей долей владения 40% поддерживает фичу. Администратор SuperMiners обновляет ноду с версии 0.9.9 до 1.0.0 и добавляет 123 в список поддерживаемых фич в файле конфигурации. Нода SuperMiners начинает добавлять номер фичи 123 в каждый сгенерированный блок, начиная с высоты 1228765. Другие майнеры не поддержали фичу, и только некоторые из них обновили ноды до версии 1.0.0.

          На блоке номер 1230000 ноды посчитали, что только 50% блоков поддерживают фичу 123. Таким образом, статус фичи остается неизменным, голосование за этот период не увенчалось успехом и, следовательно, продолжается.

          В течение следующих 10 000 блоков SuperMiners убедили некоторых майнеров поменьше поддержать эту фичу. На блоке 1240000 оказывается, что функция поддерживается в 9102 из последних 10 000 блоков, то есть в 91%. Таким образом, фича становится утвержденной. В этот момент ноды версии 0.9.9 и более ранних предупреждают своих владельцев об утверждении неподдерживаемой фичи.

          На момент генерации 1250000 блока фича 123 будет активирована и ее начнут использовать ноды версии 1.0.0 и выше. Ноды более ранних версий перестанут работать.

          Фичи
          Собственный блокчейн
          Фичи
          Собственный блокчейн