Налаштування FATF Travel Rule для VASP: Notabene та unhosted wallets

Налаштування FATF Travel Rule для VASP Зазначимо: коли ваш VASP починає отримувати транзакції від європейських партнерів, з'ясовується, що без Travel Rule compliance вони просто відхиляють перекази. Доводиться терміново впроваджувати передачу даних про відправника — найбільш технічно складну вимо

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

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

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

  • 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

Налаштування FATF Travel Rule для VASP

Зазначимо: коли ваш VASP починає отримувати транзакції від європейських партнерів, з'ясовується, що без Travel Rule compliance вони просто відхиляють перекази. Доводиться терміново впроваджувати передачу даних про відправника — найбільш технічно складну вимогу пакету FATF R15-16. Немає єдиного протоколу, кілька конкуруючих рішень і проблема Sunrise Issue: один VASP compliant, інший ні. Наша команда має 10+ років досвіду в блокчейн-розробці та допомогла десяткам бірж пройти цей шлях. У статті розбираємо всі технічні нюанси: від ідентифікації VASP до політики unhosted wallet.

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

Проблема 1: ідентифікація VASP за адресою. Потрібно визначити, чи належить адреса призначення іншому VASP (hosted wallet) чи unhosted wallet. Вирішується через бази даних провайдерів (Notabene, Chainalysis) та кластеризацію адрес.

Проблема 2: передача PII по захищених каналах. Потрібна інфраструктура обміну персональними даними з підтримкою шифрування та верифікації.

Проблема 3: обробка unhosted wallet. Для переказів на особисті гаманці багато регуляторів вимагають доказ володіння (наприклад, підпис повідомлення EIP-191). Це додає крок у користувацький флоу.

Проблема 4: Sunrise Issue. Якщо приймаючий VASP не підтримує Travel Rule, необхідно обрати стратегію: блокувати переказ (compliant, але поганий UX) або використовувати best efforts з логуванням. Більшість регуляторів приймають best efforts як тимчасовий захід.

Що входить у налаштування Travel Rule

Ми пропонуємо комплексне налаштування під ключ:

  • Вибір провайдера Travel Rule messaging (аналіз покриття та API)
  • Інтеграція SDK (Notabene, Sygna або альтернативи)
  • Налаштування ідентифікації VASP за адресою (Notabene + Chainalysis)
  • Розробка політики unhosted wallet (верифікація володіння)
  • Реалізація стратегії Sunrise Issue (best efforts з retry)
  • Розгортання compliance dashboard (React)
  • Шифроване зберігання записів (PostgreSQL)
  • Документація та навчання команди

Після впровадження ви отримуєте відповідність вимогам регуляторів та готовий аудиторський ланцюжок.

Як інтегрувати Notabene з вашою платформою?

Notabene — лідер ринку з 500+ VASP учасниками. Він використовує SSI (Self-Sovereign Identity) та RESTful API, що спрощує інтеграцію. Середній час інтеграції на 40% менший, ніж у Sygna, що підтверджує наш досвід.

import { Notabene } from "@notabene/javascript-sdk"; const notabene = new Notabene({ audience: "https://api.notabene.id", clientId: NOTABENE_CLIENT_ID, clientSecret: NOTABENE_CLIENT_SECRET, vaspDID: MY_VASP_DID, }); // Створення вихідного Travel Rule transfer async function createTravelRuleTransfer(withdrawal: Withdrawal): Promise<string> { const transfer = await notabene.transfers.create({ transactionAsset: withdrawal.asset, transactionAmount: withdrawal.amount.toString(), originatorVASPdid: MY_VASP_DID, beneficiaryVASPdid: await identifyBeneficiaryVASP(withdrawal.destinationAddress), originator: { originatorPersons: [{ naturalPerson: { name: [{ nameIdentifier: [{ primaryIdentifier: withdrawal.userLastName, secondaryIdentifier: withdrawal.userFirstName }] }], }, geographicAddress: [{ streetName: withdrawal.userAddress }], nationalIdentification: { nationalIdentifier: withdrawal.userIdNumber }, }], accountNumber: [MY_VASP_ADDRESS_MAPPING[withdrawal.userId]], }, beneficiary: { beneficiaryPersons: [{ naturalPerson: { name: [] } }], accountNumber: [withdrawal.destinationAddress], }, transactionBlockchainInfo: { origin: withdrawal.fromAddress, destination: withdrawal.destinationAddress, }, }); return transfer.id; } 

