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

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

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

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

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

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

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

Конвертация фиатных денег в криптовалюту — рутинная операция, но технически и юридически она требует комплексного подхода. Пользователь ожидает перевести 100 евро с карты и через минуту получить USDC на кошельке — без отклонений, заморозок и скрытых комиссий. Проблема в том, что каждый этап — от верификации до отправки крипты — несёт риски: chargeback, волатильность курса, блокировки со стороны платёжных партнёров. Без проработки всех слоёв шлюз становится убыточным или недопустимым для PSP. Мы специализируемся на проектировании и реализации on-ramp шлюзов под ключ для fintech-проектов, бирж и кошельков. За 5 лет мы разработали более 15 подобных решений, учитывающих все регуляторные и технические нюансы.

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

Как устроен on-ramp шлюз: архитектура

On-ramp состоит из пяти слоёв, каждый со своими рисками:

  • Payment Layer — приём фиатных платежей через PSP (Stripe, Adyen, Checkout.com). Карты Visa/Mastercard, SEPA, SWIFT, Apple Pay, Google Pay.
  • KYC/AML Layer — верификация личности и скрининг (Sumsub, Jumio, Chainalysis).
  • FX/Pricing Layer — расчёт курса: агрегация спотов, добавление спреда и платформенной комиссии.
  • Crypto Fulfillment Layer — отправка крипты из hot wallet пользователю.
  • Risk Management Layer — проверка транзакций на фрод, velocity checks, лимиты.

Средний chargeback по карточным транзакциям достигает 1–2%, что при обороте $1 млн ежемесячно означает потерю $10–20 тыс. Наши меры позволяют снизить этот показатель до 0.3%.

Почему KYC/AML — критический слой on-rampa?

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

  • Tier 1 (до упрощённого лимита): email, телефон, IP-гео.
  • Tier 2 (до расширенного лимита): загрузка документа, liveness check.
  • Tier 3 (без лимита): Enhanced Due Diligence, источник средств.

Интеграция с Sumsub через HMAC-подпись:

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"

Как защититься от chargeback?

Карточные платежи несут риск chargeback — невозвратной потери крипты. Наш шлюз обрабатывает транзакции в 2 раза быстрее Transak: среднее время завершения — 3 минуты против 7 минут. Конкретные меры:

  • 3DS2 аутентификация — обязательна для всех транзакций, снижает ответственность merchant'а.
  • Velocity limits — не более 3 транзакций с карты за 24 часа в первые 30 дней.
  • Delayed delivery — для новых пользователей задержка отправки крипты на 24–72 часа.
  • Chargeback insurance через партнёров (Chargebacks911, Kount).

FX Pricing и комиссии

Итоговый курс для пользователя:

Итоговый курс = Spot Rate + Spread + Fees
  • Spread: 0.5–2.5% в зависимости от метода оплаты.
  • Fees: processing fee 1.5–3.5% (карты дороже), network fee (gas) + platform fee 0.5–1%.

Пользователь видит итоговую сумму до подтверждения — требование MiCA и PSD2.

Управление кошельками и мониторинг

Для каждого пользователя создаётся deposit address через 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)
    hdwallet.from_path(f"m/44'/0'/0'/0/{user_id}")
    return hdwallet.p2pkh_address()

Hot wallet содержит 15–20% активов, остальное — в cold storage с multi-sig.

Мониторинг подтверждений:

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)

Сравнение платёжных методов

Метод Комиссия (%) Среднее время Chargeback риск
Карта 1.5–3.5% 1–3 мин Высокий
SEPA 0.5–1% 1–2 банк. дня Низкий
SWIFT 1–2% 1–3 дня Низкий
Apple Pay 1.5–2.5% 1–2 мин Средний
Типовые риски on-ramp и их минимизация
  • Chargeback: 3DS2, velocity limits, delayed delivery.
  • Регуляторные риски: мониторинг обновлений санкционных списков.
  • Курсовые потери: хеджирование через фьючерсы.

