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

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка on-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

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

On-ramp шлюз — это точка входа пользователя из традиционной финансовой системы в крипто. Банковская карта, банковский перевод, наличные — всё это должно превратиться в криптовалюту на кошельке пользователя с минимальным трением, в рамках регуляторных требований и с приемлемыми комиссиями. Разработка собственного шлюза — одна из самых технически и юридически сложных задач в крипто.

Архитектура on-ramp системы

On-ramp шлюз состоит из нескольких слоёв, каждый с собственными рисками и требованиями:

Payment Layer — приём фиатных платежей через платёжные процессоры. Банковские карты (Visa/Mastercard через PSP: Stripe, Adyen, Checkout.com), банковские переводы (SEPA, SWIFT, ACH), альтернативные методы (Apple Pay, Google Pay).

KYC/AML Layer — верификация личности пользователя в соответствии с регуляторными требованиями. Интеграция с KYC-провайдерами (Sumsub, Jumio, Onfido), скрининг по санкционным спискам (Chainalysis, Elliptic).

FX/Pricing Layer — расчёт курса обмена. Агрегация котировок с нескольких источников, добавление маржи, расчёт итоговой суммы в крипто.

Crypto Fulfillment Layer — фактическая отправка криптовалюты пользователю. Либо из custody-кошелька платформы, либо через маркет-мейкера/ликвидити-провайдера.

Risk Management Layer — проверка каждой транзакции на мошенничество, velocity checks, лимиты.

KYC/AML: техническая реализация

AML/KYC — не опция, а обязательное требование для работы с фиатом в большинстве юрисдикций. Минимальный набор:

Tier 1 (до €1000/месяц): email верификация, номер телефона, IP-геолокация.

Tier 2 (до €15,000/месяц): загрузка документа (паспорт, ID), liveness check (selfie + сравнение с фото на документе).

Tier 3 (без лимита): Enhanced Due Diligence — подтверждение источника средств, иногда видео-звонок.

Интеграция с Sumsub:

import hashlib
import hmac
import httpx
from datetime import datetime

class SumsubClient:
    BASE_URL = "https://api.sumsub.com"

    def __init__(self, app_token: str, secret_key: str):
        self.app_token = app_token
        self.secret_key = secret_key

    def _sign_request(self, method: str, path: str, body: bytes = b"") -> dict:
        ts = str(int(datetime.now().timestamp()))
        sign_str = f"{ts}{method.upper()}{path}".encode()
        if body:
            sign_str += body

        signature = hmac.new(
            self.secret_key.encode(),
            sign_str,
            hashlib.sha256
        ).hexdigest()

        return {
            "X-App-Token": self.app_token,
            "X-App-Access-Sig": signature,
            "X-App-Access-Ts": ts,
        }

    async def create_applicant(self, external_user_id: str, level_name: str) -> dict:
        path = "/resources/applicants"
        body = {
            "externalUserId": external_user_id,
            "levelName": level_name
        }
        body_bytes = json.dumps(body).encode()

        async with httpx.AsyncClient() as client:
            resp = await client.post(
                f"{self.BASE_URL}{path}",
                headers={**self._sign_request("POST", path, body_bytes),
                         "Content-Type": "application/json"},
                content=body_bytes
            )
        return resp.json()

    async def get_verification_status(self, applicant_id: str) -> str:
        path = f"/resources/applicants/{applicant_id}/status"
        async with httpx.AsyncClient() as client:
            resp = await client.get(
                f"{self.BASE_URL}{path}",
                headers=self._sign_request("GET", path)
            )
        data = resp.json()
        return data.get("reviewStatus")  # "init", "pending", "completed"

Платёжный процессинг

Для карточных платежей ключевой момент — обработка chargebacks. В крипто-транзакциях chargeback — это катастрофа: платёж обратим, отправленная крипто — нет. Защитные меры:

3DS2 аутентификация — обязательна для всех транзакций. Снижает ответственность merchant'а за мошеннические платежи.

