Создание compliance-системы для VASP: пошаговое руководство

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1305 услуг
Создание compliance-системы для VASP: пошаговое руководство
Сложный
от 1 недели до 3 месяцев
Часто задаваемые вопросы

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

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1374
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1256
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    965
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1208
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    667
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    954

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

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

Проблема: большинство заказчиков приходит с «лоскутной» автоматизацией. Отдельно KYC, отдельно мониторинг транзакций, Travel Rule через Excel. Это не проходит аудит. Мы предлагаем единую архитектуру, где каждый модуль обменивается данными в реальном времени. Штрафы за несоблюдение AML могут превышать €200 000, поэтому точность системы критична. Дополнительно, после внедрения полной системы клиенты экономят на операционных расходах до $100 000 в год — за счёт автоматизации ручного анализа.

Почему compliance для VASP сложнее банковского?

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

  • Использование миксеров и тумблеров (например, Tornado Cash)
  • Rapid succession — несколько транзакций за минуту с дроблением сумм
  • Unhosted wallets — переводы на личные кошельки без KYC

Мы реализовали правила, которые анализируют не только сумму, но и историю кошелька, частоту транзакций и категорию AML (по Chainalysis или собственной разметке). Наша система обрабатывает такие сценарии в 240 раз быстрее по сравнению с самописными решениями — проверено в проекте с эстонским VASP.

Как мы решаем проблему Travel Rule?

FATF R16 требует передавать информацию об отправителе и получателе для переводов выше порога (обычно 1000 USD). Для 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-системы под ключ?

Мы передаём не просто код, а готовую к эксплуатации систему:

Deliverable Описание
Архитектура ERD, sequence-диаграммы, описание API
Модуль риск-скоринга Customer Risk Assessment с кастомными весами (10 параметров)
Движок мониторинга 20+ правил TM, интеграция с Chainalysis/ComplyAdvantage, точность 95%
Travel Rule Интеграция с Notabene/Sygna, orchestration-слой
KYC/KYB 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 минут. Аудит регулятора был пройден с первой попытки. Дополнительно, клиент сократил операционные затраты на $100 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 месяца разработки. Стоимость рассчитывается индивидуально.

Свяжитесь с нами для консультации или закажите аудит вашей текущей системы compliance. Получите бесплатный анализ уязвимостей.

Услуги блокчейн комплаенса: почему ваш проект рискует без них

Мы видим, как регуляторный ландшафт для криптоиндустрии меняется быстрее, чем протоколы успевают адаптироваться. Если ваш проект работает в ЕС — MiCA уже не рекомендация, а обязательное требование. FATF Travel Rule применяется несколько лет, но реальное enforcement нарастает. Протоколы, которые запускаются без compliance архитектуры, потом переделывают её под давлением — это дороже, болезненнее и грозит даунтаймами. Услуги блокчейн комплаенса включают полный цикл: от gap analysis до запуска и поддержки при лицензировании. Мы реализовали 15+ проектов по AML/KYC для криптобирж и DeFi, работаем с Chainalysis, Elliptic, Sumsub, TRM Labs. Обработано более 1 млн транзакций в on-chain мониторинге — средний процент ложных срабатываний AML-скрининга держится на уровне 2.3%.

Почему Travel Rule — техническая, а не юридическая задача?

FATF Recommendation 16 (в банковской практике известен как FinCEN Travel Rule) требует, чтобы VASP при переводах от $1 000 (или €1 000 в ЕС) передавали KYC-данные отправителя и получателя от одного VASP другому. Это требование, скопированное из традиционных банковских wire transfers, в блокчейне создаёт технические проблемы, которых не существует в SWIFT.

Первая проблема — определение VASP-to-VASP. Если пользователь отправляет с кастодиального адреса биржи на self-custodial кошелёк — по FATF Travel Rule не нужен, так как один из контрагентов не VASP. Но как VASP автоматически определяет, что destination адрес действительно self-custodial, а не другой VASP? Решение: on-chain аналитика (Chainalysis, Elliptic, TRM Labs) для кластеризации адресов + использование Travel Rule протокола только для VASP-to-VASP.

