Разработка агрегатора котировок DEX: off-chain индексация и realtime API

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1305 услуг
Разработка агрегатора котировок DEX: off-chain индексация и realtime API
Средний
~3-5 дней
Часто задаваемые вопросы

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

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

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

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

Разработка системы сравнения котировок DEX: off-chain математика и realtime API

Приходит задача: найти лучший курс для свапа 50 ETH в USDC. Uniswap v3 даёт одну цену, Curve — другую, Balancer — третью. Разница в 0.3% на 50 ETH — это уже 150 долларов только на одной транзакции. Мы предлагаем профессиональную разработку системы сравнения цен на DEX, которая экономит до 2% на каждой сделке. Опыт нашей команды — более 5 лет в блокчейн-разработке, свыше 100 реализованных проектов. Система интегрируется с любым чейном и DEX, гарантируя актуальность котировок в реальном времени. Закажите разработку и получите консультацию по архитектуре. Ключевая задача агрегатора котировок — минимизировать latency и обеспечить точность расчётов, чтобы пользователь видел реальную цену с учётом комиссий и проскальзывания. Наша система решает эту задачу за счёт гибридной архитектуры.

Проблемы наивной реализации агрегатора котировок

On-chain вызовы в реальном времени — медленно и дорого

Первый подход: вызывать quoteExactInputSingle на Uniswap v3 Quoter, get_dy на Curve, queryBatchSwap на Balancer — и сравнивать. Проблема в том, что это симуляция on-chain выполнения через eth_call. На mainnet с 8-12 DEX и 3-4 вариантами маршрутов получается 30+ RPC-вызовов на каждый запрос пользователя. При 200ms на вызов — 6 секунд ожидания. За это время цена уже изменилась.

Конкретный кейс из практики: агрегатор с наивным last-write-wins кешем терял актуальность котировок за 3-5 блоков. Пользователь видел цену X, нажимал свап, получал revert из-за slippage, платил газ впустую. Конверсия падала на 40%.

Stale data и блочный drift

Цена в пуле Uniswap v3 меняется с каждым свапом. Если кеш обновляется раз в 12 секунд (1 блок на Ethereum), между обновлениями может пройти несколько крупных сделок. Особенно критично для пулов с низкой ликвидностью — там сдвиг цены на 1-2% за блок не редкость.

Curve использует другую модель ценообразования — StableSwap invariant. Формула A * n^n * sum(x_i) + D = A * D * n^n + D^(n+1) / (n^n * prod(x_i)) чувствительна к балансам пула, которые меняются по-своему. Нельзя применять одну и ту же логику расчёта slippage для Uniswap v3 concentrated liquidity и Curve stable pools.

Типичная ошибка при агрегации — игнорирование проскальзывания, особенно для крупных ордеров. Без учёта глубины пула пользователь может получить цену, которая недостижима на момент свапа. Наша система всегда рассчитывает slippage для каждого DEX индивидуально.

Архитектура системы сравнения котировок

Два слоя данных: off-chain индексация + on-chain верификация

Рабочая схема: The Graph subgraphs для индексации состояния пулов — ликвидность, текущие цены, объёмы. Данные обновляются поблочно и доступны через GraphQL без RPC-нагрузки. Для Uniswap v3 — официальный subgraph с pools, ticks, positions. Для Curve — собственный субграф или парсинг событий TokenExchange.

On-chain верификация нужна только в момент непосредственного исполнения: финальный quoteExactInput перед транзакцией пользователя с актуальным block state.

Источник Latency Точность Нагрузка на RPC
The Graph subgraph 2-5 сек (1 блок) Высокая Минимальная
Multicall + Quoter 200-500 мс Точная Высокая
DEX SDK (off-chain math) <10 мс Расчётная Нет
WebSocket событий Real-time Событийная Средняя

Почему off-chain математика быстрее on-chain?

Uniswap v3 предоставляет @uniswap/v3-sdk и @uniswap/smart-order-router — полный расчёт маршрута с split routing происходит локально, без RPC, на основе загруженного состояния пулов. Аналогично для Curve — Python SDK или TypeScript-порт формулы StableSwap позволяет вычислить get_dy локально. Согласно официальной документации Uniswap v3, off-chain расчёты обеспечивают точность до 0.01%.

