Categorygithub.com/tonkeeper/bat-go
repositorypackage
1.0.1
Repository: https://github.com/tonkeeper/bat-go.git
Documentation: pkg.go.dev

# README

BAT Token format

структура данных

BytesNameoptionalValue
1versionfalse0x01
4app_idfalseайди приложения из базы
4token_idfalseайди токена из базы
1is_subtokenfalse0x01 или 0x00 - показывает является ли токеным выпущеным клиентом с помощью другогого токена
4subtoken_idis_subtoken==0x01айди сабтокена. вероятно случайный
2flagsfalseuint16 откуда мы берем биты для расширения
4ttlflags.0?таймстэмп окончания срока жизни токена
6limitsflags.1?лимиты на запросы к апи с этим токеном (описание отдельно)
5ip_limitedflags.2?версия и хэш айпи для которого ограничены запросы
32signatureпоследние 32 байта это подпись hmac_sha256

Описание фич

Расширения завязаны на биты инта flags. 0-й бит это крайний левый бит например 0b1010000000000000 это токен с ттл и привязанный к айпи но без встроенных лимитов. Без изменения мажорной версии можно добавить до 16 разных расширений. Расширения идут в порядке их расположения битов в переменной flags.

Первые 8 символов в base32 будут уникальными для приложения. Первые 16 символов в base32 описывают приложение + токен + его тип. Это можно использовать для простого декодирования и например логирования.

Структура лимитов:

BytesтипЗначение
4float32rps
1uint8burst относительно rps
1boolпривязан ли лимит к ip
Пример

Rps: 10.0, boost: 3, PerIP: false

Клиент может выполнять до 10 запросов в секунду, при этом до 30 единомоментно независимо от того со скольки айпи пришёл.

Пример

Rps: 0.2, boost: 10, PerIP: true

Клиент может выполнять 1 запрос в 5 секунд, при этом до 2 единомоментно с одного айпи или 2 два раза больше с двух айпи.

Кодирование

Байты токены кодируются в base32 по RFC4648 с обрезанием выравнивающих знаков =. При декодировании знаки = добавляются до нужной длины.

Примеры

Токен со всеми расширениями: AHK65LZNLVSTFJWDAK36NN4NS7LWTBCUYLNAC3VL2BIISQQIS5J6QQ3RMBOP4F7VYXKRQWJA62RCZMWY5A72XXAHHISVCCGGXW4U2

Токен минимально возможной длины: AGZVOXZ3SLHOAA4TRVL4DWQ5DUZK25MSEIGXAFHZ43TMPGXQ6NZZXEWROYSJHCONGSFITLI