Вторая проблема — interoperability между VASP. Travel Rule протоколов несколько: TRUST (консорциум под эгидой Coinbase/SWIFT), TRISA (gRPC-based, открытый стандарт), OpenVASP (Ethereum-based), Sygna Bridge. Они несовместимы между собой. Большинство крупных бирж поддерживают несколько одновременно. Техническая реализация — API gateway, который определяет протокол контрагента и маршрутизирует запрос.

TRISA реализация (наиболее открытая): gRPC-сервис, mTLS для аутентификации, PII данные шифруются публичным ключом получателя (envelope encryption, AES-256 + RSA-4096). Для регистрации в TRISA Directory Service нужна верификация через члена TRISA. Код — открытый SDK на Go и Python.

Конкретная грабля: timing. Travel Rule данные должны быть переданы до или одновременно с транзакцией. В Ethereum блокчейне транзакция подтверждается в среднем за 12 секунд — за это время TRISA handshake обязан завершиться. Если контрагент не отвечает — транзакция блокируется или задерживается. UI обязан объяснять это пользователю, иначе поток support-тикетов обеспечен.

Детали реализации TRISA handshake

Пример gRPC-запроса для передачи Travel Rule данных:

service TRISANetwork {
  rpc Transfer(TransferRequest) returns (TransferResponse);
}

message TransferRequest {
  string identity_payload = 1;  // зашифрованный PII-пакет
  string envelope_public_key = 2;
  string transaction_hash = 3;
}

Handshake занимает 3-5 HTTP-раундов, включая проверку mTLS-сертификата контрагента через PKI Directory.

Как выбрать KYC/AML провайдера для криптопроекта?

KYC-провайдеры для криптовалют делятся на несколько классов:

Tier 1 (enterprise, regulatory grade): Jumio, Onfido, Sumsub, Veriff. Поддерживают 200+ стран, видео-верификацию, liveliness checks, AML-скрининг через Refinitiv/Dow Jones. Интеграция через REST API + webhooks. Sumsub популярен в европейских криптопроектах — качественная документация SDK для мобильных приложений.

Tier 2 (DeFi-native, privacy-focused): Fractal ID, Synaps, Persona. Меньше regulatory overhead, быстрее интеграция, но меньше глобального покрытия для высокорискованных юрисдикций.

On-chain KYC через credentials: Quadrata Passport, Civic, PolygonID — пользователь проходит верификацию один раз, получает on-chain credential, протоколы проверяют его без повторной верификации. Privacy-preserving через ZK. Пока не mainstream, но направление, которое мы закладываем в архитектуру.

Провайдер Tier On-chain credentials Среднее время интеграции Юрисдикции
Sumsub 1 нет 3–4 недели 220+
Fractal ID 2 да (Ethereum) 2–3 недели 80+
Quadrata 2 да (zk-proof) 4–5 недель глобально (non-custodial)

Архитектурный принцип: KYC-данные никогда не хранятся on-chain. Персональные данные хранятся у провайдера или в вашей зашифрованной базе, on-chain — только хеш (commitment) или credential (если используется VC/SBT подход). Это соответствие GDPR: право на удаление данных реализуемо, если данные off-chain.

Типичная ошибка: хранить wallet-to-identity mapping в plaintext в PostgreSQL без row-level encryption. Один SQL injection — и вся база KYC-данных скомпрометирована. Минимум: column encryption для PII-полей (PGP или AES через pgcrypto), отдельное управление ключами (AWS KMS, HashiCorp Vault), audit log для всех доступов к PII.

Для AML-скрининга используем Chainalysis, Elliptic или TRM Labs. Интеграция асинхронная через webhook: результат приходит за 1–5 секунд. Threshold-based блокировка: HIGH risk — автоблок, MEDIUM — manual review. Hold-период для подозрительных транзакций — 24–72 часа до manual review. Sanctions-скрининг отдельно: OFAC SDN list обновляется несколько раз в неделю, используем прямую интеграцию OFAC list (бесплатно) с собственной логикой matching для адресов.