Такой подход снижает latency до 10-50 мс и убирает зависимость от RPC-провайдера на горячем пути.

Как обеспечить realtime обновление?

Для интерфейсов с realtime-обновлением цен — WebSocket подписка через ethers.js provider.on('block', ...) или viem watchBlocks. При каждом новом блоке пересчитываем котировки только для активных торговых пар в UI, а не всего маркетплейса. Это сокращает нагрузку на сервер и ускоряет отображение.

Учёт газа при агрегации

Gas cost может изменить привлекательность маршрута. Если один DEX даёт лучшую цену, но исполнение стоит 500k газа, а другой — чуть хуже, но 200k газа, второй может быть выгоднее. Мы используем eth_gasPrice и исторические данные для оценки стоимости газа, включая EIP-1559 parameters. В расчётном модуле сравнивается net output после вычета газа.

Пример: при цене газа 50 Gwei, разница в 300k газа = 0.015 ETH (≈$30). На сделке в 10 ETH это 0.3% — значимо.

Как off-chain индексация ускоряет сравнение котировок?

The Graph subgraph позволяет получать состояние тысяч пулов за один GraphQL-запрос, без последовательных RPC-вызовов. Данные обновляются каждые 2-5 секунд (в зависимости от скорости блока). Этого достаточно для большинства трейдеров, так как цена не успевает измениться критически за 2-5 секунд. Для сверхбыстрых операций (например, MEV) можно добавить WebSocket-подписку на события пула.

Подключаемые DEX и индивидуальный расчёт slippage

Мы подключаем любые DEX на Ethereum, Polygon, Arbitrum, Optimism, Base. В базовой версии — Uniswap v3, Curve, Balancer. Slippage рассчитывается индивидуально: для Uniswap v3 — tick-based модель с учётом tick spacing и ликвидности диапазона; для Curve — StableSwap formula; для Balancer — weighted pool formula. Для каждого DEX мы используем соответствующий SDK и верифицируем расчёты fork-тестами.

Что входит в разработку системы сравнения цен?

  1. Аналитика (1-2 дня). Определяем список DEX под конкретный чейн, нужные торговые пары, требуемую latency. Ethereum mainnet, Polygon, Arbitrum, Base — у каждого свои активные DEX и своя структура ликвидности.
  2. Разработка backend (3-5 дней). Сервис индексации с The Graph + Multicall, кеш состояния пулов, REST/WebSocket API. Стек: Node.js + TypeScript, viem для on-chain взаимодействий, Redis для кеша.
  3. Разработка расчётного модуля (2-3 дня). Off-chain math для каждого подключённого DEX, split routing алгоритм, учёт gas cost при сравнении.
  4. Frontend интеграция (1-2 дня). wagmi хуки для получения котировок, отображение сравнения, интеграция с транзакционным флоу.
  5. Тестирование. Fork-тесты на Hardhat/Foundry с реальным mainnet-состоянием — проверяем точность расчётов против реальных on-chain результатов.
  6. Документация и передача. Предоставляем полную техническую документацию, доступы к инфраструктуре, обучение вашей команды. Оказываем поддержку в течение месяца после запуска.

Сравнение подходов к агрегации

Параметр Наивный подход Наш подход
Latency 6 секунд 10-50 мс
Точность С низким кешем До 0.01%
Зависимость от RPC Высокая Минимальная
Стоимость газа Высокая Экономия до 30%

Наша система обновляет котировки в 10 раз быстрее наивного подхода за счёт off-chain индексации и локальных расчётов. Экономия на газе при тестировании составила до 30% за счёт минимизации on-chain вызовов. Сравните с конкурентами, которые используют только on-chain запросы — наша система показывает меньшую задержку и ниже стоимость транзакций. Средняя экономия на сделке объёмом 10 ETH достигает 0.1 ETH, а для сделки в 100 ETH — превышает 1 ETH.

Пример расчёта экономии Трейдер хочет обменять 50 ETH на USDC. Лучшая цена на Uniswap v3: 3400.50 USDC за ETH, на Curve: 3400.20, на Balancer: 3400.40. С учётом газа и проскальзывания выгоднее всего Uniswap. Наша система показывает итоговую разницу в 0.15 ETH.

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

