Как запускается скрининг
Криптоскрининг запускается автоматически, когда выполняются оба условия:- В данных транзакции указано
currency_kind: "crypto" - Мониторинг транзакций включен в настройках приложения
include_crypto_screening в payload запроса на создание транзакции:
Выбор актива и сети
Актив и сеть задаются в разных полях. Укажитеtransaction_details.currency как символ токена, transaction_details.currency_kind как crypto, а transaction_details.crypto_params.crypto_chain как сеть.
Например, этот фрагмент описывает пользовательский токен в сети Base:
BTC, ETH, LTC, XRP, BCH, DOGE, TRX, SOL, MATIC, BNB, BASE, OP, ARB, AVAX, ADA, XLM и HBAR.
BASE означает Base, OP означает Optimism, ARB означает Arbitrum One, AVAX означает Avalanche C-Chain, ADA означает Cardano, XLM означает Stellar, а HBAR означает Hedera.
Распространенные названия сетей тоже принимаются, например POLYGON или POL для MATIC, BSC для BNB и TRON для TRX.
Celo, Mode и Plume не входят в управляемую интеграцию, их скрининг выполняется через подключенный аккаунт TRM Labs (CELO, MODE, PLUME).
Подключенные провайдеры имеют собственное покрытие; для Lightning действуют дополнительные требования, описанные ниже.
Всегда указывайте crypto_chain для токена, включая USDT и USDC.
Без него валюта используется как сеть, а USDT и USDC определяют свою сеть по хешу транзакции или, если хеша нет, по адресу кошелька.
Хеш Tron или Solana выбирает сеть Tron или Solana.
Хеш 0x выглядит одинаково во всех сетях EVM, поэтому для USDT, USDC и ETH Didit ищет его в Ethereum, BNB Chain, Polygon, Base, Arbitrum и Optimism и проверяет транзакцию в той сети, где он найден.
ETH включен, потому что он является нативным активом Ethereum, Base, Arbitrum и Optimism, а также переводится в BNB Chain как бриджированный токен BEP-20.
Если ни в одной сети нет этого хеша или сети нельзя проверить в данный момент, транзакция не проверяется и скрининг не тарифицируется.
В этом случае custom_values.aml_screening_status равен FAILED, custom_values.aml_screening_error объясняет причину, а одобренная транзакция переходит на проверку.
Транзакция USDT или USDC без хеша проверяет кошелек, и адрес кошелька определяет сеть.
Адрес Tron проверяется в Tron, а адрес Solana в Solana.
Адрес 0x проверяется в первой из сетей Ethereum, BNB Chain, Polygon, Base, Arbitrum и Optimism, где он отправлял транзакцию или хранит токен.
Адрес 0x без активности в этих сетях или адрес, сети которого нельзя проверить в данный момент, проверяется в Ethereum.
Передача crypto_chain позволяет не выполнять этот поиск.
Никогда не подставляйте ETH вместо фактической сети.
Указание символа пользовательского токена не гарантирует, что его переводы проиндексированы для скрининга по хешу транзакции.
Покрытие токена нужно проверять по контракту токена и сети.
Созданная транзакция не означает успешного скрининга: перед тем как считать транзакцию проверенной, проверьте статус скрининга и результат провайдера.
Входящие и исходящие переводы
transaction_details.direction обязателен, потому что он сообщает Didit, какую сторону перевода нужно проверить.
Для скрининга кошельков до перевода не указывайте
transaction_details.payment_reference_id: Didit выполнит скрининг соответствующего адреса кошелька. Для проверки после перевода укажите хеш блокчейн-транзакции в transaction_details.payment_reference_id: Didit проверит хеш транзакции и, если доступно обогащение данными из блокчейна, сохранит сводку по транзакции.
Lightning Network
Для скрининга Lightning Network укажите вtransaction_details.crypto_params.crypto_chain значение LIGHTNING.
Для проверки Lightning нужен подключённый ключ провайдера Elliptic или Chainalysis (BYOK) в Marketplace консоли.
Управляемые провайдеры Merkle Science, Crystal и TRM Labs не принимают LIGHTNING: Didit отклоняет такие запросы с кодом 400 до проверки или биллинга.
Для Elliptic Didit проверяет переданный идентификатор Lightning через анализ Lightning-кошелька BTC в Elliptic.
Для Chainalysis Didit отправляет перевод Lightning в KYT, если присутствует transaction_details.payment_reference_id.
Обязательные поля
Для всех запросов на проверку криптовалют отправьте:transaction_details.direction:INBOUNDилиOUTBOUNDtransaction_details.currency_kind:cryptotransaction_details.currency: символ актива, напримерBTC,ETH,USDCили ваш пользовательский токен- Адрес кошелька у участника, выбранного в соответствии с приведёнными выше правилами направления
transaction_details.payment_reference_id: хеш блокчейн-транзакции
Пример: проверка исходящего перевода до отправки
Перед отправкой средств создайте исходящую криптотранзакцию без хеша транзакции. Didit выполнит скрининг кошелька назначения.Пример: проверка входящего перевода после получения
После получения средств укажите хеш транзакции. Didit проверит хеш, привязанный к вашему адресу депозита, и, если доступно, дополнит ответ сводкой по транзакции.Поддерживаемые провайдеры
Настроить предпочтительного провайдера можно в разделе Транзакции > Настройки > Настройки провайдеров в Business Console, либо подключить собственный ключ провайдера в разделе Marketplace консоли (категория «Мониторинг криптовалют»).
LIGHTNING поддерживается только в конфигурациях Chainalysis и Elliptic с подключённым ключом.
Результаты скрининга
Каждый скрининг возвращает результат в одном стандартном формате, независимо от того, какой провайдер используется.Статус скрининга
custom_values.aml_screening_status показывает, была ли транзакция проверена.
Транзакция, которая иначе была бы одобрена, переходит в
IN_REVIEW, пока её скрининг имеет любой статус, кроме COMPLETED.
Хеши транзакций, которые ещё не проиндексированы
Аналитическому провайдеру блокчейна может потребоваться несколько минут, чтобы проиндексировать перевод, только что добавленный в блок. До этого он не может его проверить. Если провайдер сообщает, что хеш транзакции ещё не проиндексирован, а сама сеть подтверждает, что транзакция существует, Didit повторно проверяет её в фоновом режиме, а не отмечает скрининг как неудачный:- Ответ при создании уже показывает
custom_values.aml_screening_statusсо значениемPENDING, а причина указана вcustom_values.aml_screening_error. Одобренная транзакция удерживается в статусеIN_REVIEWсdecision_reason_codeaml_screening_pending. - Didit повторно проверяет хеш транзакции примерно через 2, 12 и 42 минуты после её создания.
- Когда повторная проверка выполнена, результат сохраняется так же, как и любой другой скрининг, и за скрининг списывается плата один раз.
Ваши правила повторно применяются к данным скрининга, удержание снимается, и вы получаете один webhook
transaction.status.updatedсо статусом, который транзакция имеет после применения правил, независимо от того, изменился ли он. Транзакция, которая за это время была отклонена или по которой проверяющий принял решение, сохраняет свой статус. - Если провайдер всё ещё не проиндексировал хеш транзакции после последней повторной попытки, скрининг завершается со статусом
FAILED, как и при создании: транзакция остаётся вIN_REVIEWсdecision_reason_codeaml_screening_failed, а списание производится так же, как при сбое на этапе создания: ничего за скрининг, управляемый Didit, и один запрос к провайдеру, если последняя попытка дошла до вашего подключённого провайдера. За предыдущие попытки, которые были повторены, плата никогда не взимается. - Если к моменту повторной проверки баланса уже не хватает на скрининг, скрининг завершается со статусом
FAILED, и плата не взимается.
Оценка риска и уровень критичности
Каждый проверенный кошелёк или транзакция получает:- Оценка риска (0–100): чем выше оценка, тем выше степень подверженности воздействию рискованных сущностей
- Уровень критичности: определяется по оценке и принимает значения
LOW,MEDIUM,HIGHилиCRITICAL
Анализ источника средств
Процентная разбивка того, откуда поступили средства, с разбивкой по типам сущностей:
Каждая сущность в разбивке содержит процент средств, суммы полученных и отправленных средств, а также указание на то, является ли связь прямой или косвенной.
Таблица экспозиции
Таблица экспозиции показывает сущности-источники, сущности-получатели и контрагентов, включая:- Название сущности и категорию
- Прямую или косвенную связь (количество переходов)
- Суммы полученных и отправленных средств
- Уровень риска для каждой сущности
Граф сети
Визуальное представление транзакционных связей кошелька в виде узлов и рёбер:- Узлы представляют кошельки, биржи, сервисы и другие сущности
- Рёбра представляют транзакции между узлами, с суммами и хешами транзакций
- Показатели включают статистику уровня графа, например центральность и глубину
Интеграция с правилами
Результаты скрининга напрямую поступают в движок правил. Didit включает предустановленные правила, которые срабатывают автоматически на основе данных скрининга:Поля скрининга для правил
Криптоскрининг записывает следующие ключи вcustom_values транзакции, поэтому правила могут использовать их как custom_values.<key>:
Используйте
wallet_sanctioned, чтобы блокировать переводы на санкционный кошелёк, не отклоняя переводы на крупные биржи, у которых есть только косвенная экспозиция.
Используйте sanctions_hit или aml_sanctions_exposure_pct, чтобы проверять или оценивать экспозицию.
Предустановленное правило Sanctions counterparty отклоняет транзакцию, когда wallet_sanctioned равно true, а предустановленное правило Санкционная экспозиция направляет на проверку кошельки, у которых есть только экспозиция.
Эти два правила никогда не срабатывают на одну и ту же транзакцию, поэтому санкционный кошелёк всегда отклоняется.
Если вы установили Sanctions counterparty до этого изменения, Didit автоматически изменил его так, чтобы оно использовало wallet_sanctioned, и добавил Санкционную экспозицию в том же режиме, поэтому перевод, который старое правило отклоняло только из-за экспозиции, теперь направляется на проверку.
После завершения скрининга Didit автоматически повторно оценивает все правила по обогащённым данным транзакции и запускает все применимые webhook-события.
Дальнейшие шаги
Отправка транзакций
Как отправлять транзакции, включая данные криптокошельков.
Правила и скоринг
Как результаты скрининга поступают в движок правил.
Руководство по консоли
Просмотр анализа криптоскрининга, источников средств и графов сети в консоли.