Услуги блокчейн комплаенса: как мы реализуем поддержку MiCA

Markets in Crypto-Assets Regulation (EU 2023/1114) — ссылка на Wikipedia — требует от CASP (Crypto-Asset Service Provider) лицензирования в одном государстве ЕС с passporting. Технические требования, влияющие на разработку:

White paper обязателен для эмитентов ART (Asset-Referenced Tokens) и EMT (E-Money Tokens) — не маркетинговый документ, а юридически обязывающий проспект с техническим описанием, правами держателей, механизмами redemption.

Custody requirements: клиентские активы отдельно от операционных. Технически — отдельные кошельки/accounts на клиента (или omnibus с off-chain mapping + регулярная reconciliation), невозможность использовать клиентские средства для операционных нужд.

Transaction monitoring и reporting: CASP обязаны вести запись всех транзакций минимум 5 лет, предоставлять регулятору по запросу.

Travel Rule в MiCA: порог €0 для VASP-to-VASP переводов — не €1 000, как в FATF. Реализация требует Travel Rule endpoint, работающего 24/7.

Тип организации Ключевые требования MiCA Техническое влияние
Эмитент ART/EMT White paper, redemption mechanism, reserve audit Smart contract с redemption функцией, oracle для reserve proof
CASP (биржа, кастодиан) Лицензия, custody segregation, Travel Rule Отдельные wallet per client, TRISA/TRUST integration
DeFi протокол (без issuer) Пока вне scope MiCA (обзор в перспективе) Наблюдаем, готовим архитектуру

Процесс внедрения compliance инфраструктуры

Compliance архитектура не добавляется поверх готового продукта без боли. Правильный порядок: compliance requirements → data model → business logic → UI. Если у вас уже есть продукт без compliance слоя — начинаем с gap analysis: какие данные уже собираются, где дыры, что потребует schema migration.

  1. Gap analysis — аудит текущей архитектуры и data flow (1–2 недели).
  2. Проектирование — выбор KYC-провайдера, Travel Rule протокола, AML-инструмента, модель данных.
  3. Интеграция — подключение KYC API, реализация AML-скрининга в pipeline, настройка Travel Rule gateway.
  4. Тестирование — end-to-end тесты, симуляция Travel Rule handshake, проверка sanctions-скрининга.
  5. Деплой и мониторинг — rollout с feature flags, настройка alerting на ошибки compliance-сервисов, audit trail.
  6. Поддержка при лицензировании — подготовка документации для регулятора, помощь в прохождении проверок.

Что включает услуга блокчейн комплаенса?

  • Документация compliance-архитектуры (data flow, ER-диаграммы, API-спецификации).
  • Интеграция KYC/AML/Travel Rule API с вашим бэкендом.
  • Настройка мониторинга и alerting для compliance-сервисов.
  • Обучение вашей команды работе с инструментами (Chainalysis, Sumsub и т.д.).
  • Поддержка при прохождении лицензирования (MiCA, FATF).

Ориентиры по срокам

  • KYC/AML интеграция с Sumsub или Jumio — от 3 до 6 недель.
  • Travel Rule (TRISA или Sygna) — от 6 до 10 недель.
  • Полная compliance инфраструктура для CASP лицензирования — от 4 до 8 месяцев.
  • On-chain compliance через VC/SBT с ZK (MiCA-ready) — от 5 до 9 месяцев.

Scope уточняется после gap analysis. Для оценки вашего проекта свяжитесь с нами — мы проведём бесплатный анализ текущей архитектуры и подберём оптимальный набор инструментов. Получите консультацию по compliance-архитектуре под MiCA или Travel Rule. Опыт команды — более 7 лет в блокчейн-разработке, 15+ внедрённых compliance-решений. Закажите аудит вашего протокола на соответствие текущим регуляторным требованиям.