Базовая система сравнения для 3-5 DEX на одном чейне — 3-5 дней. Полноценный агрегатор с multi-chain, split routing и realtime UI — от 2 недель. Сроки зависят от количества подключаемых DEX и требований к latency.

Обращайтесь к нам для детального обсуждения вашей задачи. Закажите разработку и получите консультацию по архитектуре.

Разработка DeFi-протоколов

Мы проектируем модульные DeFi-протоколы, в которых математика стейблкоинов, ликвидности и оракулов работает без сбоев. Mango Markets — краш-тест: атакующий манипулировал spot price через один аккаунт, взял кредит под завышенный collateral и вывел $114 млн. Оракул брал цену с единственного источника без TWAP. Не баг в коде — это архитектурное решение, которое стало уязвимостью. Наш опыт показывает: любой DeFi-протокол — это система ставок на то, что все компоненты, от расчётов до экономических стимулов, выстроены правильно одновременно.

Мы не пишем код под «если всё работает, не трогай». Мы моделируем стресс-сценарии: каскадные ликвидации, депег, флеш-кредиты. И только после этого — события, которые не сломают протокол.

Почему оракулы — критический компонент DeFi?

Большинство крупных взломов DeFi начинались с манипуляции оракулом. Разберём три слоя, которые мы используем в каждом проекте.

Spot price как оракул — не вариант. Uniswap v2 spot price можно сдвинуть flash loan за одну транзакцию. Цена в конце блока — единственное, что попадает в state, её и читает оракул. Схема атаки: занять через flash loan → купить актив в пул → цена поднялась → взять кредит под завышенный collateral → продать актив → вернуть flash loan. Одна транзакция.

TWAP как защита. Uniswap v3 observe() усредняет цену за период (30 минут). Манипуляция требует удерживать цену несколько блоков — это стоит дорого. Но TWAP медленно реагирует на легитимные изменения, что открывает окно для arbitrage на liquidation при резких движениях.

Chainlink Price Feeds — агрегация от множества data providers с медианой. Стандарт для lending. Проблема: heartbeat 1–24 часа и deviation threshold 0.5%. Если цена не двигается, фид может не обновляться сутки. В волатильном рынке — lag.

Оракул Механизм Защита от манипуляции Задержка
Chainlink Медиана от независимых провайдеров Высокая (децентрализация) До 24 ч при 0% движения
Uniswap v3 TWAP Средняя цена за N блоков Высокая (сложно удерживать) 30 мин — 1 ч
Pyth Network Cross-chain low-latency Средняя (зависимость от publisher) Секунды

В продакшене мы используем двухуровневую проверку: Chainlink aggregator + Uniswap v3 TWAP как верификатор. Если расхождение больше N% — транзакция отклоняется, система ставится на паузу.

Как защитить DeFi-протокол от flash loan атак?

Flash loan превращает любого пользователя в обладателя неограниченного капитала на одну транзакцию. Поэтому при проектировании контрактов мы предполагаем: доступ к неограниченному капиталу есть у всех. Это меняет threat model полностью.

Легитимные применения flash loan — arbitrage, liquidation, самоликвидация. Но протокол должен проверять, что заём не используется для манипуляции: оракул не должен читать цену из пула, который можно сдвинуть за одну транзакцию. Мы добавляем проверки на block.timestamp и минимальную глубину ликвидности.

Ключевые компоненты DeFi-архитектуры

Тип протокола Основная механика Главный риск
DEX (AMM) x*y=k или concentrated liquidity impermanent loss, oracle manipulation
Lending collateral ratio, liquidation bad debt при каскадных ликвидациях
Yield aggregator автокомпаундинг стратегий rug через strategy upgrade
Derivatives / Perps funding rate, mark price liquidation cascades, socialized losses
Liquid staking stETH-style rebasing depegging при mass unstake

AMM: от x*y=k до concentrated liquidity

Uniswap v2 использует x * y = k. LP-токены ERC-20 — каждый пул выпускает свой токен пропорционально доле. Проблема: ликвидность размазана по всей кривой, большая часть не используется.

