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
        • Версия 4
        • Версия 3
        • JSON-представление ордера версии 3
        • Ордер версии 2
        • Ордер версии 1
      waves_logo Docs

          # Бинарный формат ордера

          Подробнее об ордере читайте на странице Ордер.

          В транзакции обмена версии 3 могут использоваться версии 4, 3, 2 и 1 ордера.

          В транзакции обмена версии 2 могут использоваться версии 3, 2 и 1 ордера.

          В транзакции обмена версии 1 может использоваться только версия 1 ордера.

          # Версия 4

          Бинарный формат ордера версии 4 соответствует protobuf-схеме order.proto . См. Protocol Buffers Developer Guide .

          Версия 4 появилась с момента активации фичи № 15 “Ride V4, VRF, Protobuf, Failed transactions”.

          message AssetPair {
              bytes amount_asset_id = 1;
              bytes price_asset_id = 2;
          };
          
          message Order {
              enum Side {
                  BUY = 0;
                  SELL = 1;
              };
          
              enum PriceMode {
                  DEFAULT = 0;
                  FIXED_DECIMALS = 1;
                  ASSET_DECIMALS = 2;
              };
          
              int32 chain_id = 1;
              bytes matcher_public_key = 3;
              AssetPair asset_pair = 4;
              Side order_side = 5;
              int64 amount = 6;
              int64 price = 7;
              int64 timestamp = 8;
              int64 expiration = 9;
              Amount matcher_fee = 10;
              int32 version = 11;
              repeated bytes proofs = 12;
              PriceMode price_mode = 14;
              bytes attachment = 15;
          
              oneof sender {
                  bytes sender_public_key = 2;
                  bytes eip712_signature = 13;
              }
          };
          
          message Amount {
              bytes asset_id = 1;
              int64 amount = 2;
          };
          
          Поле Размер Описание
          chain_id 1 байт Байт сети
          matcher_public_key 32 байта Открытый ключ матчера
          asset_pair.amount_asset_id • 32 байта для ассета
          • 0 для WAVES
          ID amount-ассета
          asset_pair.price_asset_id • 32 байта для ассета
          • 0 для WAVES
          ID price-ассета
          order_side 1 байт Тип ордера: покупка или продажа
          amount 8 байт Количество amount-ассета в минимальных единицах («копейках»)
          price 8 байт Стоимость 1 amount-ассета, выраженная в price-ассете, умноженная на
          • 108 для ордера версии 4 с атрибутом priceMode = DEFAULT или priceMode = FIXED_DECIMALS;
          • 108 + priceAssetDecimals – amountAssetDecimals для ордера версии 4 с атрибутом priceMode = ASSET_DECIMALS, где amountAssetDecimals и priceAssetDecimals — количество знаков после запятой у amount- и price-ассета соответственно (параметр токена)
          timestamp 8 байт Временная метка ордера: Unix-время в миллисекундах
          expiration 8 байт Окончание срока действия ордера: Unix-время в миллисекундах
          matcher_fee.asset_id • 32 байта для ассета
          • 0 для WAVES
          ID токена, в котором выражена комиссия матчера
          matcher_fee.amount 8 байт Комиссия матчера
          version 1 байт Версия ордера: 4
          proofs Размер каждого подтверждения — до 64 байт,
          до 8 подтверждений
          Подтверждения ордера, используемые для проверки валидности
          price_mode 1 байт Способ расчета значения в поле price. Поле доступно с момента активации фичи № 17 “Ride V6, MetaMask support”
          sender • 32 байта для ордера с подписью Waves
          • 65 байт для ордера с подписью пользователя MetaMask
          • Для ордера с подписью Waves: открытый ключ отправителя ордера
          • Для ордера с подписью пользователя MetaMask: подпись ECDSA отправителя ордера. Поддержка MetaMask доступна c момента активации фичи № 17 “Ride V6, MetaMask support”. Подробнее в разделе Подписание транзакций и ордеров в MetaMask
          attachment 1024 байт Произвольные данные.
          Поле доступно с момента активации фичи № 22 “Light Node”

          # Версия 3 

          Порядковый номер поля Название поля Название JSON-поля Тип поля Размер поля в байтах Значение
          1 Номер версии бинарного формата ордера version Byte 1 Значение должно быть равно 3
          2 Открытый ключ отправителя ордера senderPublicKey Array[Byte] 32
          3 Открытый ключ матчера matcherPublicKey Array[Byte] 32
          4.1 Флаг токена Б (amount asset) Byte 1 Если токен WAVES, то значение 0, иначе — 1
          4.2 ID токена Б (amount asset) amountAsset Array[Byte] S Если токен не WAVES, то S = 32, иначе — поле не должно присутствовать в бинарном формате
          5.1 Флаг токена А (price asset) Byte 1 Если токен WAVES, то значение 0, иначе — 1
          5.2 ID токена А (price asset) priceAsset Array[Byte] S Если токен не WAVES, то S = 32, иначе — поле не должно присутствовать в бинарном формате
          6 Тип ордера orderType Byte 1 Если ордер на покупку, то значение 0, если на продажу — 1
          7 Количество токена Б (amount asset), которое отправитель ордера предлагает за один токен А price Long 8 байты в формате big-endian
          8 Количество токена А (price asset), которое отправитель ордера хочет купить или продать в зависимости от типа ордера amount Long 8 байты в формате big-endian
          9 Количество миллисекунд с начала эпохи Unix до момента валидации ордера матчером timestamp Long 8 байты в формате big-endian
          10 Количество миллисекунд с начала эпохи Unix до момента отмены невыполненного ордера expiration Long 8 байты в формате big-endian
          11 Комиссия матчера matcherFee Long 8 байты в формате big-endian
          12 Флаг токена комиссии матчера Byte 1 Если токен WAVES, то значение 0, иначе — 1
          13 Токен комиссии матчера matcherFeeAssetId Array[Byte] F Если токен комиссии не WAVES, то F = 32, иначе — поле не должно присутствовать в бинарном формате
          14 Подтверждения proofs Array[Подтверждение] S Если массив пустой, то S = 3.
          Если массив не пустой, то S = 3 + 2 × N + (P1 + P2 + ... + Pn),
          где
          N — количество подтверждений в массиве,
          Pn — размер N-го подтверждения в байтах.
          Максимальное количество подтверждений в массиве — 8. Максимальный размер каждого подтверждения — 64 байта

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

          {
            "version": 3,
            "senderPublicKey": "FMc1iASTGwTC1tDwiKtrVHtdMkrVJ1S3rEBQifEdHnT2",
            "matcherPublicKey": "7kPFrHDiGw1rCm7LPszuECwWYL3dMf6iMifLRDJQZMzy",
            "assetPair": {
              "amountAsset": "BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa",
              "priceAsset": null
            },
            "orderType": "buy",
            "amount": 150000000,
            "timestamp": 1548660872383,
            "expiration": 1551252872383,
            "matcherFee": 300000,
            "proofs": [
              "YNPdPqEUGRW42bFyGqJ8VLHHBYnpukna3NSin26ERZargGEboAhjygenY67gKNgvP5nm5ZV8VGZW3bNtejSKGEa"
            ],
            "id": "Ho6Y16AKDrySs5VTa983kjg3yCx32iDzDHpDJ5iabXka",
            "sender": "3PEFvFmyyZC1n4sfNWq6iwAVhzUT87RTFcA",
            "price": 1799925005,
            
          }
          

          # Ордер версии 2 

          Порядковый номер поля Название поля Тип поля Размер поля в байтах Описание поля
          1 Номер версии бинарного формата ордера Byte 1 Значение должно быть равно 2
          2 Открытый ключ отправителя ордера Array[Byte] 32
          3 Открытый ключ матчера Array[Byte] 32
          4.1 Флаг токена А Byte 1 Если токен WAVES, то значение 0, иначе — 1
          4.2 ID токена А Array[Byte] S Если токен не WAVES, то S = 32, иначе — поле не должно присутствовать в бинарном формате
          5.1 Флаг токена Б Byte 1 Если токен WAVES, то значение 0, иначе — 1
          5.2 ID токена Б Array[Byte] S Если токен не WAVES, то S = 32, иначе — поле не должно присутствовать в бинарном формате
          6 Тип ордера Byte 1 Если ордер на покупку, то значение 0, если на продажу — 1
          7 Количество токена А Long 8 Количество токена А, которое отправитель ордера предлагает за один токен Б
          8 Количество токена Б Long 8 Количество токена Б, которое отправитель ордера хочет купить
          9 Количество миллисекунд с начала эпохи Unix до момента валидации ордера матчером Long 8
          10 Количество миллисекунд с начала эпохи Unix до момента отмены невыполненного ордера Long 8 Максимальное значение: время отправки ордера + 30 дней
          11 Комиссия матчера Long 8
          12 Подтверждения Array[Подтверждение] S Если массив пустой, то S = 3.
          Если массив не пустой, то S = 3 + 2 × N + (P1 + P2 + ... + Pn),
          где
          N — количество подтверждений в массиве,
          Pn — размер N-го подтверждения в байтах.
          Максимальное количество подтверждений в массиве — 8. Максимальный размер каждого подтверждения — 64 байта

          # Ордер версии 1 

          Порядковый номер поля Название поля Тип поля Размер поля в байтах Описание поля
          1 Открытый ключ отправителя ордера Array[Byte] 32
          2 Открытый ключ матчера Array[Byte] 32
          3.1 Флаг токена A Byte 1 Если WAVES, то значение 0, иначе — 1
          3.2 ID токена А Array[Byte] S Если токен не WAVES, то S = 32, иначе — поле не должно присутствовать в бинарном формате
          4.1 Флаг токена Б Byte 1 Если WAVES, то значение 0, иначе — 1
          4.2 ID токена Б Array[Byte] S Если токен не WAVES, то S = 32, иначе — поле не должно присутствовать в бинарном формате
          5 Тип ордера Byte 1 Если ордер на покупку, то значение 0, если на продажу — 1
          6 Количество токена А, которое отправитель ордера предлагает за единицу токена Б Long 8
          7 Количество токена Б, которое отправитель ордера хочет купить Long 8
          8 Количество миллисекунд с начала эпохи Unix до момента валидации ордера матчером Long 8
          9 Количество миллисекунд с начала эпохи Unix до момента отмены невыполненного ордера Long 8
          10 Комиссия матчера Long 8
          11 Подпись отправителя ордера Array[Byte] 64
          [en] Transaction message binary format
          Бинарный формат транзакции
          [en] Transaction message binary format
          Бинарный формат транзакции