Поток пополнения
TRC20 / BEP20 (заявка)
Заголовок раздела «TRC20 / BEP20 (заявка)»sequenceDiagram
autonumber
participant P as Игрок
participant A as Мини-приложение
participant S as Сервер
participant B as Блокчейн
participant Q as Очередь выдачи
P->>A: Пополнить на N
A->>S: Создать заявку
S->>S: Кошелёк привязан? ID указан?<br/>Сумма в пределах?
S-->>A: Адрес + точная сумма N.xx + 30 мин
P->>B: Перевод N.xx USDT
loop каждую минуту
S->>B: Новые входящие на адреса клуба
end
S->>S: Сумма совпала с открытой заявкой
S->>S: Запись «Получено» (DEP-…)
S-->>A: «Платёж получен»
S->>Q: В очередь на выдачу фишек
Платёж сопоставляется с заявкой по адресу и точной сумме. Платёж, который не совпал ни с одной заявкой, попадает в «неопознанные» и разбирается вручную.
TON / GRAM (личный адрес)
Заголовок раздела «TON / GRAM (личный адрес)»sequenceDiagram
autonumber
participant P as Игрок
participant S as Сервер
participant T as TON
P->>S: Открыл вкладку TON / GRAM
S-->>P: Личный адрес (создаётся один раз)
P->>T: Любая сумма
loop каждую минуту
S->>T: Входящие на адреса клуба и личные адреса
end
S->>S: Чей адрес → чьё пополнение
S->>S: GRAM → USD по курсу сейчас
S->>S: ≥ минимума? → «Получено», иначе «меньше минимума»
Каждый личный адрес — отдельный кошелёк, ключ к которому выводится из ключа клуба по номеру. Платёж определяется по адресу, поэтому сумма и комментарий не нужны.
Защита от повторов
Заголовок раздела «Защита от повторов»Каждый перевод записывается по паре сеть + хэш перевода с уникальностью в базе: один и тот же перевод не может быть зачислен дважды, сколько бы раз ни запускалась проверка.