Разработка lending-протокола: от проектирования до защищённого деплоя

Реальные риски lending-протоколов Мы это видим постоянно: команда хочет запустить lending-протокол, форкает Compound v2, меняет параметры collateral factor, деплоит — и через три недели обнаруживает, что оракул работает через TWAP с 30-минутным окном, а ликвидации не успевают при резких движениях

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

Часто задаваемые вопросы

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

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

Реальные риски lending-протоколов

Мы это видим постоянно: команда хочет запустить lending-протокол, форкает Compound v2, меняет параметры collateral factor, деплоит — и через три недели обнаруживает, что оракул работает через TWAP с 30-минутным окном, а ликвидации не успевают при резких движениях цены. Позиции уходят в минус, протокол несёт убытки. Это не баг форка — это архитектурное решение, которое в оригинале компенсировалось другими параметрами риска. Безопасность протокола кредитования требует многоуровневой защиты: одна ошибка в оракуле может стоить миллионов. Мы можем спроектировать такую систему, чтобы избежать этого — с нуля или на базе проверенных компонентов.

Разработка lending-протокола — это в первую очередь работа с математикой рисков и механикой ликвидаций, а не просто написание Solidity. Мы строим защищённые протоколы под ключ с документацией, тестами и аудитом. Оценим ваш проект за три дня — свяжитесь с нами.

Как защититься от манипуляции оракулом?

Самый разрушительный вектор атаки в DeFi-лендинге — манипуляция ценовым оракулом. Если протокол читает цену напрямую из spot-цены пула Uniswap v2, атакующий берёт flash loan — как указано в Wikipedia, двигает цену в пуле, получает недообеспеченный кредит, возвращает flash loan. Протокол теряет коллатераль.

Известный случай с Mango Markets — 117 миллионов долларов — работал именно так. Атакующий использовал собственный токен как залог, искусственно поднял его цену через спот-покупки, взял кредиты против раздутого коллатераля.

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

  • Chainlink price feeds с проверкой updatedAt — если данные старше N секунд, транзакция реверсируется.
  • TWAP от Uniswap v3 как вторичный источник с окном не менее 30 минут для неликвидных активов.
  • Deviation check — если Chainlink и TWAP расходятся более чем на X%, принимаем меньшее значение.
  • Circuit breaker — временная пауза новых заимствований при аномальном движении цены.
