Разработка off-ramp шлюза (крипто → фиат)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка off-ramp шлюза (крипто → фиат)
Сложная
от 2 недель до 3 месяцев
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1062
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка off-ramp шлюза (крипто → фиат)

Off-ramp — обратный процесс: пользователь продаёт криптовалюту и получает фиатные деньги на банковский счёт или карту. Технически и регуляторно это сложнее on-ramp: платформа принимает крипто (необратимо), конвертирует в фиат и выполняет банковский перевод. Любой сбой на любом этапе — прямые финансовые потери.

Ключевые отличия от on-ramp

В on-ramp основной риск — chargeback: пользователь вернёт платёж после получения крипто. В off-ramp эта угроза отсутствует, но появляются другие:

Compliance-риски: банки крайне осторожны в отношении крипто-компаний. Многие традиционные банки отказывают в обслуживании VASP. Нужны партнёрские банки с опытом работы с криптобизнесом.

AML-сложность: при off-ramp система должна проверить происхождение криптовалюты. Монеты с mixer'ов (Tornado Cash и аналоги) или известных мошеннических адресов должны быть заблокированы. Blockchain analytics — обязательный компонент.

FX-риск: между получением крипто и отправкой фиата проходит время. За это время курс может измениться. Система должна немедленно хеджировать позицию.

Архитектура off-ramp шлюза

Crypto Receiving Module — мониторинг входящих транзакций на deposit адресах. Ожидание необходимого количества подтверждений перед началом обработки.

Blockchain Analytics Module — скрининг входящих монет:

class CryptoScreener:
    def __init__(self, chainalysis_client: ChainalysisClient):
        self.client = chainalysis_client

    async def screen_transaction(self, tx_hash: str, amount: float) -> ScreeningResult:
        result = await self.client.check_transaction(tx_hash)

        # Риск-классификация
        if result.risk_score >= 8:  # 0-10 шкала
            return ScreeningResult.REJECT
        elif result.risk_score >= 5:
            return ScreeningResult.MANUAL_REVIEW
        else:
            return ScreeningResult.APPROVE

        # Специфические кейсы
        if any(cat in result.categories for cat in ["mixer", "sanctions", "darknet"]):
            return ScreeningResult.REJECT

Hedging Module — немедленная продажа полученной крипто на CEX для фиксации курса. Время между получением и продажей должно быть минимальным.

Fiat Settlement Module — отправка банковского перевода. SEPA (Европа, 1 рабочий день), SWIFT (международные, 2–5 дней), Faster Payments (UK, минуты), ACH (США, 1–3 дня).

Hedging и управление курсовым риском

Между подтверждением транзакции в блокчейне и исполнением банковского перевода может пройти от нескольких минут до нескольких часов. За это время курс BTC может измениться на 1–3%.

Немедленный хедж через limit order на CEX сразу после получения достаточного числа подтверждений:

async def hedge_position(self, crypto_amount: Decimal, asset: str, order_id: str):
    """Немедленно продаём полученную крипто на бирже"""
    exchange = self.get_best_exchange_for_hedging(asset)

    # Market order для немедленного исполнения
    sell_order = await exchange.create_market_sell_order(
        symbol=f"{asset}/USDT",
        amount=float(crypto_amount)
    )

    # Записываем результат хеджа для расчёта итоговой суммы
    fill_price = sell_order["average"]
    usdt_received = sell_order["cost"]

    await self.order_repo.update_hedge(
        order_id=order_id,
        hedge_price=fill_price,
        usdt_received=usdt_received
    )

    return usdt_received

Альтернатива market order — aggressive limit order (немного лучше bid-price) с автоматическим переходом в market order через 30 секунд при неисполнении.

Банковская интеграция

Для SEPA-переводов используем Banking-as-a-Service провайдеров: Modulr, ClearBank, Railsr, или прямую интеграцию с банком через SWIFT MT103/ISO 20022.

class SEPATransferService:
    async def initiate_transfer(self, payout: Payout) -> str:
        """Возвращает transaction reference"""
        payload = {
            "amount": str(payout.fiat_amount),
            "currency": payout.currency,  # "EUR"
            "creditor_name": payout.recipient_name,
            "creditor_iban": payout.iban,
            "creditor_bic": payout.bic,
            "reference": payout.reference,
            "end_to_end_id": str(payout.id)
        }

        resp = await self.banking_client.post("/payments/sepa", json=payload)
        if resp.status_code == 201:
            return resp.json()["transaction_id"]
        else:
            raise PaymentError(f"SEPA transfer failed: {resp.text}")

Процесс обработки заявки

  1. Пользователь создаёт заявку на вывод: указывает сумму/актив и реквизиты
  2. Система генерирует уникальный deposit address и показывает курс (действителен 15 минут)
  3. Пользователь отправляет крипто
  4. Система обнаруживает входящую транзакцию (мемпул мониторинг)
  5. Скрининг крипто через Chainalysis/Elliptic
  6. После N подтверждений — хедж на бирже
  7. Отправка банковского перевода
  8. Уведомление пользователя с transaction reference

Весь процесс от получения крипто до отправки банковского перевода — 10–30 минут. Зачисление на счёт пользователя — в зависимости от метода.

Лимиты и комплаенс

Off-ramp система обязана вести Travel Rule записи для транзакций > $1000/€1000 (FATF Recommendation 16). Для каждого перевода — идентификация отправителя (originator) и получателя (beneficiary) с передачей данных через IVMS101 стандарт при использовании совместимых VASP.

Порог Требование
< €1,000 Базовая KYC (имя, email)
€1,000 – €10,000 Полная KYC (документ + selfie)
> €10,000 EDD (Enhanced Due Diligence)
> €10,000 в день Автоматический SAR-репорт в FIU

Мониторинг системы

Критические алерты: неотправленный перевод > 2 часов после хеджа, транзакция застряла в блокчейне > 2 часов (low gas fee), ошибка банковского API. Каждый шаг пайплайна пишет статус в PostgreSQL с timestamp — это позволяет отслеживать SLA и находить bottlenecks.