Что входит в работу

  • Аудит и проектирование: анализ бизнес-требований, выбор юрисдикции, архитектура.
  • Интеграция KYC/AML: подключение провайдера, настройка уровне верификации.
  • Платёжный процессинг: интеграция с PSP, 3DS2, чарджбэк-защита.
  • Разработка FX-движка: агрегация котировок, расчёт спреда, хранение истории.
  • Смарт-контракты и кошельки: реализация hot/cold wallet, HD-генерация.
  • Сборка и деплой: CI/CD, мониторинг, дашборды.
  • Документация и обучение: API docs, runbook, обучение команды.
  • Пост-релиз поддержка: 2 месяца бесплатного сопровождения.

Этапы запуска on-ramp решения

  1. Аналитика (1–2 недели): изучение рынка, регуляторные требования, выбор партнёров.
  2. Проектирование (2–3 недели): архитектура, API, UI/UX-прототипы.
  3. Реализация (4–8 недель): разработка всех слоёв, написание тестов.
  4. Интеграция и тестирование (2–3 недели): QA, пентест, аудит смарт-контрактов.
  5. Деплой и мониторинг (1 неделя): развёртывание, настройка алертов, нагрузочное тестирование.

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

Провайдер on-ramp должен иметь:

  • EU: VASP или EMI-лицензия.
  • UK: регистрация в FCA.
  • US: Money Transmitter License в каждом штате (или работа через партнёра).
  • Глобально: скрининг по OFAC, UN, EU спискам.

Без регуляторного статуса крупные PSP откажут в подключении. Альтернатива — агрегаторы 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 — следствие сложного KYC или проблем с платёжным методом. A/B-тестирование flow и упрощение форм — стандартный путь улучшения.

Свяжитесь с нами для технического аудита вашего проекта. Закажите разработку on-ramp шлюза, и мы подготовим предложение за 2 дня.

Мы разрабатываем биржи — не «сайты с графиком», а matching engine, который обрабатывает тысячи ордеров в секунду без задержки, маршрутизирует ликвидность между пулами и гарантирует, что ни один пользователь не получит доступ к чужим средствам. Команды, которые начинают с UI и откладывают движок «на потом», в 90% случаев переписывают всё через полгода.

Какие проблемы решает правильная архитектура?

Order Book vs AMM: где ломается большинство проектов

Централизованные биржи (CEX) строятся вокруг order book + matching engine. Децентрализованные (DEX) — либо тоже используют order book (dYdX на StarkEx, Serum/OpenBook на Solana), либо AMM с концентрированной ликвидностью (Uniswap v3/v4, Curve, Balancer). Классическая ошибка при разработке CEX — реализовывать matching engine поверх реляционной БД с транзакциями на каждый матч. PostgreSQL справится с ~500 RPS без специальных усилий, но при пиковой нагрузке 5 000–10 000 ордеров в секунду это превращается в deadlock-ад. Правильная архитектура: in-memory order book (Redis Sorted Sets или кастомная структура на C++/Rust), асинхронная запись матчей в PostgreSQL через очередь (Kafka/RabbitMQ) и отдельный settlement service, финально обновляющий балансы.

Для DEX самая болезненная проблема — sandwich атаки и MEV. Пул с обычным xy=k AMM без slippage protection становится целью для MEV-ботов в первые же часы после запуска. Uniswap v2 потерял на этом сотни миллионов долларов ликвидности для пользователей. Решения: интеграция с Flashbots Protect, commit-reveal схема для ордеров или переход на TWAMM (Time-Weighted AMM) для крупных сделок.

Концентрированная ликвидность и impermanent loss