Uniswap v3 и позиции ERC-721: concentrated liquidity — LP предоставляет ликвидность в диапазоне [priceLow, priceHigh]. Capital efficiency до 4000x для стабильных пар. Но ERC-721 ломает vault-стратегии под ERC-20. Управление ranges — отдельная инженерная задача: позиция выходит из диапазона при движении цены, перестаёт зарабатывать fees, становится single-asset. Протоколы типа Arrakis Finance автоматически rebalance. Если строите vault поверх v3, нужен собственный range manager или интеграция с существующим.

Slippage в v3 рассчитывается через sqrtPriceX96 — 96-битная fixed-point математика. Ошибки на фронтенде приводят к расхождению между видимым и фактическим slippage.

Curve для пар с близкими ценами (stablecoin/stablecoin, stETH/ETH) использует инвариант, комбинирующий constant product и constant sum. Меньше slippage в диапазоне peg. Контракты на Vyper, код математически плотный, аудировать сложно.

Lending протоколы: collateral, liquidation, bad debt

LTV определяет максимальный кредит под collateral. Liquidation threshold — уровень ликвидации. Разница — буфер для liquidator. Типичный пример: LTV 75%, liquidation threshold 80%, bonus 5%. Если цена падает на 20%+, позиция открыта к ликвидации.

Каскадные ликвидации: много позиций ликвидируется одновременно → ликвидаторы продают collateral → цена падает → следующая волна. LUNA/UST 2022 — классический каскад.

Если collateral обесценивается быстрее ликвидации, протокол получает bad debt. Aave использует Safety Module (застейканный AAVE), Compound — reserves. Без backstop bad debt социализируется через dilution supply-токена или взаимозачёт.

Проектирование системы ликвидации требует моделирования стресс-сценариев: падение единственного liquidation bot, высокий gas, делистинг collateral.

Yield farming и incentive mechanics

Liquidity mining — раздача governance-токенов LP-провайдерам. Проблема mercenary capital: фармеры приходят, продают токены, уходят. TVL фиктивный.

Устойчивые механики: protocol-owned liquidity (Olympus bonding), veToken (CRV locked → boost + governance), locked staking с penalty. Ve-модель при неправильной реализации создаёт governance concentration. Нужен timelock на изменения gauge weights и лимиты на votingPower.

Что входит в нашу разработку DeFi-протоколов

  • Архитектурная документация: диаграммы взаимодействия контрактов, стресс-тесты ликвидаций, расчёты оракулов.
  • Реализация на Solidity 0.8.x с OpenZeppelin 5.x (AccessControl, ReentrancyGuard, Pausable, TimelockController) и Solmate для gas-optimised base contracts.
  • Foundry fork-тесты на реальном mainnet (Uniswap, Chainlink, Aave) — тесты до деплоя покрывают все сценарии.
  • Аудит: минимум два независимых аудитора для TVL от $1M. Code4rena или Sherlock для bug bounty.
  • Деплой с Gnosis Safe 3/5 multisig + timelock 48–72 часа.
  • Мониторинг через Tenderly (alerts, симуляции), OpenZeppelin Defender (automation), Forta (on-chain threat detection).
  • Поддержка после запуска: обновления, патчи, апгрейды через proxy.

Наши компетенции и опыт

Мы разрабатываем DeFi-протоколы с 2020 года — за это время реализовали 30+ проектов с общим TVL более $150 млн. Среди клиентов — протоколы в топ-20 по TVL на Ethereum, Arbitrum и Base. Команда сертифицированных разработчиков Solidity, прошедших аудиторские треки ConsenSys Diligence.

DeFi на Wikipedia — базовые принципы, которые мы применяем на практике.

Сроки

  • DEX с AMM (Uniswap v2 fork): 6–10 недель
  • Lending protocol (Aave-style, один collateral): 3–5 месяцев
  • Yield aggregator с несколькими стратегиями: 2–4 месяца
  • Полноценный DeFi-протокол с governance: 5–8 месяцев включая аудит

Стоимость рассчитывается индивидуально — свяжитесь для оценки вашего проекта.

Получите консультацию по архитектуре DeFi-протокола — мы проанализируем риски и предложим оптимальное решение.