Перейти к содержанию

Пополнение счёта (депозит)

В данном разделе описан полный процесс зачисления криптовалюты на счёт пользователя: от получения адреса для депозита до кредитования баланса после AML-проверки.

Поддерживаемые сети

Сеть Сервис мониторинга
Bitcoin (BTC) TopupScan BTC
EVM-совместимые (ETH, BSC и др.) TopupScan EVM
TRON (TRX, TRC20) TopupScan TRON

Шаги процесса

  1. Пользователь отправляет POST /deposit/address на Gateway (asset, network).
  2. Gateway проксирует запрос в UnivexID, который вызывает ExchangeIntegration.GetDepositAddress.
  3. ExchangeIntegration проксирует запрос в Exchange Admin.GetDepositAddress.
  4. Если кошелёк для данной пары (пользователь + сеть) ещё не создан:
    • Exchange Admin генерирует пару ключей (keypair).
    • Приватный ключ шифруется и сохраняется.
    • Создаётся транзитный кошелёк (transit wallet).
  5. Адрес кошелька возвращается пользователю через цепочку Gateway ← UnivexID ← ExchangeIntegration ← Exchange Admin.
  6. Пользователь отправляет криптовалюту на полученный адрес.
  7. TopupScan (соответствующий сети) обнаруживает входящую транзакцию в блокчейне.
  8. Создаётся запись ChainTopUp со статусом AWAITING_CONFIRMATIONS.
  9. После достижения необходимого числа подтверждений статус меняется на CONFIRMED.
  10. AML-Poller отправляет транзакцию в Elliptic для проверки рисков.
  11. Elliptic возвращает risk_score и категории рисков.
  12. Если транзакция чистая (AML_CLEAN): TopupProcessor зачисляет средства на FUNDING-счёт пользователя.
  13. Если транзакция грязная (AML_DIRTY): создаётся алерт, инициируется процесс возврата.
  14. Итоговый статус: 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.

Связанные разделы