Транзакция пользователя блокируется без объяснения причин — знакомая ситуация? Мы интегрировали 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 или на почту, чтобы получить консультацию и примерное коммерческое предложение.







