Skip to Content
Форматы транзакцийБинарный формат

Спецификация бинарного формата YPBankBin

Обзор

Бинарный формат YPBankBin — это компактное, бинарное представление тех же данных о транзакциях, которые описаны в текстовом формате YPBankText. Файл представляет собой последовательный поток записей; каждая запись начинается с небольшого заголовка, упрощающего парсинг и проверку.

Заголовок записи

СмещениеРазмерПолеОписание
0x004 байтаMAGICПостоянное значение 0x59 0x50 0x42 0x4E ('YPBN'), идентифицирующее заголовок записи.
0x044 байтаRECORD_SIZEБеззнаковое 32-битное целое число с прямым порядком байтов, указывающее количество следующих байт (т.е. размер тела записи).

Все многобайтовые целые числа кодируются в формате big-endian.

Тело записи (порядок полей фиксированный)

ПолеРазмерТипПримечания
TX_ID8 байтбеззнаковое 64-битноеУникальный идентификатор транзакции.
TX_TYPE1 байтперечисление (0 = DEPOSIT, 1 = TRANSFER, 2 = WITHDRAWAL)
FROM_USER_ID8 байтбеззнаковое 64-битноеСчёт отправителя; 0 для DEPOSIT.
TO_USER_ID8 байтбеззнаковое 64-битноеСчёт получателя; 0 для WITHDRAWAL.
AMOUNT8 байтзнаковое 64-битноеСумма в наименьшей денежной единице (центах). Положительное значение для зачислений, отрицательное для списаний.
TIMESTAMP8 байтбеззнаковое 64-битноеВремя выполнения транзакции в миллисекундах от эпохи Unix.
STATUS1 байтперечисление (0 = SUCCESS, 1 = FAILURE, 2 = PENDING)
DESC_LEN4 байтабеззнаковое 32-битноеДлина следующего описания в кодировке UTF-8.
DESCRIPTIONDESC_LEN байтUTF-8Необязательное текстовое описание. Если описание отсутствует, DESC_LEN равен 0.

Байты для выравнивания не вставляются; поля располагаются последовательно.

Структура файла

Файл представляет собой последовательность таких записей:

[ЗАГОЛОВОК][ТЕЛО][ЗАГОЛОВОК][ТЕЛО]...

Наличие значения MAGIC в начале каждой записи позволяет читателю повторно синхронизироваться в случае потери границы записи или повреждения данных.

Last updated on