waves_logo Docs
  • Почему Waves
    Почему Waves
  • Основные понятия
    Основные понятия
  • Аккаунт
    • Создание аккаунта
      Создание аккаунта
    • Адрес
      Адрес
    • Баланс аккаунта
      Баланс аккаунта
    • Хранилище данных аккаунта
      Хранилище данных аккаунта
    • Псевдоним
      Псевдоним
    • dApp и смарт-аккаунт
      dApp и смарт-аккаунт
    Аккаунт
  • Токен (ассет)
    • NFT: невзаимозаменяемый токен
      NFT: невзаимозаменяемый токен
    • Смарт-ассет
      Смарт-ассет
    • ID токена
      ID токена
    • WAVES
      WAVES
    Токен (ассет)
  • Транзакция
    • Комиссия за транзакцию
      • Спонсирование комиссии
        Спонсирование комиссии
      Комиссия за транзакцию
    • Подпись и подтверждения
      Подпись и подтверждения
    • Типы транзакций
      • Вызов скрипта
        Вызов скрипта
      • Выпуск
        Выпуск
      • Генезис
        Генезис
      • Данные
        Данные
      • Довыпуск
        Довыпуск
      • Закрытие лизинга
        Закрытие лизинга
      • Лизинг
        Лизинг
      • Массовый перевод
        Массовый перевод
      • Обмен
        • Ордер
          Ордер
        Обмен
      • Обновление информации ассета
        Обновление информации ассета
      • Перевод
        Перевод
      • Сжигание токена
        Сжигание токена
      • Cоздание псевдонима
        Cоздание псевдонима
      • Спонсирование
        Спонсирование
      • Установка скрипта
        Установка скрипта
      • Установка скрипта ассета
        Установка скрипта ассета
      • Ethereum-like транзакция
        Ethereum-like транзакция
      Типы транзакций
    • Валидация транзакции
      Валидация транзакции
    Транзакция
  • Блок
    • Корневой хеш транзакций
      Корневой хеш транзакций
    • Блок генезиса
      Блок генезиса
    Блок
  • Нода
    • Лизинг
      Лизинг
    • Доход генератора блока
      Доход генератора блока
    • Монетарная политика
      Монетарная политика
    Нода
  • Mainnet, Testnet, Stagenet
    Mainnet, Testnet, Stagenet
  • Unit Zero
    Unit Zero
  • Оракул
    Оракул
  • Протоколы и форматы данных
    • [en] Cryptographic practical details
      [en] Cryptographic practical details
    • Leased Proof of Stake
      Leased Proof of Stake
    • [en] Waves-NG solution
      [en] Waves-NG solution
    • Протокол Waves-NG
      Протокол Waves-NG
    • Waves 1.5
      Waves 1.5
    • Типы данных блокчейна
      Типы данных блокчейна
    • Бинарные форматы
      • Бинарный формат адреса
        Бинарный формат адреса
      • Бинарный формат псевдонима
        Бинарный формат псевдонима
      • Бинарный формат блока
        Бинарный формат блока
      • [en] Network message binary format
        • [en] Block message binary format
          [en] Block message binary format
        • [en] Checkpoint message binary format
          [en] Checkpoint message binary format
        • [en] Get block message binary format
          [en] Get block message binary format
        • [en] Get peers message binary format
          [en] Get peers message binary format
        • [en] Get signatures message binary format
          [en] Get signatures message binary format
        • [en] Handshake message binary format
          [en] Handshake message binary format
        • [en] Peers message binary format
          [en] Peers message binary format
        • [en] Score message binary format
          [en] Score message binary format
        • [en] Signatures message binary format
          [en] Signatures message binary format
        • [en] Transaction message binary format
          [en] Transaction message binary format
        [en] Network message binary format
      • Бинарный формат ордера
        Бинарный формат ордера
      • Бинарный формат транзакции
        • Вызов скрипта
          Вызов скрипта
        • Выпуск
          Выпуск
        • Генезис
          Генезис
        • Данные
          Данные
        • Довыпуск
          Довыпуск
        • Лизинг
          Лизинг
        • Массовый перевод
          Массовый перевод
        • Обмен
          Обмен
        • Обновление информации ассета
          Обновление информации ассета
        • Отмена лизинга
          Отмена лизинга
        • Сжигание токена
          Сжигание токена
        • Cоздание псевдонима
          Cоздание псевдонима
        • Спонсирование
          Спонсирование
        • Перевод
          Перевод
        • Установка скрипта
          Установка скрипта
        • Установка скрипта ассета
          Установка скрипта ассета
        • Ethereum-like
          Ethereum-like
        Бинарный формат транзакции
      • Бинарный формат подтверждений
        Бинарный формат подтверждений
      Бинарные форматы
    • [en] Validation rules
      [en] Validation rules
    Протоколы и форматы данных
  • Термины
    Термины
      • English
      • Русский
      On this page
        • Генерация блоков
        • Ограничения
        • JSON-представление блока
        • Получение данных блока
        • Бинарный формат блока
      waves_logo Docs

          # Блок

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

          Заголовок блока содержит корневой хеш транзакций, который является доказательством того, что все транзакции присутствуют в блоке в заданном порядке. Заголовок блока также содержит хеш заголовка предыдущего блока в цепочке. Таким образом, все блоки в цепочке связаны с помощью криптографии. Это гарантирует целостность данных блокчейна: подмена данных в любом из блоков в истории сделала бы невалидными все последующие блоки, поэтому участники сети блокчейна отклонят подобные изменения.

          # Генерация блоков

          Генератором блоков может стать любая нода сети с балансом от 1000 WAVES — собственных или полученных в лизинг. Выбор генератора очередного блока осуществляется алгоритмом консенсуса Leased Proof of Stake (LPoS).

          Новые блоки появляются на блокчейне Waves в среднем раз в минуту, однако транзакция попадает на блокчейн в среднем через 2 секунды благодаря уникальному механизму Waves-NG. Генератор текущего блока продолжает добавлять в него транзакции из UTX pool — пула транзакций, ожидающих попадания в блок, — до тех пор, пока не появится следующий блок (или не будет достигнуто ограничение на размер и сложность блока).

          # Ограничения

          Максимальный размер блока — 1 Мбайт.

          Максимальная суммарная сложность скриптов в транзакциях блока — 2 500 000. Учитывается сложность всех исполняемых скриптов: скриптов dApp, аккаунтов и ассетов. (До активации фичи № 16 “Ride V5, dApp-to-dApp invocations” максимальная суммарная сложность скриптов составляла 1 000 000.)

          # JSON-представление блока

          REST API ноды предоставляет данные блока в формате JSON.

          Пример JSON-представления:

          {
            "version": 5,
            "timestamp": 1684931016547,
            "reference": "7sG6CU6ZS38V9VEDW5bgrCVcPeF9zFpoC6PNV7guRfp1",
            "nxt-consensus": {
              "base-target": 167,
              "generation-signature": "qm7dYre31XLfQtnKiF5PL2MYmyYvn3ZrqcdH94TkUkfBdVgTW5BxMAiwfHmywXX9yMhZE7H67snGiXq4LQaezPt5JV291Z9MTvPbNEDjtyHBxG216Xv69PcEug2Wpao7KyT"
            },
            "transactionsRoot": "6dxKpvH6mSXAXuyd2we3BhDoqDWRn7jpyP8kt1JcwncT",
            "id": "27b4mbGgxYe8bcqPQy1ddwcg2DoYKaeX356QpZjkrhAM",
            "features": [],
            "desiredReward": -1,
            "generator": "3PA1KvFfq9VuJjg45p2ytGgaNjrgnLSgf4r",
            "generatorPublicKey": "EFgn12TgFqn3cRthHnLAPr11g7urqchXEpjGspgLYskc",
            "stateHash": "Diz914FQYj6QUUhUoWByUyLrQKE8BaKCmtoiNZBzvbUu",
            "signature": "22m2xEzPgh1E29nKJJwJ6h7hoRxoLEQnE4Eh4Mcfyx4sTn3DEeBHMZ4Rda7jhGeTBUgcnNdtUmm3dzzMXb8aVsMg",
            "blocksize": 15265,
            "transactionCount": 25,
            "height": 3657525,
            "totalFee": 8900000,
            "reward": 600000000,
            "rewardShares": {
              "3PA1KvFfq9VuJjg45p2ytGgaNjrgnLSgf4r": 600000000
            },
            "VRF": "9YyxDdJdzGJ3aSPSZ2BP3HXU3JAj2wR2B9znGT7g5rre",
            "fee": 8900000,
            "transactions": [
                ...
             ]
            ]
          }
          
          Поле Описание
          version Версия блока: 5 для всех блоков с момента активации фичи № 15 “Ride V4, VRF, Protobuf, Failed transactions”
          timestamp Временная метка блока: Unix-время в миллисекундах.
          Когда нода получает новый блок из сети блокчейна, она проверяет, что временная метка блока не опережает текущее время более чем на 100 миллисекунд
          reference Идентификатор предыдущего блока
          nxt-consensus.base-target Параметр, который регулирует среднее время между блоками, приближая его к 60 секундам. Подробнее в разделе Leased Proof-of-Stake
          nxt-consensus.generation-signature Параметр, используемый при расчете времени, которое генератор должен выждать после предыдущего блока, прежде чем получит право выпустить свой блок. Подробнее в разделе Leased Proof-of-Stake
          transactionsRoot Корневой хеш транзакций блока (Merkle Root Hash). Является доказательством того, что все транзакции присутствуют в блоке в заданном порядке, поэтому достаточно подписывать только заголовок блока. Подробнее в разделе Корневой хеш транзакций
          id Идентификатор блока: хеш BLAKE2b-256 заголовка блока
          features Список идентификаторов фич, поддерживаемых генератором блока. Подробнее в разделе Протокол активации
          desiredReward Желаемый размер вознаграждения за блок, установленный генератором блока, в WAVELET. Если значение больше текущего размера вознаграждения, то блок голосует за увеличение вознаграждения; если меньше — за уменьшение. Значение по умолчанию -1 соответствует голосу за сохранение текущего размена вознаграждения. Подробнее в разделе Монетарная политика, управляемая сообществом
          generator Адрес генератора блока: байты в кодировке base58
          generatorPublicKey Открытый ключ генератора блока: байты в кодировке base58
          signature Цифровая подпись байтов заголовка блока, сформированная с использованием закрытого ключа генератора блока
          blocksize Размер блока в байтах
          transactionCount Количество транзакций в блоке
          height Высота (порядковый номер) блока
          totalFee Суммарная комиссия за транзакции в блоке, включая комиссию, указанную в спонсорских ассетах, в пересчете на WAVELET
          reward Вознаграждение за блок в WAVELET
          rewardShares Адреса получателей вознаграждения за блок и полученные суммы в WAVELET
          VRF Параметр, используемый при расчете времени, которое генератор должен выждать после предыдущего блока, прежде чем получит право выпустить свой блок. Подробнее в разделе Leased Proof-of-Stake
          fee Комиссия за транзакции в блоке без учета комиссии в спонсорских ассетах
          transactions Список транзакций, включенных в блок. Описание полей см. в разделе Транзакция
          stateHash Хеш изменений состояния блокчейна, порожденных транзакциями блока. Подробнее в разделе Waves 1.5: легкая нода.
          Поле доступно с момента активации фичи № 22 “Light Node”
          challenged_header Поля заголовка оспоренного блока, в случае если данный блок оспаривает другой. Подробнее в разделе Waves 1.5: легкая нода.
          Поле доступно с момента активации фичи № 22 “Light Node”

          # Получение данных блока

          Получить заголовок блока или блок целиком можно по его идентификатору или высоте (порядковому номеру):

          • В Waves Explorer .
          • С помощью методов REST API ноды .

          # Бинарный формат блока

          См. раздел Бинарный формат блока.

          Валидация транзакции
          Корневой хеш транзакций
          Валидация транзакции
          Корневой хеш транзакций