Разработка системы расчета funding rate для perpetual DEX

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

Разработка системы расчета funding rate для perpetual DEX

Мы интегрируем механизм funding rate в ваш perpetual DEX — от выбора формулы до деплоя keeper-инфраструктуры. Perpetual futures — крупнейший по объёму инструмент в крипто: только по BTC perp суточный notional достигает десятков миллиардов долларов. Без надёжного on-chain расчёта funding rate протокол рискует потерять ликвидность из-за расхождения цены perp с spot. Мы решаем эту задачу под ключ: проектируем устойчивый к манипуляциям контракт, выбираем оракулы и обеспечиваем масштабирование. Экономия на gas и снижение затрат на инфраструктуру keeper — наши приоритеты.

Почему funding rate критичен для perp DEX?

Funding rate удерживает цену perpetual рядом со spot. Без него perp может торговаться с премией >50% к spot, делая хеджирование бессмысленным. На CEX расчёт централизован — на DEX всё должно быть прозрачно и устойчиво к атакам. Типовая ситуация: при экстремальном дисбалансе (90% longs) ставка должна расти нелинейно, чтобы стимулировать открытие shorts. Игнорирование этого — путь к краху пула. Стоимость проектирования корректной модели окупается стабильной работой протокола.

Как работает механика funding rate?

Классическая формула (Bitmex style)

Базовая формула:

Funding Rate = clamp(Premium Index + clamp(IR - Premium Index, -0.05%, 0.05%), -0.075%, 0.075%)

где:

  • Premium Index = (Mark Price - Index Price) / Index Price
  • IR (Interest Rate) = обычно 0.01% per 8h
  • clamp ограничивает диапазон

Mark Price — взвешенная по объёму цена с нескольких бирж. Index Price — spot цена из оракула (Chainlink / Pyth). Когда Mark > Index — longs платят shorts, толкая цену обратно к spot.

Проблема манипуляции Mark Price

На on-chain perp DEX Mark Price нельзя брать как last trade — flash loan или wash trading в маленьком пуле могут исказить снимок. Защита через TWAP (Time-Weighted Average Price):

function getMarkPrice() public view returns (uint256) {
    uint256 twapPrice = 0;
    uint256 totalWeight = 0;
    for (uint i = 0; i < observations.length; i++) {
        uint256 weight = observations[i].timestamp - (i > 0 ? observations[i-1].timestamp : periodStart);
        twapPrice += observations[i].price * weight;
        totalWeight += weight;
    }
    return totalWeight > 0 ? twapPrice / totalWeight : currentPrice;
}

Длинный TWAP period (8h) делает манипуляцию дорогой: атакующему нужно удерживать искусственную цену весь интервал. Uniswap V3 использует аналогичный observe().

Pyth Network vs Chainlink для Index Price

Характеристика Chainlink Pyth Network
Частота обновления Каждый heartbeat (1h) или при девиации >0.5% Каждые 400 мс (pull-based)
Модель Push (оракул сам отправляет) Pull (пользователь запрашивает)
Gas cost Нет затрат на обновление (заранее) Небольшой overhead на VAA
Fallback Нет Рекомендуем Chainlink как fallback

Pyth pull oracle требует передачи VAA в каждой транзакции:

function updateAndGetPrice(bytes[] calldata priceUpdateData) external payable returns (PythStructs.Price memory) {
    uint fee = pyth.getUpdateFee(priceUpdateData);
    pyth.updatePriceFeeds{value: fee}(priceUpdateData);
    return pyth.getPriceUnsafe(priceId);
}

Небольшой gas overhead оправдан точностью.

Как начисляется funding rate on-chain?

Continuous vs discrete начисление

Аспект Discrete snapshot (раз в 8h) Continuous per-block
Сложность Низкая Средняя
Масштабируемость Ограничена (>100 позиций — превышение gas) Без ограничений
Точность Средняя Высокая (постоянная синхронизация)

Continuous per-block accumulation (dYdX v3, Synthetix) элегантнее: fundingIndex растёт с каждым блоком. При открытии запоминаем entryFundingIndex, при закрытии — (currentFundingIndex - entryFundingIndex) * positionSize.

mapping(address => uint256) public positionEntryFundingIndex;
uint256 public globalFundingIndex;

function calculateFundingPayment(address trader) public view returns (int256) {
    return int256(positionSize[trader]) * 
           int256(globalFundingIndex - positionEntryFundingIndex[trader]) / 1e18;
}

Этот подход масштабируется без pagination. Главное — регулярное обновление globalFundingIndex (Chainlink Automation или собственный keeper).

Реализация с учётом знаковых позиций

Long и short платят/получают в противоположных направлениях. Используем signed position size: int256 fundingPayment = signedPositionSize * int256(fundingRateDelta) / 1e18;.

Funding rate bounds и extreme markets

При 99% longs ставка без ограничений улетает в небеса, shorts зарабатывают, но никто не хочет открывать шорт. Нужны границы: maxFundingRate и graduated rate (как GMX v2) — при малом дисбалансе низкая ставка, при большом — нелинейный рост. Это мягче hard cap и эффективнее выравнивает рынок.

Keeper инфраструктура

Funding rate требует регулярного on-chain обновления. Варианты:

  • Chainlink Automation — надёжно, децентрализованно, но латентность не гарантирована при нагрузке.
  • Gelato Network — аналог с conditional triggers.
  • Собственный keeper — полный контроль, для critical protocol рекомендуем с Chainlink как fallback.
async function updateFunding() {
  const lastUpdate = await contract.lastFundingUpdate();
  if (Date.now() / 1000 - lastUpdate > FUNDING_INTERVAL) {
    const markPrice = await getMarkPriceTWAP();
    const indexPrice = await pythOracle.getPrice(PRICE_ID);
    await contract.updateFundingRate(markPrice, indexPrice);
  }
}
setInterval(updateFunding, 60_000);
Детали выбора keeper Для протоколов с высокими требованиями к времени отклика мы рекомендуем собственного keeper с Chainlink Automation как резервный канал. Это снижает риски простоев и обеспечивает непрерывность начисления funding rate.

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

  • Описание архитектуры: выбор формулы, oracle, settlement model.
  • Интеграция Pyth/Chainlink, написание TWAP-контракта и funding index.
  • Fork-тесты с экстремальными сценариями (99% long, flash crash, rapid rate changes). Fuzz-тесты на invariant: сумма платежей longs = сумма получений shorts (без insurance fund).
  • Деплой keeper (Chainlink Automation или собственный сервис).
  • Документация и обучение команды.
  • Техническая поддержка 3 месяца после релиза.

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

  1. Аналитика (2-3 дня) — выбор формулы (Bitmex, adaptive, bounded), oracle стратегия, модель settlement.
  2. Разработка (3-5 дней) — контракты: TWAP, funding index, settlement, Pyth integration.
  3. Тестирование (2-3 дня) — fork-тесты, fuzzing, invariant checks.
  4. Keeper деплой — настройка Chainlink Automation или собственного сервиса.
  5. Документация и передача.

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

Базовая система с discrete settlement и Chainlink — 3-4 дня. Continuous с Pyth, adaptive bounds и keeper — 1-2 недели. Стоимость рассчитывается индивидуально — свяжитесь для оценки вашего проекта. У нас 5+ лет опыта в DeFi, более 30 успешных контрактов в продакшене. Получите консультацию по вашему протоколу.

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