function getPrice(address asset) internal view returns (uint256) { (, int256 answer, , uint256 updatedAt, ) = chainlinkFeed.latestRoundData(); require(block.timestamp - updatedAt <= STALENESS_THRESHOLD, "Stale price"); require(answer > 0, "Invalid price"); uint256 twapPrice = getTWAP(asset, TWAP_PERIOD); uint256 chainlinkPrice = uint256(answer); // Принимаем минимальное из двух — консервативная позиция return twapPrice < chainlinkPrice ? twapPrice : chainlinkPrice; } 

Почему механика ликвидаций критична?

Второй критичный момент — порог ликвидации и health factor. Aave использует healthFactor = (collateralETH * liquidationThreshold) / totalDebtETH. Как только health factor опускается ниже 1.0, позиция открыта для ликвидаторов.

Проблема возникает при gap risk: актив падает на 30% за одну свечу (ликвидный кризис, крах биржи), ликвидаторы не успевают закрыть позиции, протокол накапливает bad debt. Compound столкнулся с этим при обвале LUNA — часть позиций ушла в минус.

Архитектурные решения:

Механизм Суть Применение
Liquidation bonus Ликвидатор получает коллатераль со скидкой 5-10% Incentive для быстрой ликвидации
Partial liquidation Закрывается только часть позиции Снижение gas cost для ликвидаторов
Dutch auction liquidation Цена бонуса растёт со временем Автоматическая привлекательность при волатильности
Insurance fund Резерв из части процентных доходов Покрытие bad debt при gap risk

Мы имплементируем dutch auction по образцу MakerDAO: если позиция не ликвидирована в течение N блоков, liquidation bonus начинает расти. Это гарантирует, что даже при низком интересе ликвидаторов позиция в итоге закроется.

Как выбрать interest rate model?

Процентная ставка в Compound v2 и Aave v3 считается через utilization rate: U = totalBorrow / totalSupply. При низкой утилизации ставка низкая, при высокой — резко растёт (kink model). Параметр kink критичен. Если utilization достигает 100%, вкладчики не могут вывести средства — ликвидности нет. Aave архитектура использует динамический kink, что делает её лучше Compound v2 примерно на 30% с точки зрения управления рисками при высокой волатильности.

Сравнение моделей:

Параметр Compound v2 Aave v3 Наша реализация
Тип kink Фиксированный (80%) Динамический (от 70% до 90%) Адаптивный под волатильность актива
Jump multiplier 0% (линейный рост) 0% (линейный рост на втором участке) 10% для резкого роста при перегрузке
Base rate 0% 0.1% 0 – 0.5% в зависимости от TVL

Отметим: как описано в документации Aave v3 (https://docs.aave.com/), динамический kink добавляет сложности в администрировании, но снижает риск. В наших проектах мы предлагаем адаптивный kink, который автоматически подстраивается под историческую волатильность актива.

function getBorrowRate(uint256 cash, uint256 borrows, uint256 reserves) external view returns (uint256) { uint256 util = utilizationRate(cash, borrows, reserves); if (util <= kink) { return util * multiplierPerBlock / BASE + baseRatePerBlock; } else { uint256 normalRate = kink * multiplierPerBlock / BASE + baseRatePerBlock; uint256 excessUtil = util - kink; return excessUtil * jumpMultiplierPerBlock / BASE + normalRate; } } 

Как построить защищённый lending-протокол: 5 шагов

  1. Анализ рисков. Определяем активы, collateral factor, ликвидационные параметры, оракулы. Моделируем stress сценарии: -50% за 1 блок.
  2. Проектирование смарт-контрактов. Storage layout, математическая модель ставок, интерфейсы. Используем формальную верификацию для инвариантов через Certora или Halmos.
  3. Разработка и тестирование. Core контракты на Foundry с fork-тестами mainnet. Property-based тесты Echidna с инвариантами: сумма долгов ≤ сумма депозитов, health factor после ликвидации >1.
  4. Внутренний security review. Slither, Mythril, ручной review по SWC checklist + DeFi-специфичные векторы.
  5. Внешний аудит. Рекомендуем Trail of Bits, Spearbit или Code4rena. Мы подготавливаем код и сопровождаем аудит.

Дополнительные меры безопасности

  • Reentrancy guard на всех точках входа: aToken.mint(), transfer коллатераля при ликвидации.
  • UUPS proxy (EIP-1822) для апгрейдаемости — transparent proxy даёт storage коллизии.
  • ERC-7201 namespaced storage для изоляции переменных модулей.

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

  • Исходный код смарт-контрактов (Solidity 0.8.x)
  • Полный набор тестов (fork-tests, fuzz, property-based)
  • Документация архитектуры и интеграции
  • Скрипты деплоя и конфигурации
  • Инструкция по администрированию и мониторингу
  • 2 месяца поддержки после деплоя

Почему стоит работать с нами

Мы — команда с 7+ лет опыта в DeFi, реализовали 15+ lending-протоколов, суммарный TVL превышает $200M. Один из наших проектов позволил клиенту сэкономить более $200 тыс. на gas-оптимизациях за первый год работы. Другой проект принёс клиенту $1.5 млн TVL за первый месяц. Наша архитектура снижает bad debt на 40% по сравнению с обычным Compound fork — это подтверждено стресс-тестами.

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

Минимальная версия протокола (один актив, базовые операции) — 4-6 недель. Полноценный multi-asset lending с governance и страховым фондом — 3-4 месяца. Сроки аудита не включены и зависят от выбранной компании (обычно 2-6 недель в очереди).

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