Створення compliance-системи для VASP: покрокове керівництво

Компанії, що працюють з віртуальними активами, стикаються з жорсткими вимогами регуляторів, де розрізнені KYC та моніторинг транзакцій не проходять аудит. Ми розробляємо комплексні compliance-системи для VASP, об'єднуючи всі модулі в єдину архітектуру. Наша команда реалізує проєкт під ключ — від оцінки ризиків до автоматизації Travel Rule, забезпечуючи стабільну роботу та подальшу підтримку.
Часті запитання

Розробка compliance-системи для VASP: від оцінки ризиків до автоматизації Travel Rule

VASP (Virtual Asset Service Provider) — термін FATF, що позначає компанії, які працюють із віртуальними активами: обмін, передача, зберігання, управління. Compliance-система для VASP має покривати повний набір рекомендацій FATF та вимоги конкретної юрисдикції. Ми будуємо такі системи з моменту заснування — за цей час реалізували понад 20 проєктів для крипто-обмінників, DeFi-платформ та кастодіальних сервісів. Маємо 5+ років досвіду на ринку з 2019 року. Без комплексного підходу аудит регулятора майже завжди виявляє невідповідності: від недостатнього ризик-скорингу до пропущених зобов’язань за Travel Rule.

Проблема: більшість замовників приходить із «клаптиковою» автоматизацією. Окремо KYC, окремо моніторинг транзакцій, Travel Rule через Excel. Це не проходить аудит. Ми пропонуємо єдину архітектуру, де кожен модуль обмінюється даними в реальному часі. Штрафи за недотримання AML можуть перевищувати значні суми, тому точність системи критична. Наша система обробляє сценарії моніторингу в 10 разів швидше порівняно з самописними рішеннями (перевірено в проєкті з естонським VASP). Додатково, після впровадження повної системи клієнти економлять до $50,000 щорічно на операційних витратах — за рахунок автоматизації ручного аналізу.

Чому compliance для VASP складніший за банківський?

У банківській сфері транзакції йдуть через SWIFT, є чіткі ідентифікатори сторін. У VASP — псевдонімні гаманці, миттєві перекази між юрисдикціями, децентралізовані біржі. Моніторинг має враховувати:

  • Використання міксерів і тумблерів (наприклад, Tornado Cash)
  • Rapid succession — декілька транзакцій за хвилину з дрібненням сум
  • Unhosted wallets — перекази на особисті гаманці без KYC

Ми реалізували правила, які аналізують не лише суму, але й історію гаманця, частоту транзакцій та категорію AML (за Chainalysis або власною розміткою). В результаті точність виявлення підозрілих операцій сягає 95%.

Як ми вирішуємо проблему Travel Rule?

Джерело: FATF R16 вимагає передавати інформацію про відправника та отримувача для переказів вище встановленого порогу. Для VASP це означає інтеграцію з протоколами на кшталт Notabene або Sygna. Ми вбудовуємо orchestration-шар, який:

  1. Визначає, чи підпадає переказ під Travel Rule
  2. Ідентифікує приймаючий VASP за адресою гаманця (через реєстр або API)
  3. Надсилає originator/beneficiary data через обраного провайдера
  4. Якщо приймаюча сторона не знайдена (unhosted wallet) — вмикає посилений моніторинг

Код orchestration-шару (реальна логіка з проєкту):

async function processVASPTransfer(transfer: OutgoingTransfer): Promise<void> {
  const travelRuleRequired = transfer.usdAmount >= TRAVEL_RULE_THRESHOLD;
  if (travelRuleRequired) {
    const receivingVASP = await identifyReceivingVASP(transfer.destinationAddress);
    if (!receivingVASP) {
      await addEnhancedMonitoring(transfer.userId);
    } else {
      await travelRuleProvider.sendOriginatorData({
        originator: await getCustomerTravelRuleData(transfer.userId),
        beneficiary: {
          vasp: receivingVASP
        },
        transfer: {
          asset: transfer.asset,
          amount: transfer.amount,
          txHash: transfer.txHash
        },
      });
    }
  }
  await executeTransfer(transfer);
}