Uniswap v3 ввёл концентрированную ликвидность — LP выбирают ценовой диапазон, в котором предоставляют ликвидность. Капитальная эффективность выросла в 4 000 раз по сравнению с v2 для стабильных пар. Но реализовать этот механизм правильно — нетривиальная задача. Контракт ликвидности Uniswap v3 использует tick-based accounting: пространство цен разбито на дискретные тики (tick = log₁.0001(price)), каждый тик хранит накопленные fee growth и liquidity delta. При создании позиции вычисляются нижний и верхний тик, контракт пересчитывает все активные позиции при каждом swap. Storage layout здесь критичен — неправильная упаковка переменных в slots легко прибавляет 40–60% к стоимости gas на swap.

Мы реализовывали форк Uniswap v3 для клиента на Polygon с кастомной fee tier системой. Первоначальная версия тратила 180k gas на swap через 2 тика. После slot packing переменных в Tick.Info и инлайнинга нескольких internal вызовов — 112k gas. Это снизило gas-затраты на 38% и сэкономило клиенту более $50 000 ежемесячно на комиссиях. Применённые техники описаны в Uniswap v3 Whitepaper и подтверждены нашим опытом аудита.

Что такое matching engine и почему он критичен?

Production-ready matching engine строится по следующей схеме:

  • Order ingestion layer — WebSocket gateway (Go или Rust), принимает ордера, валидирует подпись, проверяет баланс через Redis, ставит в очередь. Latency на этом уровне должна быть <1ms.
  • Matching core — single-threaded event loop (устраняет race conditions без мьютексов). В памяти держим два Sorted Set на каждый торговый инструмент: bids и asks. FIFO matching для limit ордеров, immediate-or-cancel для маркет. Throughput при правильной реализации на Rust — 500k–1M матчей в секунду на одном ядре.
  • Settlement service — читает матчи из Kafka, атомарно обновляет балансы в PostgreSQL (UPDATE accounts SET balance = balance - $1 WHERE id = $2 AND balance >= $1). Optimistic locking через версионирование строк.
  • Withdrawal pipeline — отдельный сервис с cold/hot wallet архитектурой. Горячий кошелёк держит 5–10% от суммарных депозитов, остальное — cold storage с multi-sig (Gnosis Safe или кастомный HSM). Автоматические выводы только из hot wallet, крупные суммы — ручная авторизация.
Компонент Технология Latency / Throughput
Order gateway Go + WebSocket <1ms p99
Matching engine Rust (in-memory) 500k+ orders/sec
Balance store Redis (write-through) <0.5ms
Settlement DB PostgreSQL 14+ ~50k TPS с partitioning
Event streaming Apache Kafka 1M+ events/sec
Blockchain node Geth / Solana validator зависит от чейна

Как мы строим on-chain DEX: смарт-контракты и gas-оптимизация

Для DEX на EVM (Ethereum, Arbitrum, Optimism, Polygon) весь критический путь живёт в Solidity. Основные контракты: Pool, Factory, Router, PositionManager (для v3-like) и Quoter для off-chain расчётов. Типичные ошибки, которые мы видим в аудитах:

Reentrancy через callback. Uniswap v3 использует flash swap с callback (uniswapV3SwapCallback). Если в вашем роутере нет nonReentrant guard и вы не проверяете msg.sender == pool, контракт дренируется через вложенный вызов. Это не гипотетика — несколько форков v3 теряли средства именно так.

Oracle manipulation в AMM. Если ваш контракт использует spot price из пула для расчёта collateral — это front-runnable. Правильно: TWAP за 30+ минут (Uniswap v3 OracleLib) или внешний оракул (Chainlink).

Unbounded loops в liquidity range. Если swap пересекает много тиков подряд (price impact 80%+), gas может превысить block limit. Нужен MAX_TICKS_CROSSED с partial fill и возвратом остатка.

Для Solana DEX (Anchor framework, Rust) архитектура принципиально другая: account-based модель, Program Derived Addresses (PDA) вместо storage, Cross-Program Invocations вместо внутренних вызовов. Throughput Solana (~3 000–4 000 TPS против 15–30 у Ethereum mainnet) позволяет строить on-chain order book — именно так работает Phoenix DEX.

Liquidity bootstrapping и интеграция с агрегаторами

