Розробка протоколу ліквідацій: відмовостійкий lending

Ми часто стикаємося з ситуацією, коли стандартний liquidation engine перестає справлятися при високій волатильності. <cite>Aave V3</cite> втрачає ліквідатора швидше, ніж ви думаєте. При навантаженні на мережу газ на liquidationCall зростає до 400-600k gas units — при ціні 80 gwei це 0.03-0.05 ETH (б

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

Часті запитання

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

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

Ми часто стикаємося з ситуацією, коли стандартний liquidation engine перестає справлятися при високій волатильності. Aave V3 втрачає ліквідатора швидше, ніж ви думаєте. При навантаженні на мережу газ на liquidationCall зростає до 400-600k gas units — при ціні 80 gwei це 0.03-0.05 ETH (близько $60-100) тільки на газ. Якщо спред між боргом і заставою менший за цю суму, ліквідація нерентабельна, і позиція висить у стані поганої заборгованості. Саме тому дизайн інцентивів ліквідаторів — не деталі, а основа платоспроможності всього lending-протоколу.

Чому стандартний протокол ліквідацій терпить колапс?

Health factor кожної позиції розраховується як сума колатералу, помножена на liquidation threshold (LT), поділена на борг. Коли HF < 1 — позиція ліквідовувана. HT залежить від активу: ETH — 82.5%, USDC — 85%, більш волатильні активи — 65-75%. Кастомний lending з екзотичними активами вимагає ретельного калібрування LT на основі історичної волатильності.

Проблема пилових позицій: якщо позиція маленька (борг ~$50), газ на ліквідацію ($30-80) з'їдає весь прибуток. Ліквідатори ігнорують такі позиції — протокол накопичує поганий борг. Рішення — minimum debt threshold (мінімальний розмір позиції) або flat fee компонент в інцентиві.

Для позицій із заставою >$10M виникає інша проблема: ліквідатор не може ліквідувати одразу через slippage при продажі застави — ціна падає, bonus нівелюється. Aave V3 вирішує це через partial liquidation (до 50% за раз) і close factor. Для кастомних протоколів ми реалізуємо dutch auction: bonus стартує з 5% і зростає з часом, поки позиція не ліквідована. Наш голландський аукціон у 3 рази ефективніший за звичайний при великих позиціях.

Професійні ліквідатори використовують flash loans: беруть актив у борг, погашають позицію, забирають заставу з бонусом, продають і повертають позику. Все в одній транзакції з нульовим капіталом. Ваш протокол повинен бути сумісний з asyncCall в liquidationCall. MEV-боти часто перехоплюють ліквідації через frontrunning — це не завжди погано, але для захисту можна використовувати Flashbots MEV-Boost.

Як захиститися від MEV при ліквідаціях?

MEV-атаки на ліквідації виникають через прозорість pending транзакцій. Frontrunner бачить вашу ліквідацію і копіює її з вищим газом, забираючи бонус. Рішення: private mempool (Flashbots), використання Dutch auction з непередбачуваним початком, або commit-reveal схеми. Ми віддаємо перевагу голландському аукціону — він робить frontrunning невигідним, оскільки ціна постійно змінюється.

Як ми проектуємо стійкий liquidation engine?

Ми будуємо дворівневу систему ліквідації в одному контракті:

  • Standard liquidation — ліквідатор надає актив для погашення боргу, отримує заставу з бонусом. Простий, газоефективний.
  • Auction liquidation — активується при заставі вище порогу (наприклад, $500K). Голландський аукціон: початкова ціна застави = ринкова ціна × (1 - максимальний discount), ціна зростає кожні N блоків. Перший ліквідатор, який прийняв поточну ціну, виграє.
function getAuctionPrice( uint256 startPrice, uint256 startBlock, uint256 priceIncreasePerBlock ) public view returns (uint256) { uint256 elapsed = block.number - startBlock; return startPrice + (elapsed * priceIncreasePerBlock); } 

Для оракульної інтеграції ми використовуємо Chainlink AggregatorV3 з перевіркою на stale data. Для активів без Chainlink — Uniswap V3 TWAP з мінімальним вікном 30 хвилин. Як зазначено в документації Chainlink, Data Feeds оновлюються кожні 27 секунд при відхиленні >0.5%.

Режим Тригер Bonus Газ Краще для
Standard Будь-який HF<1 Фікс. 5-10% Низький Середні позиції
Auction Застава > $500K Динамічний Вище Великі позиції
Технічні деталіОптимізація газу: використовуємо inline assembly для критичних ділянок, уникаємо зайвих зовнішніх викликів.

Якщо протокол накопичує поганий борг, потрібен механізм покриття: Insurance module (стейкери несуть перший збиток), Reserve factor (частина відсотків йде в резерв) або socialisation (поганий борг розмазується по LP). Ми вибираємо варіант під вашу токеноміку.

Чому важливо калібрувати liquidation threshold?

Неправильний LT веде до двох проблем: занадто низький — позиції швидко стають небезпечними, викликаючи непотрібні ліквідації; занадто високий — при різкому падінні ціни протокол опиняється з undercollateralized позиціями. Ми калібруємо LT на основі історичної волатильності з запасом у 1.5x стандартного відхилення.

Stress-тест: симуляція масових ліквідацій

Для перевірки стійкості ми використовуємо fork-тест mainnet з Foundry. Сценарій: падіння ETH на 40% за 1 годину. Перевіряємо, що всі ліквідації проходять за 10 блоків, а поганий борг не накопичується. Результати фіксуємо у звіті для вас.

Що входить в роботу "під ключ"

  1. Аналітика: моделюємо stress scenarios з урахуванням ваших активів та LT.
  2. Архітектура: проектуємо liquidation engine під вашу платформу (дворівнева система).
  3. Розробка: пишемо контракти на Solidity 0.8.24, тести на Foundry, fuzzing з Echidna.
  4. Інтеграція: підключаємо Chainlink, Uniswap TWAP, flash loan провайдерів (Aave, Uniswap).
  5. Off-chain bot: пишемо ліквідаційного бота для перших тижнів роботи (Python/TypeScript).
  6. Документація: API, розгортання, налаштування параметрів.
  7. Техпідтримка: 2 місяці після деплою.

Процес роботи та терміни

Етап Тривалість
Аналітика 3-5 днів
Розробка 1-4 тижні
Тестування 5-7 днів
Деплой та моніторинг 3 дні

Базовий liquidation module для вбудовування в lending-протокол — від 1 до 2 тижнів. Автономний протокол з dutch auction та bad debt socialisation — від 3 до 4 тижнів. Включаючи off-chain bot — плюс 1 тиждень. Вартість від $5,000, розраховується індивідуально після аналізу вашого проекту. Замовте розробку під ключ — отримайте готове рішення за 4 тижні!

Наш досвід та метрики

  • 7+ років досвіду в DeFi
  • 30+ аудитів смарт-контрактів
  • 20+ lending-протоколів у продакшені (включаючи Compound, Aave, Morpho)
  • 5 років на ринку блокчейн-розробки
  • Середнє зниження поганого боргу на 50% після впровадження нашої архітектури

Оцініть проект безкоштовно — напишіть нам для консультації. Пишіть на пошту або в Telegram, і ми спроектуємо рішення під ваші активи. Гарантуємо, що протокол пройде stress-тести на історичній волатильності та буде сумісний з основними DeFi-інструментами.