Пополнение счёта (депозит)
В данном разделе описан полный процесс зачисления криптовалюты на счёт пользователя: от получения адреса для депозита до кредитования баланса после AML-проверки.
Поддерживаемые сети
| Сеть |
Сервис мониторинга |
| Bitcoin (BTC) |
TopupScan BTC |
| EVM-совместимые (ETH, BSC и др.) |
TopupScan EVM |
| TRON (TRX, TRC20) |
TopupScan TRON |
Шаги процесса
- Пользователь отправляет
POST /deposit/address на Gateway (asset, network).
- Gateway проксирует запрос в UnivexID, который вызывает ExchangeIntegration.GetDepositAddress.
- ExchangeIntegration проксирует запрос в Exchange Admin.GetDepositAddress.
- Если кошелёк для данной пары (пользователь + сеть) ещё не создан:
- Exchange Admin генерирует пару ключей (keypair).
- Приватный ключ шифруется и сохраняется.
- Создаётся транзитный кошелёк (transit wallet).
- Адрес кошелька возвращается пользователю через цепочку Gateway ← UnivexID ← ExchangeIntegration ← Exchange Admin.
- Пользователь отправляет криптовалюту на полученный адрес.
- TopupScan (соответствующий сети) обнаруживает входящую транзакцию в блокчейне.
- Создаётся запись ChainTopUp со статусом
AWAITING_CONFIRMATIONS.
- После достижения необходимого числа подтверждений статус меняется на
CONFIRMED.
- AML-Poller отправляет транзакцию в Elliptic для проверки рисков.
- Elliptic возвращает
risk_score и категории рисков.
- Если транзакция чистая (
AML_CLEAN): TopupProcessor зачисляет средства на FUNDING-счёт пользователя.
- Если транзакция грязная (
AML_DIRTY): создаётся алерт, инициируется процесс возврата.
- Итоговый статус:
DEPOSITED (для чистых) или REFUND_REQUESTED (для грязных).
Диаграмма: Процесс депозита
sequenceDiagram
actor U as Пользователь
participant GW as Gateway
participant UID as UnivexID
participant EI as ExchangeIntegration
participant EA as Exchange Admin
participant BC as Блокчейн
participant TS as TopupScan
participant AML as AML-Poller / Elliptic
participant TP as TopupProcessor
U->>GW: POST /deposit/address\n(asset, network)
GW->>UID: GetDepositAddress(user_id, asset, network)
UID->>EI: GetDepositAddress(user_id, asset, network)
EI->>EA: GetDepositAddress(account_id, asset, network)
alt Кошелёк не существует
EA->>EA: Генерация keypair
EA->>EA: Шифрование приватного ключа
EA->>EA: Создание transit wallet
end
EA-->>EI: wallet_address
EI-->>UID: wallet_address
UID-->>GW: wallet_address
GW-->>U: Адрес для депозита
U->>BC: Отправка криптовалюты на адрес
BC-->>TS: Новая входящая транзакция обнаружена
TS->>TS: Создать ChainTopUp\n[AWAITING_CONFIRMATIONS]
TS->>BC: Мониторинг подтверждений
loop Каждый новый блок
TS->>BC: Проверка числа подтверждений
end
TS->>TS: Достигнуто N подтверждений\n[CONFIRMED]
AML->>EA: Получить детали ChainTopUp
AML->>AML: Вызов Elliptic API\n(tx_hash, amount, address)
AML-->>AML: Получен risk_score + категории
alt AML_CLEAN (риск ниже порога)
AML->>TP: Зачислить депозит
TP->>EA: Пополнить FUNDING баланс пользователя
TP->>TS: Обновить статус -> DEPOSITED
else AML_DIRTY (риск выше порога)
AML->>EA: Создать алерт
AML->>TS: Обновить статус -> REFUND_REQUESTED
end
Статусы ChainTopUp
| Статус |
Описание |
AWAITING_CONFIRMATIONS |
Транзакция обнаружена, ожидаются подтверждения блокчейна |
CONFIRMED |
Получено достаточное число подтверждений |
AML_CLEAN |
AML-проверка пройдена |
AML_DIRTY |
Транзакция помечена как рискованная |
DEPOSITED |
Средства зачислены на баланс пользователя |
REFUND_REQUESTED |
Инициирован возврат средств отправителю |
Число подтверждений по сетям
| Сеть |
Требуемые подтверждения |
| Bitcoin (BTC) |
3 |
| Ethereum (ETH) |
12 |
| TRON (TRX/TRC20) |
20 |
| BSC |
15 |
Конкретные значения могут быть изменены в конфигурации TopupScan.
Связанные разделы