# Бинарный формат транзакции обмена
Подробнее о транзакции обмена.
# Версия 3
Бинарный формат версии 3 соответствует protobuf-схеме transaction.proto. Описание полей, общих для всех типов транзакций, представлено в разделе Бинарный формат транзакции.
Транзакция версии 3 может сoдержать ордера версий 1–4.
Версия 3 появилась с момента активации фичи № 15 “Ride V4, VRF, Protobuf, Failed transactions”.
message ExchangeTransactionData {
int64 amount = 1;
int64 price = 2;
int64 buy_matcher_fee = 3;
int64 sell_matcher_fee = 4;
repeated Order orders = 5;
};
Поле | Размер | Описание |
---|---|---|
amount | 8 байт | Количество amount-ассета (базовой валюты), которое получил отправитель ордера на покупку от отправителя ордера на продажу, в минимальных единицах («копейках») |
price | 8 байт | Цена сделки: стоимость amount-ассета (базовой валюты), выраженная в price-ассете (валюте котировки), умноженная на 108. Подробнее см. в разделе Биржевая заявка |
buy_matcher_fee | 8 байт | Комиссия матчера за покупку. ID токена комиссии указан в ордере на покупку |
sell_matcher_fee | 8 байт | Комиссия матчера за продажу. ID токена комиссии указан в ордере на продажу |
orders | Ордер на покупку и ордер на продажу. См. раздел Бинарный формат ордера |
# Версия 2
Транзакция версии 2 может сoдержать ордера версии 1, 2 и 3.
№ | Поле | Название JSON-поля | Тип поля | Размер поля в байтах | Комментарий |
---|---|---|---|---|---|
1 | Флаг версии | Byte | 1 | Указывает, что версия транзакции является второй или выше. Значение должно быть равно 0 | |
2 | ID типа транзакции | type | Byte | 1 | Значение должно быть равно 7 |
3 | Версия транзакции | version | Byte | 1 | Значение должно быть равно 2 |
4.1 | Размер ордера на покупку | Int | 4 | Размер с учетом флага 4.2 | |
4.2 | Флаг версии ордера на покупку | order1.version | Byte | S | S = 1, если версия ордера 1.S = 0, если версия ордера 2 или 3 |
4.3 | Ордер на покупку токена | order1 | Array[Byte] | См. Бинарный формат ордера | |
5.1 | Размер ордера на продажу | Int | 4 | Размер с учетом флага 5.2 | |
5.2 | Флаг версии ордера на продажу | order2.version | Byte | S | S = 1, если версия ордера 1.S = 0, если версия ордера 2 или 3 |
5.3 | Ордер на продажу токена | order2 | Array[Byte] | См. Бинарный формат ордера | |
6 | Цена сделки | price | Long | 8 | Стоимость amount-ассета (базовой валюты), выраженная в price-ассете (валюте котировки) |
7 | Количество | amount | Long | 8 | Количество amount-ассета (базовой валюты), которое получил отправитель ордера на покупку от отправителя ордера на продажу |
8 | Комиссия матчера за покупку | buyMatcherFee | Long | 8 | |
9 | Комиссия матчера за продажу | sellMatcherFee | Long | 8 | |
10 | Комиссия за транзакцию | fee | Long | 8 | |
11 | Временная метка транзакции | timestamp | Long | 8 | |
12 | Подтверждения транзакции | proofs | См. раздел Бинарный формат подтверждений | S | Если массив пустой, то S = 3. Если массив не пустой, то S = 3 + 2 × N + 64 × N , где N — количество подтверждений в массиве.Максимальное количество подтверждений в массиве — 8. Размер каждого подтверждения — 64 байта |
Поля, номера которых выделены жирным шрифтом, составляют байты тела транзакции.
# JSON-представление транзакции
Смотрите пример в Node API.
# Версия 1
Транзакция версии 1 может принимать ордера только версии 1.
№ | Поле | Тип поля | Размер поля в байтах | Комментарии |
---|---|---|---|---|
1 | ID типа транзакции | Byte | 1 | Значение должно быть равно 7 |
2 | Размер ордера на покупку в байтах | Int | 4 | |
3 | Размер ордера на продажу в байтах | Int | 4 | |
4 | Ордер на покупку | Array[Byte] | ||
5 | Ордер на продажу | Array[Byte] | ||
6 | Цена сделки | Long | 8 | Стоимость amount-ассета (базовой валюты), выраженная в price-ассете (валюте котировки) |
7 | Количество | Long | 8 | Количество amount-ассета (базовой валюты), которое получил отправитель ордера на покупку от отправителя ордера на продажу |
8 | Комиссия матчера за покупку | Long | 8 | |
9 | Комиссия матчера за продажу | Long | 8 | |
10 | Комиссия за транзакцию | Long | 8 | |
11 | Временная метка транзакции | Long | 8 | |
12 | Подпись транзакции | Array[Byte] | 64 |
Поля, номера которых выделены жирным шрифтом, составляют байты тела транзакции.