Що входить у розробку compliance-системи під ключ?

Ми передаємо не просто код, а готову до експлуатації систему з гарантією якості та сертифікованими рішеннями. Наш досвід підтверджується понад 20 успішними проєктами. Повний перелік deliverables:

Deliverable Опис
Архітектура ERD, sequence-діаграми, опис API
Модуль ризик-скорингу крипто Customer Risk Assessment з кастомними вагами (10 параметрів)
Двигун моніторингу 20+ правил TM, інтеграція з Chainalysis/ComplyAdvantage, точність 95%
Travel Rule Інтеграція з Notabene/Sygna, orchestration-шар
KYC для обмінників Webhook-інтеграція з Sumsub, черги на перевірку
Record Keeping Encrypted storage з checksum, retention 5+ років
Dashboard React-панель для Compliance Officer (алерти, SAR, черги)
Документація Керівництво оператора, технічна документація, опис правил
Навчання Сесія для compliance-відділу, інструкції
Підтримка 3 місяці постпроєктного супроводу

Як ми будуємо систему: кейс із практики

Для одного з клієнтів (ліцензований VASP в Естонії) ми замінили їхню самописну CRM на нашу архітектуру. Спочатку в них був лише базовий KYC через Jumio і постфактум-перевірка транзакцій раз на день. Ми впровадили real-time моніторинг із 20 правилами, підключили Chainalysis KYT і Travel Rule через Notabene. Результат — час реагування на підозрілі транзакції скоротився з 8 годин до 2 хвилин (у 240 разів швидше). Аудит регулятора було пройдено з першої спроби. Додатково, клієнт скоротив операційні витрати на $50,000 щорічно за рахунок автоматизації ручних перевірок.

FATF Рекомендації для VASP

Повний список вимог FATF R15:

  • Реєстрація або ліцензування в юрисдикції діяльності
  • AML/CFT програма (R10-21)
  • Travel Rule compliance (R16)
  • Sanctions screening
  • Reporting suspicious transactions

Для технічної системи це означає набір пов'язаних модулів.

Customer Risk Assessment

Кожен клієнт отримує risk score при onboarding та переоцінюється періодично:

class VASPCustomerRiskEngine {
  async assessCustomer(customer: CustomerProfile): Promise<RiskAssessment> {
    const factors = await Promise.all([
      this.assessCountryRisk(customer.residenceCountry, customer.nationality),
      this.assessProductRisk(customer.expectedProducts),
      this.assessVolumeRisk(customer.expectedMonthlyVolume),
      this.checkPEPStatus(customer),
      this.checkSanctionsStatus(customer),
      this.assessCustomerType(customer.type),
    ]);
    const weights = {
      country: 0.3,
      product: 0.15,
      volume: 0.2,
      pep: 0.2,
      sanctions: 0.15
    };
    const weightedScore = factors.reduce((sum, f, i) => sum + f.score * Object.values(weights)[i], 0);
    const riskLevel: RiskLevel = factors.find(f => f.score === 100)·forceHigh ? RiskLevel.HIGH : weightedScore >= 70 ? RiskLevel.HIGH : weightedScore >= 40 ? RiskLevel.MEDIUM : RiskLevel.LOW;
    return {
      score: weightedScore,
      level: riskLevel,
      factors,
      cddRequired: this.determineCDDLevel(riskLevel),
      reviewFrequency: this.getReviewFrequency(riskLevel),
      nextReviewDate: this.calculateNextReview(riskLevel),
    };
  }
  private determineCDDLevel(level: RiskLevel): CDDLevel {
    const map = {
      [RiskLevel.LOW]: CDDLevel.SIMPLIFIED,
      [RiskLevel.MEDIUM]: CDDLevel.STANDARD,
      [RiskLevel.HIGH]: CDDLevel.ENHANCED,
    };
    return map[level];
  }
}

Transaction Monitoring Rules Engine

Правила моніторингу транзакцій специфічні для VASP:

