Транзакция пользователя блокируется без объяснения причин — знакомая ситуация? Мы интегрировали Chainalysis, Elliptic и Crystal в десятках проектов и знаем, как настроить AML-скрининг без ложных срабатываний. Наш опыт позволяет внедрить соответствие стандартам FATF за 2 недели.
AML скрининг криптовалютных транзакций — обязательный элемент compliance для любой платформы, работающей с криптой. Задача: при каждом депозите или выводе проверить, не связан ли адрес с санкционными субъектами, даркнет маркетами, ворованными средствами или другими high-risk активностями. Ошибка в настройке может стоить лицензии или привести к блокировке счетов в банках-партнёрах. Мы гарантируем корректную настройку risk-логики и полную документацию процесса.
Почему важен AML-скрининг для криптопроектов?
Регуляторы всё чаще требуют от криптобирж и обменников внедрения AML-процедур. Без них компания рискует попасть под санкции или потерять доступ к банковским услугам. Chainalysis, Elliptic и Crystal — лидеры рынка, позволяющие автоматизировать проверку транзакций в реальном времени. Наши инженеры сертифицированы по каждому из этих продуктов.
Chainalysis против Elliptic: что выбрать?
| Провайдер | Сильные стороны | Слабости |
|---|---|---|
| Chainalysis KYT | Самая полная база санкций, интеграция с регуляторами | Высокая стоимость, сложный API для старта |
| Elliptic Lens | Лучшее покрытие DeFi и cross-asset трейсинг | Меньшая база восточноевропейских рисков |
| Crystal Blockchain | Конкурентная цена, поддержка на русском языке | Меньше интеграций с европейскими регуляторами |
Chainalysis лучше подходит для крупных бирж с жёсткими регуляторными требованиями, Elliptic — для DeFi-протоколов, Crystal — для проектов из СНГ. Мы поможем выбрать оптимального провайдера под вашу юрисдикцию.
Как работает Chainalysis KYT?
Chainalysis — лидер рынка, используется большинством крупных бирж и регуляторами для forensics. API делится на несколько продуктов: KYT для transaction monitoring, Reactor для investigation, Kryptos для entity data. Наш опыт включает сертификацию Chainalysis Partner, что гарантирует правильную настройку с первого раза.
KYT API интеграция
class ChainalysisClient { private readonly baseURL = "https://api.chainalysis.com"; async registerAddress(address: string, asset: "USDT" | "ETH" | "BTC" | string): Promise<void> { await this.post("/api/kyt/v2/users", { userId: address, asset, }); } async screenTransfer(params: { asset: string; network: string; transferReference: string; direction: "received" | "sent"; userId: string; outputAddress?: string; value?: string; assetAmount?: number; timestamp?: string; }): Promise<TransferRisk> { const response = await this.post("/api/kyt/v2/transfers", params); return { externalId: response.externalId, riskScore: response.riskScore, cluster: response.cluster, status: response.status, }; } async getTransferAlerts(externalId: string): Promise<Alert[]> { const response = await this.get(`/api/kyt/v2/transfers/${externalId}/alerts`); return response.alerts; } private async post(path: string, body: any): Promise<any> { const response = await fetch(`${this.baseURL}${path}`, { method: "POST", headers: { "Token": this.apiKey, "Content-Type": "application/json", }, body: JSON.stringify(body), }); return response.json(); } } Risk Score категории
| Score | Категория | Автоматическое действие |
|---|---|---|
| 0-39 | LOW | Пропустить |
| 40-69 | MEDIUM | Флаг для review |
| 70-100 | HIGH | Заблокировать |
| N/A | SEVERE | Заблокировать + SAR |
Категории которые дают автоматическую блокировку независимо от score:
-
darknet_market -
ransomware -
stolen_funds -
sanctions -
terrorist_financing
Обработка депозита
async function processDeposit(deposit: Deposit): Promise<DepositResult> { await chainalysis.registerAddress(deposit.fromAddress, deposit.asset); const risk = await chainalysis.screenTransfer({ asset: deposit.asset, network: deposit.network, transferReference: deposit.txHash, direction: "received", userId: deposit.userId, value: deposit.usdValue.toString(), assetAmount: deposit.amount, }); if (risk.status === "BLOCKED") { await freezeDeposit(deposit.id); await notifyCompliance(deposit, risk); return { status: "blocked", reason: risk.cluster?.category }; } if (risk.status === "IN_REVIEW") { await holdForReview(deposit.id); await createComplianceTask(deposit, risk); return { status: "pending_review" }; } await creditUserAccount(deposit); return { status: "approved" }; } Особенности Elliptic Lens / Navigator
Elliptic — конкурент Chainalysis с похожим функционалом. Сильнее в DeFi screening и cross-asset трассировке.
class EllipticClient { async getWalletRisk(address: string, asset: string): Promise<EllipticRisk> { const response = await this.post("/v2/wallet/synchronous", { subject: { asset, type: "address", hash: address, }, type: "wallet_exposure", customer_reference: address, }); return { riskScore: response.risk_score, exposures: response.exposures, clusters: response.entities, }; } async getTransactionRisk(txHash: string, asset: string): Promise<EllipticRisk> { return this.post("/v2/txs/synchronous", { subject: { asset, type: "transaction", hash: txHash }, type: "indirect_exposure", }); } } Elliptic score от 0 до 10 — нужна нормализация для единой risk логики если используете оба провайдера.
Как использовать Crystal Blockchain для Восточной Европы
Crystal — европейский игрок, часто предпочтителен для проектов из СНГ/ЕС из-за цен и поддержки.
const crystalResponse = await axios.post( "https://aml.crystalblockchain.com/api/v1/risks/check", { address, currency: asset, }, { headers: { "X-Auth-Apikey": CRYSTAL_API_KEY }, } ); Как происходит интеграция AML-скрининга?
Процесс работы над проектом включает несколько этапов:
- Анализ требований compliance — изучаем юрисдикцию, типы операций, необходимые отчёты.
- Подключение API провайдера — регистрация, получение ключей, настройка webhook.
- Настройка risk-логики — определяем пороги для автоматической блокировки, ручного review и пропуска.
- Интеграция с платформой — встраиваем вызовы AML в процессы депозита/вывода.
- Тестирование на исторических данных — прогоняем прошлые транзакции для калибровки.
- Запуск в production и мониторинг — отслеживаем false positives, корректируем правила.
Почему стоит использовать dual-provider стратегию?
Для production: два провайдера снижают риск ложноотрицательных результатов. Логика: BLOCK если хотя бы один блокирует, REVIEW если хотя бы один флагирует.
Пример dual-provider стратегии:
async function dualProviderScreen(address: string, txHash: string): Promise<RiskDecision> { const [chainalysisResult, ellipticResult] = await Promise.allSettled([ chainalysis.screenTransfer({ transferReference: txHash, ... }), elliptic.getWalletRisk(address, asset), ]); const c = chainalysisResult.status === "fulfilled" ? chainalysisResult.value : null; const e = ellipticResult.status === "fulfilled" ? ellipticResult.value : null; if (!c && !e) throw new Error("Both AML providers unavailable"); const maxScore = Math.max( c?.riskScore ?? 0, e ? e.riskScore * 10 : 0, ); if (maxScore >= 70 || c?.status === "BLOCKED") return { decision: "BLOCK", score: maxScore }; if (maxScore >= 40) return { decision: "REVIEW", score: maxScore }; return { decision: "ALLOW", score: maxScore }; } Dual-provider система позволяет снизить операционные затраты на compliance до 30% за счёт уменьшения false positives.
Что входит в работу
- Документация интеграции на русском и английском.
- Исходный код клиента для TypeScript (совместим с Node.js и браузером).
- Настройка dashboard для compliance team (фильтрация, экспорт, уведомления).
- Обучение команды: как интерпретировать risk score и реагировать на alerts.
- Поддержка после запуска: 2 недели мониторинга и доработок.
На более чем 20 проектах мы отработали все типовые ошибки: от неверной нормализации score до таймаутов при высокой нагрузке. Гарантируем, что ваша платформа будет соответствовать требованиям регуляторов без постоянных ложных блокировок.
Закажите интеграцию AML-скрининга под ключ — оценим ваш проект за 1 день. Напишите нам в Telegram или на почту, чтобы получить консультацию и примерное коммерческое предложение.







