Розробка системи KYC/AML для криптобіржі
Криптобіржа без KYC/AML — це бомба уповільненої дії. Регулятори (FATF, MiCA, локальні ЦБ) вводять великі штрафи, банки розривають кореспондентські рахунки, а користувачі втрачають довіру. Система, яка перевіряє кожного за повною програмою, відсікає 40–60% трафіку — факт, підтверджений сотнями проєктів. FATF Recommendation 16 рекомендує застосовувати заходи з протидії відмиванню коштів та фінансуванню тероризму. Ми будуємо збалансований KYC/AML: комплаєнс без убитого conversion rate.
Типова проблема: біржа запускається з базовою верифікацією, а через пів року приходить перший запит від регулятора з вимогою надати звіт по підозрілих транзакціях. Якщо системи моніторингу немає — штрафи та блокування рахунків. Штрафи за відсутність KYC/AML можуть сягати великих сум — до 4% від обороту. Щоб уникнути такого сценарію та знизити витрати на комплаєнс, вбудовуємо KYC/AML з першого коміту, а не допилюємо після аудиту. Наша команда — 5+ років досвіду в web3 compliance, понад 30 реалізованих проєктів KYC/AML для криптобірж.
Архітектура багаторівневої KYC
Однорівнева верифікація — помилка архітектури. Правильний підхід — багаторівнева система:
Tier 0 (без KYC)
Тільки перегляд платформи. Жодних транзакцій. Потрібен для ознайомлення користувачів.
Tier 1 (Email + AML перевірка)
До невеликого ліміту в стейблкоїнах на місяць. Депозит та вивід тільки криптовалюти. Автоматичний wallet screening через Chainalysis або Elliptic при кожному депозиті. Час верифікації: менше 1 хвилини.
Tier 2 (Повна 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), }; } Як ми будуємо збалансований 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 системи під ключ і забезпечте відповідність регуляторним вимогам.







