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

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

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

Команда запускает лендинг-протокол, вдохновлённый Aave v3. На этапе тестирования всё работает. После деплоя на mainnet через 48 часов оракул Chainlink возвращает устаревшую цену — liquidation threshold пробивает безопасные позиции. Ликвидаторы дренируют залоговый пул на $400K, пока команда разбирается в чём дело. Проблема не в самом Chainlink — в отсутствии staleness check: контракт не проверял updatedAt из latestRoundData().

Разработка DeFi-протокола — это не просто Solidity-код. Это система инвариантов, которые должны держаться при любых рыночных условиях, MEV-атаках и форс-мажорах на уровне инфраструктуры.

Где ломаются DeFi-протоколы на этапе дизайна

Oracle manipulation через flash loan

Типичная схема: атакующий берёт flash loan на 50M USDC в Aave, манипулирует ценой в Uniswap v2 пулу с низкой ликвидностью, использует этот пул как ценовой оракул, занимает под завышенный залог, не возвращает займ. Протоколы, которые используют token.balanceOf(pool) или spot price из AMM как оракул — уязвимы по определению.

Защита работает на нескольких уровнях:

TWAP вместо spot price. Uniswap v3 предоставляет OracleLibrary.consult() для расчёта time-weighted average price. Окно в 30 минут делает flash loan манипуляцию экономически невыгодной — нужно удерживать позицию несколько блоков, каждый с риском арбитража.

Chainlink с fallback. Primary source — Chainlink, fallback — Uniswap v3 TWAP. Если Chainlink возвращает цену с updatedAt старше 3600 секунд или answer < 0 — переключение на TWAP с emit события для мониторинга.

Circuit breaker на отклонение. Если цена за один блок изменилась более чем на 15% — транзакция реверсируется. Параметр настраивается через governance с timelock.

Reentrancy в cross-protocol взаимодействиях

AMM-протокол вызывает токен при swap. Если токен реализует ERC-777 с tokensReceived хуком — атакующий контракт получает управление в середине swap, до обновления внутренних балансов пула. Это не теория: атака на Uniswap v1 через ERC-777 была одной из первых публичных эксплойтов на DEX.

В современных протоколах проблема усложняется: callback-паттерны (uniswapV3SwapCallback, flashLoanReceiver) намеренно передают управление внешнему коду. Защита строится через invariant check: перед callback фиксируется состояние, после — проверяется что инварианты соблюдены.

Liquidation mechanics и bad debt

При резком падении рынка на 40%+ за один блок (Ethereum в марте 2020 упал на 50% за несколько часов) liquidation может не успеть. Залог стоит меньше долга — протокол получает bad debt. Compound v2 столкнулся с этим, MakerDAO ввёл механизм Emergency Shutdown именно как последний рубеж.

Параметры ликвидации требуют математического моделирования: loan-to-value ratio, liquidation threshold, liquidation bonus, close factor — все эти параметры должны быть откалиброваны под волатильность конкретного актива. WBTC и мем-токен не могут иметь одинаковый LTV.

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

Модульная структура контрактов

Монолитный контракт на 3000 строк — первая ошибка в DeFi-протоколе. Не из-за эстетики, а потому что:

  • Превышает лимит байткода EVM (24 KB)
  • Невозможно заменить отдельный модуль без полного редеплоя
  • Аудит занимает в 3x дольше и стоит соответственно

Используем Diamond Pattern (EIP-2535) для протоколов с богатой функциональностью: отдельные facets для lending, liquidation, oracle, governance. Хранилище — общий Diamond Storage через keccak256-слоты (ERC-7201).

Для более простых случаев — разделение на Core (неизменяемая логика), Periphery (вспомогательные контракты, можно обновлять) и Governance. Этот паттерн использует Uniswap, начиная с v2.

Upgradability: когда нужна и когда вредит

UUPS (EIP-1822) vs Transparent Proxy (EIP-1967): выбор зависит от того, кто платит за апгрейд. В UUPS логика апгрейда в имплементации — дешевле для пользователей, но если в новой имплементации убрать функцию upgradeTo — протокол теряет возможность апгрейда навсегда. В Transparent Proxy логика в proxy — чуть дороже каждый вызов, но надёжнее.

Для protocolов с TVL >$10M апгрейдаемость через multisig без timelock — это централизованный вектор атаки. Gnosis Safe 4-of-7 + 48-часовой timelock через OpenZeppelin TimelockController — минимальный стандарт доверия.

Tokenomics на уровне контракта

Ve-модель (vote-escrowed, как в Curve) требует careful balance: контракт блокирует токены на срок до 4 лет, начисляет voting power через balanceOfAtTime() на конкретный блок. Если voting power рассчитывается неверно — governance атака стоит дешевле, чем должна.

Emission schedule должен быть immutable или управляться через governance с супер-мажоритетным голосованием. Изменение эмиссии retroactively — это именно то, что убивает доверие к протоколу.

Стек разработки

Компонент Инструменты Назначение
Разработка Foundry, Hardhat Основная среда, тесты, деплой
Базовые контракты OpenZeppelin 5.x Access control, proxy, tokens
Oracle Chainlink, Uniswap v3 TWAP Ценовые данные
Тестирование Foundry fuzz, Echidna Property-based тесты
Статический анализ Slither, Mythril Автоматический поиск уязвимостей
Мониторинг Tenderly, OpenZeppelin Defender Алерты, автоматизация
Индексирование The Graph Субграф для frontend

Fork-тесты на Foundry позволяют запустить весь протокол против реального состояния mainnet: vm.createFork("mainnet"), vm.rollFork(blockNumber). Это единственный способ проверить взаимодействие с реальными пулами Uniswap, реальными Chainlink feeds и реальными позициями Aave.

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

Спецификация (1 неделя). Формальное описание инвариантов: «суммарный долг всегда меньше суммарного залога с учётом LTV», «только ликвидатор может закрыть unhealthy позицию», «emission rate не может вырасти больше чем на X% за один governance цикл». Инварианты становятся основой для Echidna property-тестов.

Архитектурный дизайн (3-5 дней). Storage layout, интерфейсы, диаграмма взаимодействия контрактов. Решение по апгрейдаемости и governance. Этот этап дешевле изменить на бумаге, чем после 2 недель разработки.

Разработка (3-8 недель). Зависит от сложности протокола. Параллельно: контракты + тесты в Foundry (покрытие >90%), субграф на The Graph, скрипты деплоя.

Внутренний аудит + подготовка к внешнему. Slither CI на каждый PR. Перед внешним аудитом — полная Mythril-проверка, ручной review по SWC-checklist. Цель — закрыть low/medium до внешнего аудитора, чтобы он сфокусировался на высокоуровневых векторах.

Деплой. Testnet (Sepolia/Arbitrum Goerli) → staged mainnet через multisig с timelock → post-launch мониторинг через Tenderly.

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

Минимальный AMM-протокол (xy=k, без концентрированной ликвидности) — 4-6 недель. Лендинг по модели Compound v2 — 8-12 недель. Полноценный протокол с ve-токеномикой, governance и cross-chain поддержкой — от 3 до 6 месяцев. Внешний аудит занимает 2-4 недели дополнительно и планируется заранее у топовых фирм (Trail of Bits, Spearbit, Code4rena).

Стоимость рассчитывается после технической спецификации.