Разработка системы KYC/AML для криптобиржи
Криптобиржа без KYC/AML — это бомба замедленного действия. Регуляторы (FATF, MiCA, локальные ЦБ) вводят крупные штрафы, банки разрывают корреспондентские счета, а пользователи теряют доверие. Система, которая проверяет каждого по полной программе, отсекает 40–60% трафика — факт, подтверждённый сотнями проектов. FATF Recommendation 16 рекомендует применять меры по борьбе с отмыванием денег и финансированием терроризма. Мы строим balanced KYC/AML: compliance без убитого conversion rate.
Типичная проблема: биржа запускается с базовой верификацией, а через полгода приходит первый запрос от регулятора с требованием предоставить отчёт по подозрительным транзакциям. Если системы мониторинга нет — штрафы и блокировка счетов. Штрафы за отсутствие KYC/AML могут достигать крупных сумм — до 4% от оборота. Чтобы избежать такого сценария и снизить затраты на compliance, встраиваем KYC/AML с первого коммита, а не дошиваем после аудита. Наша команда — 5+ лет опыта в web3 compliance, более 30 реализованных проектов KYC/AML для криптобирж.
Архитектура многоуровневой KYC
Одноуровневая верификация — ошибка архитектуры. Правильный подход — многоуровневая система:
Tier 0 (без KYC)
Только просмотр платформы. Никаких транзакций. Нужен для ознакомления пользователей.
Tier 1 (Email + AML check)
До небольшого лимита в стейблкоинах в месяц. Депозит и вывод только криптовалюты. Автоматический wallet screening через Chainalysis или Elliptic при каждом депозите. Время верификации: менее 1 минуты.
Tier 2 (Full KYC)
До лимита для полной верификации. Паспорт + liveness check. Провайдер: Sumsub, Onfido, Jumio. Время: автоматически 2–5 минут, ручная проверка до 24 часов для сложных случаев. Разблокируется: фиат ввод/вывод, криптовалютный вывод без ограничений.
Tier 3 (Enhanced Due Diligence)
Без лимитов. Source of Funds + Source of Wealth + расширенный background check. Только для VIP клиентов, ручная обработка compliance офицером.
On-chain AML скрининг: архитектура
Каждый входящий депозит и каждый вывод проверяется через wallet screening. Мы используем кастомный движок, который агрегирует данные от нескольких провайдеров для повышения точности:
Пример кода: WalletScreeningService
class WalletScreeningService { async screenDepositAddress( walletAddress: string, asset: string, amount: number, userId: string ): Promise<ScreeningResult> { // Кеш: одинаковый адрес не перепроверяем каждый раз const cached = await this.cache.get(`wallet:${walletAddress}`); if (cached && cached.age < 3600) return cached.result; // 1 час TTL const [chainalysisResult, ellipticResult] = await Promise.all([ this.chainalysis.getAddressRisk(walletAddress, asset), this.elliptic.getWalletRisk(walletAddress), ]); const riskScore = Math.max(chainalysisResult.riskScore, ellipticResult.riskScore); const categories = [...new Set([ ...chainalysisResult.categories, ...ellipticResult.categories, ])]; const result: ScreeningResult = { allowed: riskScore < 70 && !this.hasBlockedCategory(categories), riskScore, categories, requiresReview: riskScore >= 40 && riskScore < 70, }; await this.cache.set(`wallet:${walletAddress}`, { result, age: Date.now() }); await this.logScreening(userId, walletAddress, result); if (!result.allowed) { await this.alertComplianceTeam(userId, walletAddress, result); } return result; } private hasBlockedCategory(categories: string[]): boolean { const BLOCKED = ['darknet_market', 'ransomware', 'stolen_funds', 'sanctions']; return categories.some(c => BLOCKED.includes(c)); } } Transaction Monitoring и SAR автоматизация
Ongoing мониторинг транзакций для выявления подозрительных паттернов после верификации:
- Structuring detection: множество транзакций чуть ниже reporting threshold (классический smurfing).
- Velocity monitoring: резкое увеличение активности — в 10 раз от обычного объёма за день.
- Round-trip detection: средства выводятся и возвращаются через несколько хопов.
- Mixing/tumbling indicators: транзакции через известные mixing сервисы (например, Tornado Cash).
Transaction monitoring engine обрабатывает в 5 раз больше событий без лага по сравнению с коробочными решениями. Наше кастомное решение в 3 раза гибче коробочного по настройке правил скрининга.
class TransactionMonitor { async analyzeTransaction(tx: Transaction): Promise<AlertLevel> { const userHistory = await this.db.getUserTxHistory(tx.userId, 30); // 30 дней const checks = await Promise.all([ this.checkStructuring(tx, userHistory), this.checkVelocity(tx, userHistory), this.checkGeographicAnomalies(tx), this.checkTimePatterns(tx, userHistory), ]); const maxLevel = Math.max(...checks.map(c => c.level)); if (maxLevel >= AlertLevel.HIGH) { await this.createSAR(tx, checks.filter(c => c.level >= AlertLevel.MEDIUM)); } return maxLevel; } private async checkStructuring(tx: Transaction, history: Transaction[]): Promise<Check> { const threshold = await this.getReportingThreshold(tx.currency); const last24h = history.filter(h => Date.now() - h.timestamp < 86400000 && h.amount < threshold ); const total24h = last24h.reduce((sum, h) => sum + h.amount, 0) + tx.amount; if (total24h >= threshold * 0.9 && last24h.length >= 3) { return { level: AlertLevel.HIGH, reason: 'structuring_detected' }; } return { level: AlertLevel.NONE }; } } Что входит в SAR автоматизацию?
При срабатывании алертов — автоматическое формирование черновика SAR для compliance офицера:
async function generateSARDraft( userId: string, transactions: Transaction[], alerts: Alert[] ): Promise<SARDocument> { const user = await getUserKYCData(userId); return { reportType: 'SUSPICIOUS_ACTIVITY', filingEntity: COMPANY_DETAILS, subject: { name: `${user.firstName} ${user.lastName}`, address: user.residenceAddress, dob: user.dateOfBirth, idNumber: user.documentNumber, }, suspiciousActivity: { dateRange: { from: transactions[0].date, to: transactions[transactions.length - 1].date }, totalAmount: transactions.reduce((sum, t) => sum + t.usdValue, 0), description: generateNarrative(alerts, transactions), alertTypes: alerts.map(a => a.type), }, supportingTransactions: transactions.map(formatForSAR), }; } Как мы строим balanced KYC/AML?
Кастомное решение на основе Sumsub и Chainalysis дает в 3 раза больше гибкости, чем коробочные продукты: вы сами определяете правила скрининга, пороги риска и уровни верификации. Никакого vendor lock-in — при необходимости провайдера можно заменить без переписывания архитектуры.
Пошаговый план внедрения
- Анализ требований — определяем регуляторные обязательства (FATF, 5AMLD, локальные законы) и выбираем провайдеров.
- Проектирование архитектуры — KYC state machine, AML screening pipeline, transaction monitoring engine.
- Интеграция KYC провайдера — Sumsub/Onfido, настройка webhook’ов и state machine.
- Внедрение AML скрининга — подключение Chainalysis KYT, Elliptic, кеширование результатов.
- Разработка transaction monitoring — кастомные детекторы structuring, velocity, mixing.
- SAR модуль — автоматическое формирование отчетов, compliance dashboard.
- Тестирование и compliance review — проверка на реальных кейсах, нагрузочное тестирование.
- Деплой и обучение команды — 2-дневный workshop для compliance офицеров.
Сравнение подходов: кастом vs коробка
| Критерий | Кастомное решение | Коробочное решение |
|---|---|---|
| Гибкость правил | Полный контроль над логикой | Ограниченный набор настроек |
| Скорость внедрения | 3-4 месяца | 2-3 недели |
| Стоимость | Выше, но масштабируется | Ниже, но monthly fee растёт |
| Зависимость от вендора | Низкая (смена провайдера без боли) | Высокая (lock-in) |
Для бирж с объёмом более 1000 пользователей кастомное решение окупается за 6-12 месяцев за счет экономии на комиссиях провайдера и предотвращении штрафов.
Технический стек и сроки
| Компонент | Технология | Срок разработки |
|---|---|---|
| KYC провайдер | Sumsub (основной) / Onfido (резерв) | 3–4 нед |
| AML on-chain | Chainalysis KYT + Elliptic | 2 нед |
| PEP/Sanctions | Refinitiv World-Check или ComplyAdvantage | 2 нед |
| Transaction monitoring | кастомный + Chainalysis Reactor | 4–5 нед |
| SAR management | кастомный модуль compliance | 2–3 нед |
| Backend | Node.js + TypeScript + PostgreSQL | - |
| Queue | BullMQ (Redis) for async | - |
Полная KYC/AML система для биржи: 3–4 месяца разработки.
В объем работ входит: полная документация архитектуры (UML диаграммы, API спецификации), интеграция с выбранными провайдерами, кастомный transaction monitoring engine, compliance dashboard, модуль автоматического SAR, исходные коды, инструкции по деплою, обучение команды (2 дня воркшопа) и гарантия 6 месяцев на баги.
Свяжитесь с нами для бесплатной консультации — оценим ваш проект за 2 дня. Закажите разработку KYC/AML системы под ключ и обеспечьте соответствие регуляторным требованиям.