Velocity limits — не более 3 транзакций с одной карты за 24 часа в первые 30 дней аккаунта.

Delayed delivery — для новых пользователей: фиат принят, крипто отправляется через 24–72 часа. Даёт время на обработку потенциального chargeback.

Chargeback insurance через специализированных провайдеров (Chargebacks911, Kount).

FX Pricing и spread

Курс обмена для пользователя формируется из нескольких компонентов:

Итоговый курс = Spot Rate + Spread + Fees

Spot Rate: агрегат bid/ask с CEX (Binance, Kraken) или через ликвидити-провайдера
Spread: обычно 0.5–2.5% в зависимости от метода оплаты
Fees:
  - Payment processing fee: 1.5–3.5% (карты дороже банков)
  - Network fee (gas): фиксированная сумма в крипто
  - Platform fee: 0.5–1%

Важно: пользователь должен видеть итоговую сумму включая все комиссии до подтверждения транзакции (требование MiCA и PSD2 в ЕС).

Wallet Management

Для каждого пользователя создаётся deposit address — уникальный адрес для получения конкретной криптовалюты. После подтверждения платежа система отправляет крипто на указанный пользователем адрес из hot wallet.

Hot wallet содержит только операционный запас (15–20% суммарных активов), остальное — в cold storage. Пополнение hot wallet — ручной процесс с multi-sig подтверждением.

HD Wallet (BIP32/BIP44) для детерминистической генерации адресов:

from hdwallet import HDWallet
from hdwallet.symbols import BTC

def generate_deposit_address(master_key: str, user_id: int) -> str:
    hdwallet = HDWallet(symbol=BTC)
    hdwallet.from_xprivate_key(master_key)
    # m/44'/0'/0'/0/{user_id}
    hdwallet.from_path(f"m/44'/0'/0'/0/{user_id}")
    return hdwallet.p2pkh_address()

Индекс user_id позволяет детерминистически восстановить все адреса из одного master key.

Blockchain мониторинг

После отправки пользователем фиата система должна отслеживать подтверждение транзакции в блокчейне:

class TransactionMonitor:
    REQUIRED_CONFIRMATIONS = {
        "BTC": 2,
        "ETH": 12,
        "BNB": 15,
        "MATIC": 100,
    }

    async def wait_for_confirmation(self, tx_hash: str, network: str) -> bool:
        required = self.REQUIRED_CONFIRMATIONS.get(network, 12)
        while True:
            receipt = await self.web3.eth.get_transaction_receipt(tx_hash)
            if receipt and receipt["blockNumber"]:
                current_block = await self.web3.eth.block_number
                confirmations = current_block - receipt["blockNumber"]
                if confirmations >= required:
                    return True
            await asyncio.sleep(15)

Регуляторная рамка

Провайдер on-ramp услуг в зависимости от юрисдикции должен иметь:

  • EU: регистрация как VASP (Virtual Asset Service Provider) или лицензия EMI (Electronic Money Institution)
  • UK: регистрация в FCA (Financial Conduct Authority) под MLR 2017
  • US: Money Transmitter License в каждом штате (или работа через лицензированного партнёра)
  • Глобально: скрининг пользователей по OFAC, UN, EU санкционным спискам

Без регуляторного статуса крупные платёжные процессоры (Stripe, Adyen) откажут в подключении. Альтернатива — агрегаторы типа MoonPay или Transak, которые уже имеют лицензии и берут на себя комплаенс.

Метрики и мониторинг

Метрика Цель
Conversion rate (visit → purchase) > 15%
Average completion time < 5 мин
KYC pass rate > 70%
Chargeback rate < 0.5%
Payment success rate > 95%
Average spread 1.5–2%

Низкий conversion rate — обычно следствие сложного KYC или технических проблем с платёжным методом. A/B тестирование KYC flow, упрощение форм, поддержка большего числа платёжных методов — стандартные пути улучшения.