# Бинарный формат транзакции перевода
Узнать больше о транзакции перевода.
# Версия 3
Бинарный формат версии 3 соответствует protobuf-схеме transaction.proto. Описание полей, общих для всех типов транзакций, представлено в разделе Бинарный формат транзакции.
Версия 3 появилась с момента активации фичи № 15 “Ride V4, VRF, Protobuf, Failed transactions”.
message TransferTransactionData {
Recipient recipient = 1;
Amount amount = 2;
bytes attachment = 3;
};
message Recipient {
oneof recipient {
bytes public_key_hash = 1;
string alias = 2;
};
message Amount {
bytes asset_id = 1;
int64 amount = 2;
};
| Поле | Размер | Описание |
|---|---|---|
| recipient.public_key_hash | 20 байт | Хеш открытого ключа аккаунта получателя (компонент адреса, см. раздел Бинарный формат адреса) |
| recipient.alias | От 4 до 30 байт | Псевдоним адреса получателя |
| amount.asset_id | 32 байта | ID токена |
| amount.amount | 8 байт | Количество токена для перевода, в минимальных единицах («копейках») |
| attachment | До 140 байт | Произвольные данные (обычно комментарий к транзакции) |
# Версия 2
| № | Поле | Название JSON-поля | Тип поля | Размер поля в байтах | Комментарий |
|---|---|---|---|---|---|
| 1 | Флаг версии | Byte | 1 | Указывает, что версия транзакции является второй или выше. Значение должно быть равно 0 | |
| 2 | ID типа транзакции | type | Byte | 1 | Значение должно быть равно 4 |
| 3 | Версия транзакции | version | Byte | 1 | Значение должно быть равно 2 |
| 4 | Открытый ключ аккаунта отправителя транзакции | senderPublicKey | Array[Byte] | 32 | |
| 5.1 | Флаг типа переводимого токена | Byte | 1 | 0 — WAVES 1 — другой токен | |
| 5.2 | ID переводимого токена | assetId | Array[Byte] | S | S = 0, если значение поля 5.1 равно 0.S = 32, если значение поля 5.1 не равно 0 |
| 6.1 | Флаг типа токена комиссии | Byte | 1 | 0 — WAVES 1 — другой токен | |
| 6.2 | ID токена комиссии | feeAssetId | Array[Byte] | S | S = 0, если значение поля 6.1 равно 0.S = 32, если значение поля 6.1 не равно 0 |
| 7 | Временная метка транзакции | timestamp | Long | 8 | |
| 8 | Количество токена для перевода | amount | Long | 8 | |
| 9 | Комиссия за транзакцию | fee | Long | 8 | |
| 10 | Адрес или псевдоним получателя | recipient | См. Бинарный формат адреса, Бинарный формат псевдонима | S | Если первым байтом поля является 1, то за ним следует адрес. S в этом случае равняется 26.Если первым байтом поля является 2, то за ним следует псевдоним. В этом случае 8 <= S <= 34 |
| 11.1 | Длина вложения | Short | 2 | ||
| 11.2 | Вложение | attachment | Array[Byte] | До 140 включительно | Может включать произвольные данные |
| 12 | Подтверждения транзакции | proofs | См. раздел Бинарный формат подтверждений | S | Если массив пустой, то S = 3. Если массив не пустой, то S = 3 + 2 × N + 64 × N, где N — количество подтверждений в массиве.Максимальное количество подтверждений в массиве — 8. Размер каждого подтверждения — 64 байта |
Поля, номера которых выделены жирным шрифтом, составляют байты тела транзакции.
# JSON-представление транзакции
Смотрите пример в Node API. В JSON-представлении значения полей feeAsset и feeAssetId идентичны.
# Версия 1
| № | Название поля | Тип поля | Размер поля в байтах | Комментарий |
|---|---|---|---|---|
| 1 | ID типа транзакции | Byte | 1 | Значение должно быть равно 4 |
| 2 | Подпись транзакции | Array[Byte] | 64 | |
| 3 | ID типа транзакции | Byte | 1 | Дублирует поле 1 |
| 4 | Открытый ключ аккаунта отправителя транзакции | Array[Byte] | 32 | |
| 5.1 | Флаг типа переводимого токена | Byte | 1 | 0 — WAVES 1 — другой токен |
| 5.2 | ID переводимого токена | Array[Byte] | S | S = 0, если значение поля 5.1 равно 0.S = 32, если значение поля 5.1 не равно 0 |
| 6.1 | Флаг типа токена комиссии | Byte | 1 | 0 — WAVES 1 — другой токен |
| 6.2 | ID токена комиссии | Array[Byte] | S | S = 0, если значение поля 6.1 равно 0.S = 32, если значение поля 6.2 не равно 0 |
| 7 | Временная метка транзакции | Long | 8 | |
| 8 | Количество токена для перевода | Long | 8 | |
| 9 | Комиссия за транзакцию | Long | 8 | |
| 10 | Адрес или псевдоним получателя | Array[Byte] | S | Если первым байтом поля является 1, то за ним следует адрес. S в этом случае равняется 26Если первым байтом поля является 2, то за ним следует псевдоним. В этом случае 8 <= S <= 34 |
| 11.1 | Длина вложения | Short | 2 | |
| 11.2 | Вложение | Array[Byte] | До 140 включительно | Может включать произвольные данные |
Поля, номера которых выделены жирным шрифтом, составляют байты тела транзакции.