Інтеграція з Notabene (Travel Rule compliance)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Інтеграція з Notabene (Travel Rule compliance)
Середній
~3-5 днів
Часті запитання

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

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

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

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

Інтеграція з Notabene (Travel Rule compliance)

Notabene — провідний Travel Rule messaging провайдер з охватом 500+ VASP в 30+ країнах. SDK доступний для JavaScript/TypeScript, Python та Go. Інтеграція займає 1-2 тижні.

SDK setup та аутентифікація

import { NotabeneSDK } from "@notabene/javascript-sdk";

const sdk = new NotabeneSDK({
  audience: "https://api.notabene.id",
  clientId: process.env.NOTABENE_CLIENT_ID,
  clientSecret: process.env.NOTABENE_CLIENT_SECRET,
  vaspDID: process.env.MY_VASP_DID,
});

Вихідний переклад: повний flow

async function processOutgoingTransferTravelRule(withdrawal: Withdrawal) {
  // 1. Ідентифікація VASP одержувача
  const { vasp: beneficiaryVASP } = await sdk.addresses.lookup({
    address: withdrawal.destinationAddress,
    asset: withdrawal.asset,
  });
  
  if (!beneficiaryVASP) {
    // Unhosted wallet — окремена процедура
    await handleUnhostedWallet(withdrawal);
    return;
  }
  
  // 2. Створення transfer record
  const transfer = await sdk.transfers.create({
    transactionAsset: withdrawal.asset,
    transactionAmount: withdrawal.amount.toString(),
    originatorVASPdid: process.env.MY_VASP_DID,
    beneficiaryVASPdid: beneficiaryVASP.did,
    originator: buildOriginatorInfo(withdrawal.user),
    beneficiary: { beneficiaryPersons: [], accountNumber: [withdrawal.destinationAddress] },
    transactionBlockchainInfo: {
      origin: withdrawal.fromAddress,
      destination: withdrawal.destinationAddress,
    },
  });
  
  // 3. Чекаємо підтвердження (ACK або NACK від beneficiary VASP)
  const confirmed = await waitForTransferConfirmation(transfer.id);
  
  if (!confirmed) {
    // Best-efforts: логуємо та продовжуємо (більшість регуляторів це приймає)
    await logTravelRuleAttempt(withdrawal.id, transfer.id, "NO_RESPONSE");
  }
  
  // 4. Виконуємо виведення
  await executeBlockchainWithdrawal(withdrawal);
}

Вхідний переклад: отримання Travel Rule даних

// Webhook від Notabene коли отримані Travel Rule дані
app.post("/webhooks/notabene", async (req, res) => {
  const { type, transfer } = req.body;
  
  if (type === "transfer.created") {
    await handleIncomingTravelRuleData(transfer);
  }
  
  res.status(200).send();
});

async function handleIncomingTravelRuleData(transfer: NotabeneTransfer) {
  // Зберігаємо отримані дані
  await db.saveTravelRuleRecord({
    externalId: transfer.id,
    senderVASP: transfer.originatorVASPdid,
    originator: transfer.originator,
    destinationAddress: transfer.transactionBlockchainInfo.destination,
    asset: transfer.transactionAsset,
    amount: transfer.transactionAmount,
  });
  
  // Підтверджуємо отримання
  await sdk.transfers.update(transfer.id, { status: "ACK" });
}

Статуси transfer та обробка

Статус Значення Дія
CREATED Створений, чекає Нічого
SENT Відправлений beneficiary VASP Чекаємо відповідь
ACK Одержувач підтвердив Виконати переклад
NACK Одержувач відмовив Відмінити або escalate
EXPIRED Нема відповіді за timeout Best-efforts → виконати з логом

Інтеграція Notabene в процес ввода та виводу коштів, включаючи webhook handling та unhosted wallet flow — 1-2 тижні.