Разработка системы управления позициями на perpetual DEX

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

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

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

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

  • 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

Мы разрабатываем кастомные системы управления позициями на perpetual DEX — от простого трекера до полноценного риск-менеджера с автоматическими стоп-лоссами и управлением маржой. Perpetual DEX (dYdX, GMX, Hyperliquid, Gains Network) позволяют торговать с плечом без даты экспирации и без централизованного кастодиана. Но их стандартный UI не покрывает задачи программного управления: боты, vaults, протоколы автоматизации требуют собственного решения. Наша команда имеет 5+ лет опыта в разработке DeFi-решений и гарантирует прозрачную интеграцию с любым perpetual DEX. В этой статье разберём архитектурные отличия ключевых perpetual DEX, покажем реальную интеграцию с GMX v2 и дадим готовые шаблоны для трекинга и риск-менеджмента.

Какие архитектурные отличия между orderbook и AMM perpetual DEX?

Orderbook-based (dYdX v4, Hyperliquid)

Классический orderbook, но on-chain или в off-chain orderbook с on-chain settlement. dYdX v4 — отдельный Cosmos appchain, Hyperliquid — собственный L1. Взаимодействие через REST API и WebSocket, аналогично CEX.

Особенность dYdX v4: транзакции отправляются не через Ethereum RPC, а через Cosmos SDK. Другой клиент, другие форматы. @dydxprotocol/v4-client-js — официальный SDK.

Hyperliquid: собственный HTTP API и WebSocket. Подписание через EIP-712 (EVM-совместимо). Наиболее быстрый throughput среди on-chain perps.

AMM-based (GMX v2, Gains Network)

Позиции открываются против liquidity pool, а не counterparty. Price impact есть, orderbook нет. GMX v2 использует синтетические активы через Chainlink price feeds.

GMX v2 контракты: ExchangeRouter для открытия/закрытия позиций, OrderVault для хранения collateral до исполнения. Все операции через createOrder() с параметрами.

Как рассчитывается liquidation price на разных биржах?

Position tracker

Компонент, который непрерывно отслеживает состояние открытых позиций:

interface Position {
  id: string;
  exchange: "dydx" | "gmx" | "hyperliquid";
  market: string;           // "ETH-USD"
  side: "long" | "short";
  size: bigint;             // в USD
  entryPrice: number;
  currentPrice: number;
  unrealizedPnl: number;
  liquidationPrice: number;
  leverage: number;
  margin: bigint;
  fundingPaid: number;      // накопленные funding payments
}

Источники данных: WebSocket подписки на position updates (dYdX, Hyperliquid), polling через REST каждые 5-30 секунд (GMX через subgraph или прямые контракт вызовы).

Risk manager

Следит за приближением к liquidation и executing stop-loss/take-profit:

const riskThresholds = {
  liquidationWarning: 0.15,  // 15% до ликвидации → алерт
  autoReduceAt: 0.10,        // 10% до ликвидации → уменьшить позицию
  emergencyCloseAt: 0.05,    // 5% до ликвидации → закрыть полностью
};

const distanceToLiquidation = (position: Position): number => {
  const current = position.currentPrice;
  const liq = position.liquidationPrice;
  if (position.side === "long") return (current - liq) / current;
  return (liq - current) / current;
};

Add margin — первая линия защиты. При приближении к liquidation price — автоматически добавить collateral вместо закрытия позиции. Дешевле по gas и сохраняет позицию. Требует резервного баланса USDC на кошельке.

Partial close — при тяжёлой ситуации уменьшить размер на 30-50%. Снижает размер риска без полного выхода.

Emergency close — полное закрытие рыночным ордером. Высокий slippage, но при реальной угрозе ликвидации — выгоднее потерять 1-2% на slippage, чем 5-15% liquidation penalty.

Funding rate monitor

Funding payments на perpetuals — скрытые издержки, которые при плохом знаке съедают PnL. Отслеживаем:

// Для longs: positive funding rate → вы платите
// Для shorts: positive funding rate → вы получаете
const calculateFundingCost = (
  position: Position,
  fundingRate8h: number,  // например 0.0001 = 0.01%
  periods: number
): number => {
  const sign = position.side === "long" ? -1 : 1;
  return position.size * fundingRate8h * periods * sign;
};

