# Бинарный формат транзакции перевода
Узнать больше о транзакции перевода.
# Версия 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 включительно | Может включать произвольные данные |
Поля, номера которых выделены жирным шрифтом, составляют байты тела транзакции.