AML-проверка¶
В данном разделе описан процесс противодействия отмыванию денег (Anti-Money Laundering) на платформе Univex: как выявляются рискованные транзакции, какие решения принимаются и как обрабатываются «грязные» депозиты.
Общий принцип¶
Каждый входящий крипто-депозит проходит обязательную проверку через сервис Elliptic — специализированный инструмент для блокчейн-аналитики. По результатам проверки депозиту присваивается оценка риска, и система автоматически принимает решение о зачислении или блокировке средств.
Шаги процесса¶
- TopupScan обнаруживает входящую транзакцию на адрес пользователя.
- Создаётся запись ChainTopUp с отслеживанием числа подтверждений.
- После достижения необходимого числа подтверждений активируется AML-Poller.
- Elliptic Check сервис вызывает Elliptic API с деталями транзакции (tx_hash, сумма, адрес отправителя).
- Elliptic возвращает:
risk_score— числовая оценка риска (0–100).- Категории риска (например:
darknet,sanctions,mixer,stolen_funds).
- Категории сохраняются в таблице
chain_topup_aml_categories. - Система сравнивает
risk_scoreс пороговыми значениями из таблицыrisk_categories:- Если риск ниже порога: статус →
AML_CLEAN→ депозит обрабатывается. - Если риск выше порога: статус →
AML_DIRTY→ создаётся алерт для администратора.
- Если риск ниже порога: статус →
- Чистые депозиты (
AML_CLEAN): TopupProcessor зачисляет средства на FUNDING-баланс пользователя, статус →DEPOSITED. - Грязные депозиты (
AML_DIRTY): администратор через AdminGateway может:- Выполнить BypassAML — принудительно зачислить депозит (с ручным подтверждением).
- Инициировать возврат — refund-processor отправляет средства обратно на адрес-источник.
- После возврата кошелёк помечается как «грязный» (dirty wallet) для предотвращения повторного использования.
- Вся история статусов фиксируется в таблице
chain_topup_status_history.
Диаграмма: AML-процесс¶
flowchart TD
A([TopupScan: транзакция обнаружена]) --> B[Создать ChainTopUp\nAWAITING_CONFIRMATIONS]
B --> C{Достигнуто N\nподтверждений?}
C -- Нет --> C
C -- Да --> D[Статус: CONFIRMED]
D --> E[AML-Poller активирован]
E --> F[Вызов Elliptic API\ntx_hash, amount, address]
F --> G[Получен risk_score\n+ категории рисков]
G --> H[Сохранить категории\nв chain_topup_aml_categories]
H --> I{risk_score vs\nпороги из risk_categories}
I -- Ниже порога --> J[Статус: AML_CLEAN]
J --> K[TopupProcessor:\nзачислить на FUNDING баланс]
K --> L([Статус: DEPOSITED])
I -- Выше порога --> M[Статус: AML_DIRTY]
M --> N[Создать алерт\nдля администратора]
N --> O{Решение администратора\nчерез AdminGateway}
O -- BypassAML --> P[Принудительное зачисление]
P --> L
O -- Возврат --> Q[refund-processor:\nотправить на адрес-источник]
Q --> R[Пометить кошелёк\nкак dirty wallet]
R --> S([Статус: REFUND_REQUESTED])
J --> T[Записать в\nchain_topup_status_history]
M --> T
L --> T
S --> T
Категории риска Elliptic¶
Elliptic возвращает одну или несколько категорий, связанных с транзакцией или адресом отправителя:
| Категория | Описание |
|---|---|
darknet |
Адрес связан с даркнет-площадками |
sanctions |
Адрес находится под санкциями (OFAC и др.) |
mixer |
Средства прошли через миксер/тумблер |
stolen_funds |
Средства связаны с кражей или взломом |
gambling |
Азартные платформы |
ransomware |
Адрес связан с программами-вымогателями |
Пороги риска¶
Пороговые значения хранятся в таблице risk_categories и могут быть настроены администратором через AdminGateway. Пример:
| Категория | Порог блокировки (risk_score) |
|---|---|
| По умолчанию | 70 |
sanctions |
10 (мгновенная блокировка) |
mixer |
50 |
darknet |
60 |
Ручные операции администратора¶
Все административные операции выполняются через AdminGateway → ExchangeIntegration → Exchange Admin.
Добавление адреса в чёрный список¶
Администратор может вручную добавить адрес в таблицу blacklist:
- Заблокированные адреса отклоняются при попытке вывода.
- Также могут использоваться для проактивной блокировки входящих транзакций.
BypassAML¶
Позволяет принудительно зачислить депозит с пометкой AML_DIRTY, если администратор принял взвешенное решение о допустимости транзакции (требует дополнительного подтверждения).
Инициирование возврата¶
Администратор запускает возврат — refund-processor автоматически формирует транзакцию обратно на адрес-источник. Кошелёк помечается как dirty и исключается из ротации.
Хранение данных¶
| Таблица | Содержимое |
|---|---|
chain_topup |
Основная запись депозита и его статус |
chain_topup_aml_categories |
Категории риска от Elliptic |
chain_topup_status_history |
История изменений статуса депозита |
risk_categories |
Настройки пороговых значений риска |
blacklist |
Вручную добавленные адреса |
Связанные разделы¶
- Пополнение счёта — полный процесс депозита, включая точку запуска AML.
- Вывод средств — проверка адресов по чёрному списку при выводе.
- Управление балансами — зачисление на FUNDING-счёт после AML_CLEAN.