Розробка системи KYC/AML для криптобіржі — збалансований комплаєнс

Розробка системи KYC/AML для криптобіржі Криптобіржа без KYC/AML — це бомба уповільненої дії. Регулятори (FATF, MiCA, локальні ЦБ) вводять великі штрафи, банки розривають кореспондентські рахунки, а користувачі втрачають довіру. Система, яка перевіряє кожного за повною програмою, відсікає 40–60%

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Розробка системи 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 — при необхідності провайдера можна замінити без переписування архітектури.

Покроковий план впровадження

  1. Аналіз вимог — визначаємо регуляторні зобов'язання (FATF, 5AMLD, локальні закони) та обираємо провайдерів.
  2. Проектування архітектури — KYC state machine, AML screening pipeline, transaction monitoring engine.
  3. Інтеграція KYC провайдера — Sumsub/Onfido, налаштування webhook'ів та state machine.
  4. Впровадження AML скринінгу — підключення Chainalysis KYT, Elliptic, кешування результатів.
  5. Розробка transaction monitoring — кастомні детектори structuring, velocity, mixing.
  6. SAR модуль — автоматичне формування звітів, compliance dashboard.
  7. Тестування та compliance review — перевірка на реальних кейсах, навантажувальне тестування.
  8. Деплой та навчання команди — 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 системи під ключ і забезпечте відповідність регуляторним вимогам.