Разработка форка Aave для кастомного lending

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

Разработка форка Aave для кастомного lending

Форкнуть Aave V3 — это не скачать репозиторий и поменять параметры. Codebase Aave V3 содержит 47 основных контрактов, 15 000+ строк Solidity, нетривиальную систему ролей и три разных proxy-паттерна. Большинство «форков», которые мы видели на аудите, ломались в одном из трёх мест: неправильная конфигурация PoolAddressesProvider, сломанный interest rate model, или отключённая проверка oracleType при добавлении нового актива. Любая из этих ошибок — потенциальный дрейн фондов.

Где форкеры чаще всего ошибаются

PoolAddressesProvider и роли

Aave V3 использует PoolAddressesProvider как центральный реестр адресов всех контрактов системы. При деплое форка критично правильно инициализировать все роли:

  • POOL_ADMIN — добавляет активы, меняет параметры рисков
  • EMERGENCY_ADMIN — может остановить рынок при атаке
  • RISK_ADMIN — изменяет liquidation threshold и LTV
  • FLASH_BORROWER — белый список для нулевой flash loan fee
  • ASSET_LISTING_ADMIN — листинг новых активов

Мы видели форки, где все роли были на одном EOA без timelock. Один скомпрометированный ключ — и атакующий меняет oracle на свой контракт, листит фейковый актив с высоким LTV, берёт против него все реальные активы в долг.

Правильная конфигурация: POOL_ADMIN и RISK_ADMIN — Gnosis Safe 3-of-5 с timelock 48 часов. EMERGENCY_ADMIN может быть 2-of-3 без timelock (нужна быстрая реакция при атаке).

Interest Rate Model: расчёт и параметры

Aave использует кусочно-линейную модель ставок с оптимальной утилизацией. При утилизации ниже OPTIMAL_USAGE_RATIO ставка растёт медленно, выше — экспоненциально. Параметры модели для каждого актива:

if (utilization < OPTIMAL_USAGE_RATIO):
    borrowRate = baseVariableBorrowRate + (utilization / OPTIMAL_USAGE_RATIO) * variableRateSlope1
else:
    excessUtil = utilization - OPTIMAL_USAGE_RATIO
    borrowRate = baseVariableBorrowRate + variableRateSlope1 + (excessUtil / (1 - OPTIMAL_USAGE_RATIO)) * variableRateSlope2

Ошибка в параметрах — или ставки слишком низкие (LP не получают справедливый yield), или слишком высокие при стрессе (каскадные ликвидации). Для кастомных активов мы калибруем параметры на основе исторической волатильности и liquidity depth на CEX/DEX.

EMode и изолированные активы

Aave V3 ввёл два важных механизма:

Efficiency Mode (eMode) — позволяет задать категорию активов, которые коррелированы (например, все stablecoins или все деривативы ETH). Внутри категории LTV может быть 95%+, потому что риск ликвидации при движении цены минимален. Неправильная настройка eMode — пользователи берут в долг больше, чем должны.

Изолированный режим — актив доступен как collateral только в изоляции (нельзя смешивать с другими). Важен для долгохвостых активов с низкой ликвидностью.

Что и почему меняем в форке

Кастомный oracle layer

Если форкаете под Polygon, Arbitrum или zkSync — Chainlink Data Feeds доступны, но не для всех активов. Для нелистованных активов нужен кастомный oracle. Aave V3 использует IPriceOracleGetter интерфейс — достаточно реализовать getAssetPrice(address asset) и зарегистрировать в AaveOracle.

Для новых активов строим составной оракул: primary source — Chainlink (если есть), fallback — Uniswap V3 TWAP 30 минут. При расхождении >5% между источниками — circuit breaker, ликвидации временно останавливаются.

Адаптированный reserve factor

Reserve factor — процент от процентных доходов, который идёт в treasury протокола. В оригинальном Aave он варьируется от 10% (stablecoins) до 20-35% (более волатильные активы). В форке можно настроить иначе: например, 50% в treasury + 50% в insurance module для защиты от bad debt.

Изменение liquidation parameters

Для кастомного форка под определённую нишу (например, NFT-коллатерализованный lending) стандартные параметры ликвидации не работают. NFT — неликвидный актив, instant liquidation невозможна. Нужен auction mode: ликвидатор открывает аукцион, через 24-48 часов забирает актив. Это требует полной переработки LiquidationLogic.sol.

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

Мы работаем с Aave V3 codebase от тега v3.0.1 или актуальной версии на момент начала проекта. Не берём нефиксированный main — в production идёт только проверенная версия.

Foundry fork-тесты — основа QA. Для каждого изменённого модуля пишем тесты против реального Aave V3 на mainnet: проверяем, что поведение совпадает для стандартных операций и кастомная логика работает только там, где нужно.

# Тест liquidation на форке mainnet
forge test --fork-url $ETH_MAINNET_RPC --match-test testLiquidationWithCustomOracle -vvvv

Для фронтенда — Aave V3 Utilities SDK адаптируется под кастомные параметры. wagmi + viem для подключения кошельков. The Graph subgraph для исторических данных по позициям.

Сети деплоя

Сеть Gas cost Chainlink feeds Особенности
Ethereum mainnet Высокий Полный набор Максимальная ликвидность арбитражников
Arbitrum One Низкий Хороший набор L2, дешёвые ликвидации
Polygon PoS Низкий Хороший набор Широкая аудитория
Base Низкий Растущий набор Coinbase экосистема
zkSync Era Очень низкий Ограниченный Верификация ZK proof-ов

Процесс работы

Аналитика (1 неделя). Определяем, какие активы листинговать, какие параметры рисков нужны, нужны ли eMode категории, какой oracle layer подходит для целевой сети.

Форк и адаптация (2-3 недели). Деплой и настройка PoolAddressesProvider, адаптация oracle layer, кастомизация параметров рисков, настройка governance ролей.

Тестирование (1-2 недели). Fork-тесты всех операций. Stress-тесты: симуляция Black Thursday (ETH -40% за час). Echidna property tests: solvency invariant не нарушается при любой последовательности операций.

Аудит (2-4 недели). Для форка с изменёнными модулями — обязательный внешний аудит изменённых частей. Для деплоя с минимальными изменениями — аудит конфигурации и параметров.

Деплой и запуск. Поэтапный: сначала testnet (Sepolia/Arbitrum Goerli), затем mainnet с ограниченными лимитами, постепенное снятие лимитов по мере роста TVL.

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

Форк с минимальными изменениями (только параметры, новый oracle) — 3-5 недель. Форк с кастомным liquidation mechanism или eMode конфигурацией — 6-10 недель. Форк под нестандартный коллатерал (NFT, RWA) — от 10 недель, включая разработку специализированного liquidation engine.