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

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка форку Aave для кастомного lending
Складний
від 2 тижнів до 3 місяців
Часті запитання

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

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    587
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Розробка форку 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 — whitelist для нульової flash loan комісії
  • ASSET_LISTING_ADMIN — листинг нових активів

Ми бачили форки, де всі ролі були на одному EOA без timelock. Один скомпрометований ключ — і атакуючий мінює оракул на свій контракт, листить фейковий актив з високим 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 — користувачі позичають більше, ніж повинні.

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

Що та чому ми міняємо у форку

Кастомний oracle layer

Якщо форкуєте під Polygon, Arbitrum або zkSync — Chainlink Data Feeds доступні, але не для всіх активів. Для не-листованих активів потрібен кастомний оракул. 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 параметрів

Для кастомного форку під певну нішу (наприклад, NFT-коллатералізований lending) стандартні параметри ліквідації не працюють. NFT — неліквідний актив, миттєва ліквідація неможлива. Потрібен auction mode: ліквідатор відкриває аукціон, через 24–48 годин забирає актив. Це потребує повної переробки LiquidationLogic.sol.

Stack розробки форку

Ми працюємо з 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 для історичних даних по позиціям.

Мережі деплоя

Мережа Газ 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 інваріант не нарушена при будь-якій послідовності операцій.

Аудит (2–4 тижні). Для форку зі змінено модулями — обов'язковий зовнішній аудит змінено частин. Для деплоя з мінімальними змінами — аудит конфігурації та параметрів.

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

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

Форк з мінімальними змінами (тільки параметри, новий оракул) — 3–5 тижнів. Форк з кастомним liquidation механізмом або eMode конфігурацією — 6–10 тижнів. Форк під нестандартний колатераль (NFT, RWA) — від 10 тижнів, включаючи розробку спеціалізованого liquidation engine.