Разработка MakerDAO-стиль протокола стейблкоина

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка MakerDAO-стиль протокола стейблкоина
Сложная
от 2 недель до 3 месяцев
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1258
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1170
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    873
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1092
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    830

Разработка MakerDAO-стиль протокола стейблкоина

MakerDAO в марте 2020 года, «Black Thursday»: ETH упал на 50% за несколько часов. Оракулы обновили цену с опозданием из-за перегрузки сети. Ликвидационные боты не успевали из-за высокого газа. Часть Vault-позиций ушла в ликвидацию с нулевой ценой — ликвидаторы забрали ETH залог фактически бесплатно. Протокол получил дефицит в $5.4M, который закрыли через MKR dilution auction. Это не баг в коде — это системный сбой механик.

Разработка CDP-протокола начинается с понимания этих механик, а не с написания контрактов.

Архитектура CDP протокола

Ядро: три инварианта системы

Любой MakerDAO-подобный протокол строится вокруг трёх инвариантов, нарушение каждого из которых ведёт к системной несостоятельности:

  1. Overcollateralization: суммарная стоимость залогов > суммарный долг в стейблкоине
  2. Price feed integrity: ценовые данные должны быть актуальными и манипуляционно-устойчивыми
  3. Liquidation solvency: при ликвидации протокол всегда получает больше, чем теряет

Эти инварианты транслируются в конкретные параметры: liquidation ratio (минимальное обеспечение, обычно 130-175%), stability fee (годовая ставка на долг), liquidation penalty (бонус ликвидатора, 10-15%), debt ceiling (максимальный долг по типу залога).

Модульная архитектура MakerDAO vs монолит

MakerDAO использует крайне модульную архитектуру: отдельные контракты Vat (core accounting), Cat (liquidation), Dog (v2 liquidation), Jug (stability fee), Spot (price feed), Flip/Clip (auction). Это позволяет заменять модули без полного апгрейда, но создаёт сложность при разработке и аудите.

Для нового протокола с нуля рекомендуем менее агрессивную модульность: 3-4 контракта вместо 12+. Core-контракт с логикой CDP, отдельный оракульный модуль, отдельный аукционный модуль. UUPS-апгрейдаемость через OpenZeppelin — позволяет исправлять ошибки без потери state.

Критические компоненты: разбираем детально

Ценовые оракулы и защита от manipulation

Это самое слабое место большинства CDP-протоколов. Несколько векторов атаки:

Spot price manipulation через flash loan. Если протокол использует spot price из Uniswap пула без TWAP — атакующий делает крупный своп, резко меняет цену залога, открывает или ликвидирует позиции на выгодных условиях, возвращает своп в одной транзакции. Решение: TWAP с периодом минимум 30 минут для активации ликвидации.

Chainlink price feed staleness. Chainlink обновляет цену при отклонении >0.5% или через heartbeat (1-24 часа в зависимости от сети и feed). В периоды экстремальной волатильности heartbeat может не успевать. Обязательная проверка: require(block.timestamp - updatedAt < maxStaleness). Значение maxStaleness — 1-3 часа для мажорных активов, 30 минут для волатильных.

Circuit breaker. При аномальном изменении цены (>20% за один апдейт) ценовой модуль фризит ликвидации на N минут. Это воспроизводит механику MakerDAO OSM (Oracle Security Module): цена применяется с часовой задержкой, что даёт время на реакцию при атаке на оракул.

Наш стандартный оракульный модуль комбинирует Chainlink primary feed + Uniswap v3 TWAP как secondary, с fallback логикой и circuit breaker. Если расхождение между источниками >5% — ликвидации блокируются.

Аукционный механизм ликвидаций

MakerDAO прошёл путь от English auction (Flip) к Dutch auction (Clip, DAI 2.0). Dutch auction лучше подходит для DeFi:

  • Цена начинается высокой (выше рыночной залога) и убывает по формуле до минимума
  • Любой участник может забрать часть или весь лот в любой момент аукциона
  • Если цена упала ниже минимума — кредитор протокола (surplus buffer) покрывает разницу
  • Flash loan friendly: можно купить залог, немедленно продать на DEX и вернуть стейблкоин в одной транзакции

Параметры Dutch auction:

  • buf — начальный множитель цены (обычно 1.2x от oracle price)
  • tail — максимальное время аукциона (например, 3600 секунд)
  • cusp — минимальный процент от начальной цены (например, 0.4 = 40%)
  • chip / tip — вознаграждение тому, кто запустил аукцион (стимул для ботов)

Без tip ликвидационные боты не заинтересованы запускать аукционы на маленькие позиции — gas cost превышает потенциальную прибыль. Black Thursday в том числе поэтому: не было стимула кикать аукционы при высоком газе.

Stability fee и механизм погашения долга

Stability fee начисляется непрерывно через глобальный аккумулятор rate (аналог MakerDAO chi). Каждую секунду все открытые позиции дорожают на (1 + annualRate)^(1/31536000) - 1. Обновление аккумулятора — ленивое: пересчёт при каждом обращении к позиции, не в каждом блоке.

Накопленные fees поступают в surplus buffer. Когда surplus превышает заданный порог — излишек идёт на buyback и burn governance-токена. Дефицит surplus (как при Black Thursday) покрывается через debt auction: протокол минтит governance-токены и продаёт за стейблкоин.

Это полная система: CDP → stability fee → surplus buffer → buyback OR debt auction при дефиците. Разработка и тестирование всей цепочки — ключевая часть работы.

Governance и параметры

CDP-протокол без governance либо централизован (owner меняет параметры), либо статичен (параметры hardcoded). Для серьёзного протокола нужен on-chain governance с timelock:

  • Proposals с минимальным quorum (например, 4% от circulating supply)
  • Timelock 48-72 часа перед исполнением любого изменения параметров
  • Emergency multisig для критических ситуаций (5/9 multisig, bypass timelock только для заморозки)

OpenZeppelin Governor + TimelockController — стандартная база. Кастомизируем под конкретную токеномику.

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

Спецификация (1-2 недели). Параметры залогов, fee structure, аукционный механизм, governance. Всё это должно быть зафиксировано до написания кода. Изменение auction mechanism после аудита — это новый аудит.

Разработка (3-8 недель). Контракты на Solidity, тесты в Foundry. Обязательно: fuzz тесты на инварианты (overcollateralization, auction solvency), fork тесты с реальными Chainlink feed данными, симуляция Black Thursday сценария через Foundry's vm.warp + резкое изменение oracle цены.

Аудит (4-8 недель). Для протокола с потенциальным TVL >$1M — один аудит обязателен. Для TVL >$10M — два независимых аудита. Типичные находки в CDP-протоколах: неправильная обработка fee-on-transfer токенов как залога, reentrancy в auction callback, некорректный расчёт при частичном погашении долга.

Bug bounty и постепенный запуск. Debt ceiling на старте — минимальный, растёт по мере проверки протокола в боевых условиях.

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

MVP с одним типом залога и базовыми аукционами — 4-6 недель разработки. Полноценный протокол с несколькими залогами, Dutch auction, governance и мониторинговой инфраструктурой — 2-3 месяца. Аудит не включён в эти сроки — его нужно планировать отдельно.

Стоимость зависит от набора залогов, сложности governance и требований к UI.