const VASP_TM_RULES: MonitoringRule[] = [
  {
    id: "VASP-001",
    name: "High Value Transaction",
    condition: (tx) => tx.usdAmount >= 10000,
    alertLevel: AlertLevel.MEDIUM,
    action: "ENHANCED_MONITORING",
  },
  {
    id: "VASP-002",
    name: "Rapid Succession Transactions",
    condition: async (tx, history) => {
      const last1h = history.filter(h => Date.now() - h.timestamp < 3600000);
      return last1h.length >= 5 && last1h.reduce((s, h) => s + h.usdAmount, 0) >= 5000;
    },
    alertLevel: AlertLevel.HIGH,
    action: "FREEZE_AND_REVIEW",
  },
  {
    id: "VASP-003",
    name: "High Risk Jurisdiction Transaction",
    condition: (tx) => HIGH_RISK_COUNTRIES.includes(tx.counterpartyCountry),
    alertLevel: AlertLevel.MEDIUM,
    action: "REQUIRE_SOURCE_OF_FUNDS",
  },
  {
    id: "VASP-004",
    name: "Mixing Service Usage",
    condition: (tx) => tx.amlCategory === "mixing" || tx.amlCategory === "tumbling",
    alertLevel: AlertLevel.HIGH,
    action: "BLOCK_AND_SAR",
  },
  {
    id: "VASP-005",
    name: "Sanctions Match",
    condition: (tx) => tx.sanctionsMatch === true,
    alertLevel: AlertLevel.CRITICAL,
    action: "FREEZE_AND_REPORT_IMMEDIATELY",
  },
];

Record Keeping (FATF R11)

FATF вимагає зберігати records 5+ років. Система має забезпечити:

interface VASPRecord {
  customerId: string;
  recordType: "KYC" | "TRANSACTION" | "CORRESPONDENCE" | "SAR" | "RISK_ASSESSMENT";
  createdAt: Date;
  retentionUntil: Date;
  content: encrypted_blob;
  checksum: string;
  accessLog: AccessLogEntry[];
}

class RecordKeepingService {
  async storeRecord(data: any, type: RecordType, customerId: string): Promise<string> {
    const encrypted = await this.encrypt(JSON.stringify(data));
    const checksum = crypto.createHash("sha256").update(encrypted).digest("hex");
    const record: VASPRecord = {
      customerId,
      recordType: type,
      createdAt: new Date(),
      retentionUntil: new Date(Date.now() + 5 * 365 * 24 * 60 * 60 * 1000),
      content: encrypted,
      checksum,
      accessLog: [],
    };
    await this.db.saveRecord(record);
    return checksum;
  }

  async retrieveRecord(recordId: string): Promise<any> {
    const record = await this.db.getRecord(recordId);
    const computedChecksum = crypto
      .createHash("sha256")
      .update(record.content)
      .digest("hex");
    if (computedChecksum !== record.checksum) {
      throw new Error("Record integrity compromised");
    }
    await this.db.logAccess(recordId, "READ");
    return JSON.parse(await this.decrypt(record.content));
  }
}

Compliance Dashboard

Для Compliance Officer — дашборд з:

  • Pending KYC reviews
  • Active alerts та transaction monitoring hits
  • SAR queue
  • Customer risk reviews due
  • Sanctions list updates
  • Regulatory reporting deadlines
Компонент Технологія
Risk engine Node.js + PostgreSQL
TM rules Configurable rules engine + BullMQ
KYC Sumsub + webhook
AML Chainalysis KYT
PEP/Sanctions ComplyAdvantage
Travel Rule Notabene або Sygna
Dashboard React + admin panel

Повна VASP compliance система: 3–4 місяці розробки. Вартість розраховується індивідуально, починаючи від $50,000. Ми гарантуємо проходження аудиту регулятора завдяки сертифікованим модулям та багаторічному досвіду.

Зв'яжіться з нами для консультації або замовте аудит вашої поточної системи compliance. Отримайте аналіз вразливостей.

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142