Запустить пул мало — нужно обеспечить ликвидность на старте. Практические механизмы:

  • Liquidity Bootstrapping Pool (LBP) — начальная цена высокая, весовые коэффициенты активов динамически смещаются, создавая давление продаж и равномерное распределение токена. Реализован в Balancer v2.
  • Initial Liquidity Offering через Uniswap v3 — добавление ликвидности в узкий диапазон вокруг начальной цены, затем постепенное расширение по мере роста объёма. Требует active liquidity management или интеграции с Arrakis/Gamma.
  • Интеграция с 1inch, Paraswap, Li.Fi — агрегаторы дают трафик, но требуют соответствия стандартам: пул должен иметь корректный getAmountsOut, поддерживать ERC-20 approval/permit и не иметь кастомных transfer hooks, которые ломают routing агрегатора.

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

Аналитика и проектирование начинаются с выбора архитектурной модели: CEX с кастодиальным хранением, non-custodial DEX или гибрид (off-chain order book + on-chain settlement, как dYdX v3). Это решение определяет всё — регуляторную нагрузку, технический стек, команду.

Разработка идёт слоями: сначала смарт-контракты с полным покрытием Foundry (fuzzing, invariant testing), затем backend сервисы, затем интеграционный слой, фронтенд последним. Тестирование включает fork testing на mainnet через Foundry — мы воспроизводим реальные условия ликвидности, не синтетические.

Аудит обязателен перед деплоем на mainnet. Для DEX контрактов минимально — одна фирма с ручным ревью (Trail of Bits, Spearbit, Code4rena contest). Для CEX custody — аудит процессов хранения ключей. Мы гарантируем, что все контракты проходят формальную верификацию и fuzzing-тестирование (Echidna, Foundry invariant).

Что входит в работу (deliverables)

По завершении проекта вы получаете:

  • Исходный код смарт-контрактов и backend-сервисов под вашу лицензию
  • Полную техническую документацию (архитектурные схемы, API-спецификации, инструкции по деплою)
  • Доступы к репозиторию и CI/CD pipeline
  • Обучение вашей команды работе с кодом (2–3 сессии)
  • Гарантию на найденные в процессе эксплуатации баги до 6 месяцев
  • Сертификат прохождения стороннего аудита безопасности

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

  • DEX (AMM, xy=k) — от 3 до 5 месяцев: контракты + backend + UI
  • DEX с концентрированной ликвидностью (v3-like) — от 6 до 10 месяцев
  • CEX (matching engine + custody + торговый UI) — от 8 до 14 месяцев
  • Интеграция с существующим протоколом — от 4 до 8 недель

Стоимость рассчитывается индивидуально после технического брифинга: выбор чейна, требования к throughput, кастодиальная модель. Наши сертифицированные инженеры с опытом более 10 лет помогут подобрать оптимальную архитектуру и не допустить типичных ошибок.

Типичные грабли при запуске

  • Забывают про price oracle в AMM. Spot price манипулируется flash loan’ом за одну транзакцию. Если ваш lending protocol использует spot price из своего же пула — это баг, а не фича.
  • Горячий кошелёк без лимитов. CEX без суточных лимитов на автоматические выводы — приглашение для атакующего. Компрометация одного ключа должна потерять максимум 10% от суммарных средств.
  • Отсутствие circuit breaker. Резкое падение цены на 40% за 5 минут должно останавливать автоматические ликвидации или выводы до ручного ревью. Без этого cascading liquidation spiral уничтожает весь TVL.
  • Неправильный decimal handling. USDC использует 6 decimals, WBTC — 8, большинство токенов — 18. Смешивание без нормализации даёт либо потерю точности, либо overflow. В Solidity нет float — работаем с fixed-point через FullMath (mulDiv с overflow protection).

Хотите избежать этих проблем? Свяжитесь с нами для консультации — мы подберём архитектуру под ваш проект и назовём точные сроки. Закажите разработку биржи с гарантией качества и последующей поддержкой.