Если накопленный funding cost превышает expected profit по позиции — кандидат на закрытие независимо от PnL.

Интеграция с GMX v2: пошаговая инструкция

GMX v2 — самый сложный из популярных perpetual DEX для интеграции, потому что все операции асинхронны через order keeper.

  1. Импортировать контракты GMX через npm install @gmx-v2/contracts.
  2. Подключить провайдер Viem и получить экземпляр ExchangeRouter.
  3. Создать и подписать CreateOrderParams.
  4. Отправить транзакцию с executionFee.
  5. Обработать callback afterOrderExecution().
// Открытие long позиции на ETH
IExchangeRouter.CreateOrderParams memory params = IExchangeRouter.CreateOrderParams({
    addresses: IExchangeRouter.CreateOrderParamsAddresses({
        receiver: address(this),
        callbackContract: address(this),  // наш контракт получит callback
        uiFeeReceiver: address(0),
        market: ETH_USD_MARKET,
        initialCollateralToken: USDC_ADDRESS,
        swapPath: new address[](0)
    }),
    numbers: IExchangeRouter.CreateOrderParamsNumbers({
        sizeDeltaUsd: 10_000 * 1e30,  // $10,000 позиция (30 decimals)
        initialCollateralDeltaAmount: 1_000 * 1e6,  // $1,000 collateral (USDC 6 decimals)
        triggerPrice: 0,  // market order
        acceptablePrice: minAcceptablePrice,
        executionFee: executionFee,
        callbackGasLimit: 700_000,
        minOutputAmount: 0
    }),
    orderType: Order.OrderType.MarketIncrease,
    decreasePositionSwapType: Order.DecreasePositionSwapType.NoSwap,
    isLong: true,
    shouldUnwrapNativeToken: false,
    referralCode: bytes32(0)
});

exchangeRouter.createOrder{value: executionFee}(params);

Ордер исполняется keeper-нодами GMX асинхронно. Callback afterOrderExecution() на вашем контракте сигнализирует об исполнении. Если keeper не исполнил за определённое время — ордер можно отменить через cancelOrder().

Расчёт liquidation price на GMX

Параметр Формула
Long liq_price = entry_price * (1 - (margin - borrow_fee) / size)
Short liq_price = entry_price * (1 + (margin - borrow_fee) / size)

borrow_fee накапливается со временем — его нужно учитывать при расчёте текущего состояния. GMX предоставляет Reader контракт с getPositionInfo() который возвращает актуальные данные включая fees.

Сравнительная таблица бирж

Параметр dYdX v4 Hyperliquid GMX v2
Архитектура Cosmos appchain Собственный L1 Arbitrum/AVAX
API REST + WebSocket, Cosmos SDK REST + WebSocket, EIP-712 Контракты Ethereum, async order
Сложность интеграции Средняя Низкая Высокая (async order)
Скорость ~0.5 сек ~0.1 сек ~1-5 мин (keeper)

Стек и инфраструктура

TypeScript + viem для GMX on-chain взаимодействий. @dydxprotocol/v4-client-js для dYdX. Websocket клиенты для real-time данных. PostgreSQL + TimescaleDB для хранения истории позиций и PnL. Redis для кэширования текущего состояния. Grafana дашборд с метриками по всем открытым позициям.

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

Этап Длительность Результат
Аналитика 1-3 дня Требования, выбор стека
Проектирование 2-4 дня Архитектура, схемы
Реализация 5-10 дней Рабочий прототип
Тестирование 2-3 дня Unit + интеграционные тесты
Деплой 1-2 дня Продакшн-окружение

Система трекинга позиций для одного perpetual DEX с алертами — 3-5 дней. Полная система с риск-менеджментом, auto-margin-add и stop-loss/take-profit для одного протокола (GMX или dYdX) — 1-1.5 недели. Мультипротокольная система (GMX + dYdX + Hyperliquid) — 2-3 недели. Стоимость рассчитывается после уточнения целевых бирж и требований к автоматизации.

Получите консультацию по вашему проекту — оценим сложность и сроки. Реализуем под ключ за 2-3 недели.

Разработка 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-протокола — мы проанализируем риски и предложим оптимальное решение.