AMLConsensus · курс
Программа · Урок 5.4
Раздел 5 · Урок 5.4

API и автоматизация AML-проверок

Ручная проверка одного адреса занимает минуту. Но когда через ваш обменник или бота проходят сотни клиентов в день, вручную проверять каждого невозможно. Здесь на сцену выходит AML-API — программный интерфейс, который принимает адрес и возвращает вердикт за доли секунды. В этом уроке разберём, как API устроен внутри, как встроить его в поток приёма средств и почему без автоматизации серьёзный сервис работать не может.

Что такое AML-API простыми словами

API (Application Programming Interface) — это «розетка», в которую ваша программа втыкает запрос и получает ответ. Вместо того чтобы открывать сайт, вставлять адрес в поле и читать отчёт глазами, ваш код отправляет адрес по сети и получает структурированный ответ — обычно в формате JSON. Разница как между тем, чтобы каждый раз ходить к колодцу с ведром, и тем, чтобы провести в дом водопровод.

Ключевая идея: вход — это адрес (и сеть), выход — это вердикт. Вердикт почти всегда состоит из трёх вещей: числового риск-скора (0–100), категории риска (например, mixer, sanctions, scam, exchange) и рекомендации (принять / проверить вручную / отклонить). Всё остальное — детализация: доли экспозиции, список рисковых контактов, глубина хопов.

Запрос
адрес + сеть
AML-движок
метки, санкции, граф
Ответ (JSON)
скор, категория, вердикт

Как выглядит запрос и ответ

Технически запрос — это обычный HTTP-вызов. Вы отправляете на адрес сервиса (endpoint) параметры и ключ авторизации. Схематично это выглядит так:

Запрос: GET /v1/check?address=0xABC...&network=eth с заголовком Authorization: Bearer ВАШ_КЛЮЧ.

Ответ (упрощённо):

{ "score": 78, "risk": "high", "category": "mixer", "exposure": { "mixer": 41, "exchange": 22, "unknown": 37 }, "verdict": "reject" }

Ваш код читает поле verdict и поле score — и на основе этого решает, что делать дальше. Никаких «глаз» и ручного чтения: всё превращается в ветвление в программе.

Почему JSON, а не «красивый отчёт». Человеку удобен отчёт с картинками, машине — строгая структура. API отдаёт данные так, чтобы их можно было разобрать программно: сравнить число с порогом, проверить наличие категории в списке, записать в базу. Красивый отчёт для клиента можно собрать уже на своей стороне из этих полей.

Интеграция в обменник или бота: поток проверки на входе

Разберём типовой сценарий: клиент хочет обменять USDT на рубли и присылает вам адрес, с которого придёт крипта (или адрес депозита, который вы ему выдали и куда он уже отправил средства). Правильный сервис проверяет адрес до того, как отдать деньги/рубли. Вот пошаговый поток.

  1. Клиент инициирует сделку. Указывает сеть и сумму, бот/сайт выдаёт адрес для депозита или принимает адрес отправителя.
  2. Транзакция приходит. Ваш бэкенд ловит входящий перевод (по вебхуку от ноды или опросом эксплорера) и извлекает адрес отправителя.
  3. Автоматический вызов AML-API. Код отправляет адрес в API и получает JSON за 0.3–2 секунды.
  4. Ветвление по порогу. Если score < 40 — авто-одобрение, сделка идёт дальше. Если 40–74 — уходит на ручную проверку оператору. Если ≥ 75 или категория sanctions/mixer — авто-отказ и удержание средств.
  5. Логирование. Результат проверки (скор, категория, время, ответ API) сохраняется в базе — это ваша доказательная база на случай спора или запроса.
  6. Ответ клиенту. Одобрено — выплата; серый — «проверка займёт время, укажите источник средств»; отказ — возврат на адрес отправителя (важно: возвращать туда же, откуда пришло).
Депозит пришёл
AML-API
<40: выплата
40–74: оператор
≥75: стоп

Вебхуки: мониторинг без постоянного опроса

Есть два способа получать данные: опрос (polling) — вы сами каждые N секунд спрашиваете «ну что, пришло?», и вебхук (webhook) — сервис сам стучится к вам, когда наступило событие. Вебхук эффективнее: вы регистрируете у провайдера свой URL, и он присылает POST-запрос, когда, например, по отслеживаемому адресу прошла новая транзакция или изменился риск-статус.

Безопасность вебхуков. Раз вебхук — это входящий запрос на ваш сервер, его надо проверять на подлинность: сверять подпись (HMAC) или секретный токен. Иначе злоумышленник может подделать «одобрение» и провести грязную сделку. Никогда не доверяйте вебхуку без проверки подписи.

Лимиты, кэш и стоимость

Каждый вызов API стоит денег или расходует квоту. Поэтому продуманная интеграция всегда включает: кэширование (не проверять один и тот же адрес десять раз за минуту — сохранить результат на несколько часов), ограничение частоты (rate limit, чтобы не упереться в потолок тарифа), и резерв на бота (если один и тот же ключ обслуживает и сайт, и бота — заложить, чтобы сайт не «съел» весь лимит). Это ровно та логика, что реализована в боевых системах: кэш + кап + резерв.

Зачем это знать не-программисту. Даже если вы не пишете код, вы будете заказывать интеграцию или выбирать провайдера. Понимание, что такое endpoint, порог, вебхук и кэш, позволяет ставить внятное техническое задание и не переплачивать за лишние вызовы.

Главное из урока

Материалы носят образовательный характер. Названия полей и форматы условны и зависят от конкретного провайдера.