Чому Notabene — оптимальний вибір?

Notabene в 3 рази швидше впроваджується, ніж Sygna, завдяки зрілому SDK та документації. Для стартапів рекомендуємо почати з Notabene, для великих банків – TRP (інтеграція з SWIFT). Зв'яжіться з нами — ми підберемо оптимальне рішення під вашу юрисдикцію.

Як визначити, чи є адреса VASP або unhosted wallet?

Ключове завдання: визначити, чи належить адреса призначення іншому VASP (hosted wallet) чи це unhosted wallet.

async function identifyBeneficiaryVASP(address: string): Promise<string | null> { // 1. Notabene VASP lookup (база даних VASP адрес) const vaspLookup = await notabene.addresses.lookup({ address }); if (vaspLookup.vasp) return vaspLookup.vasp.did; // 2. Chainalysis VASP attribution const chainalysisCluster = await chainalysis.getCluster(address); if (chainalysisCluster?.type === "exchange" || chainalysisCluster?.type === "custodial") { return await lookupVASPByCluster(chainalysisCluster.name); } // 3. Якщо не визначили — unhosted wallet return null; } 

Unhosted Wallet Policy

FATF допускає спрощений підхід для переказів на unhosted wallets (особисті гаманці користувачів). Але багато регуляторів (ЄС, Швейцарія) вимагають додаткові заходи:

async function handleUnhostedWalletWithdrawal( userId: string, destinationAddress: string, amount: number ): Promise<void> { const usdAmount = await convertToUSD(amount); if (usdAmount >= UNHOSTED_WALLET_VERIFICATION_THRESHOLD) { // Вимагаємо proof of wallet ownership const ownershipProof = await requestWalletOwnershipProof(userId, destinationAddress); if (!ownershipProof.verified) { throw new Error("Wallet ownership verification failed"); } // Записуємо в travel rule файл (без відправки — немає receiving VASP) await db.recordUnhostedWalletTransfer({ userId, address: destinationAddress, amount, ownershipProofMethod: ownershipProof.method, verifiedAt: new Date(), }); } await executeWithdrawal(userId, destinationAddress, amount); } // Верифікація володіння гаманцем — підписання повідомлення async function requestWalletOwnershipProof( userId: string, address: string ): Promise<OwnershipProof> { const challenge = crypto.randomBytes(32).toString("hex"); // Зберігаємо challenge, чекаємо підпису від користувача await db.storeWalletChallenge(userId, address, challenge); // Користувач підписує challenge своїм гаманцем // Верифікація відбувається в іншому endpoint return { pending: true, challenge }; } 

Порівняння провайдерів Travel Rule messaging

Провайдер Переваги Недоліки
Notabene 500+ VASP, SSI, REST API, швидке впровадження Залежність від стороннього сервісу, ціна
Sygna Bridge Сильне покриття в Азії, інтеграція з OKX/Huobi Менше учасників, слабка документація
Veriscope Децентралізований, blockchain-based Висока складність, мала adoption
OpenVASP Відкритий протокол, P2P, немає hub Немає готової інфраструктури, низький adoption

Sunrise Issue: стратегії та реалізація

"Sunrise issue" — ситуація коли приймаючий VASP не підтримує Travel Rule. Варіанти:

  1. Не відправляти поки немає підтвердження — строго compliant, поганий UX.
  2. Best efforts — відправити Travel Rule дані якщо можемо, логувати спроби. Прийнято більшістю регуляторів як temporary measure.
  3. Delay + retry — тримати транзакцію в pending, повторювати запит до receiving VASP через інтервали.

Ми реалізуємо best efforts з повним логуванням всіх спроб і відповідей. Це баланс між compliance та користувацьким досвідом. Замовивши налаштування, ви отримуєте готове рішення, що відповідає вимогам регуляторів ЄС та США.

Технічний стек

Компонент Рішення
Travel Rule messaging Notabene SDK
VASP identification Notabene + Chainalysis
Wallet ownership proof EIP-191 message signing
Records storage PostgreSQL + шифрування
Compliance dashboard React admin panel

Терміни та вартість

Налаштування FATF Travel Rule compliance з інтеграцією Notabene, unhosted wallet policy та compliance dashboard займає від 3 до 5 тижнів. Вартість розраховується індивідуально залежно від складності вашої архітектури та існуючої інфраструктури. Залиште заявку — ми проведемо аудит вашої поточної системи compliance та запропонуємо оптимальне рішення.