Одного разу vault з «гарантією» втратив $2 млн, тому що смарт-контракт використовував поточний Aave rate без запасу на зниження. Користувачі не отримали principal назад. Такі випадки — не рідкість: помилка в економічній моделі або логіці redemption може знищити довіру за один день.
Ми розробляємо смарт-контракти, які гарантують повернення депозиту навіть при обвалі ринку. Ідея проста: користувач вносить $10,000, і в будь-якому випадку отримує назад мінімум $10,000. Дохідність — тільки зверху, втрат — немає. На практиці механіка вимагає точного розрахунку: частина капіталу має бути вкладена в безризиковий інструмент, який гарантовано зросте до номіналу до терміну, а решта йде в ризикову стратегію. Помилка в розрахунку — і vault не може виплатити principal за певних сценаріїв.
Як працює principal-protected vault?
Zero-coupon bond механіка
Класична модель: розділити депозит на дві частини. Якщо поточна дохідність за безризиковим активом становить 5% річних (наприклад, Aave USDC supply rate), то для повернення $10,000 через 1 рік потрібно вкласти $9,524 сьогодні. Решта $476 ($10,000 - $9,524) йдуть в ризикову стратегію — опціони, yield farming з leverage, структурований продукт. У DeFi «безризиковий» — це умовність. Aave несе смарт-контрактний ризик, USDC несе custodial ризик. Тому реальні системи використовують стресовий сценарій: «що якщо дохідність впаде вдвічі». При Aave rate 5% → 2.5% знадобиться $9,756 у безризиковій частині, тільки $244 у ризиковій. Це важливо враховувати при виборі терміну vault та цільової дохідності.
| Розмір депозиту | Дохідність безризикової | Частка в безризиковому | Частка в ризиковому |
|---|---|---|---|
| $10,000 | 5% | $9,524 | $476 |
| $10,000 | 2.5% | $9,756 | $244 |
Aave USDC як zero-coupon еквівалент
У смарт-контракті це реалізується через aToken (interest-bearing token Aave). При депозиті vault розділяє суму:
uint256 protectedAmount = calculateProtectedAmount(depositAmount, currentAaveRate, maturityPeriod); uint256 yieldAmount = depositAmount - protectedAmount; aavePool.supply(USDC, protectedAmount, address(this), 0); strategy.invest(yieldAmount); calculateProtectedAmount — ключова функція. Використовує Chainlink Price Feed для поточного Aave supply rate, обчислює дисконт за формулою PV = FV / (1 + r)^t. Ризик: якщо Aave rate впаде з моменту депозиту, aToken може не вирости до номіналу до терміну. Два варіанти захисту:
- Консервативний розрахунок (використовуємо 50% від поточного rate)
- Rate floor через Aave governance snapshot + off-chain моніторинг
Liquidation floor через опціони
Альтернативна механіка: купівля put option на суму депозиту на момент maturity. Якщо Opyn, Lyra або Hegic надають USDC put з потрібним страйком — vault купує protection напряму. Вартість put = premium = reducedYield. Ризикова частина інвестується повністю. Проблема: on-chain опціонна ліквідність на DeFi обмежена для великих сум (>$500K). Для інституційних продуктів — кастомні OTC структури через Ribbon Finance або Friktion (Solana).
| Порівняння механізмів | Aave-based | Option-based |
|---|---|---|
| Базовий актив | aToken | Put option |
| Гарантія | Накопичення % | Фіксований страйк |
| Ризик зниження rate | Є | Premium фіксований |
| Ліквідність | Висока | Обмежена до $500K |
Чому економічне моделювання критичне?
Точний розрахунок розподілу коштів — основа роботи vault. При помилці в calculateProtectedAmount навіть при ідеальному ринку захист не спрацює. Ми використовуємо stress-тести: що якщо Aave rate впаде до 0%, якщо ризикова стратегія втратить 50%. Тільки після підтвердження моделі в симуляціях переходимо до коду.
Архітектура смарт-контрактів
Share-based accounting з maturity
Vault видає ERC-20 share-токени при депозиті. Share ціна зростає з часом за рахунок накопиченої дохідності від ризикової стратегії. При maturity настає redemption window — користувачі спалюють shares і отримують max(depositAmount, currentShareValue).
function redeem(uint256 shares) external onlyAfterMaturity { uint256 assetsFromShares = convertToAssets(shares); uint256 protectedAssets = getProtectedAmountForShares(shares); uint256 payout = Math.max(assetsFromShares, protectedAssets); _burn(msg.sender, shares); USDC.transfer(msg.sender, payout); } getProtectedAmountForShares розраховує накопичену aToken вартість для частки shares відносно total supply.
Early exit механіка
Ранній вихід до maturity — стандартна вимога. Але при early exit protection не працює: aToken ще не досяг номіналу. Варіанти:
- Заборона early exit (жорсткий lockup)
- Вторинний ринок shares (AMM пул або orderbook)
- Early exit з penalty: користувач отримує поточну NAV без protection guarantee
Другий варіант технічно складніший (потрібен AMM для share токена), але краще для UX. Yearn-style vault з vToken + Curve пул для secondary market — робоча схема.
Оракули та manipulation resistance
NAV vault залежить від поточної вартості ризикової стратегії. Якщо стратегія використовує Uniswap v3 LP позицію — NAV включає вартість LP, яка залежить від spot price. Flash loan атака на spot price може тимчасово спотворити NAV і дозволити арбітраж через early exit/redemption. Захист: використовувати Chainlink price feed для розрахунку NAV, а не spot Uniswap. Chainlink Documentation рекомендує використовувати мінімальний коефіцієнт консервативності. Cooldown 24 години між депозитом та redemption (ERC-4626 extension). Circuit breaker при аномальній зміні NAV >10% за блок.
Процес розробки principal-protected vault
| Етап | Тривалість | Опис |
|---|---|---|
| Економічне моделювання | 1 тиждень | Параметри: термін vault, цільовий APY, вибір безризикової та ризикової стратегії, stress-тести |
| Проектування контрактів | 3-5 днів | Storage layout, інтерфейси з Aave v3 та Chainlink, maturity логіка, redemption механіка |
| Розробка | 3-5 тижнів | Vault core, інтеграції, fork-тести на mainnet, fuzz-тести всіх сценаріїв |
| Аудит | 2-3 тижні | Зовнішній аудит економічної моделі та коду, NatSpec, coverage >95% |
| Деплой | 1 тиждень | Timelock 48 годин, Gnosis Safe, документація для інтеграції |
Що входить в роботу
- Економічне моделювання з stress-тестами
- Проектування storage layout та інтерфейсів
- Розробка смарт-контрактів (Solidity, Foundry)
- Написання fork-тестів та fuzz-тестів
- Зовнішній аудит (вибір аудитора з вами)
- Деплой з timelock та налаштування Gnosis Safe
- Документація для інтеграції та користувацький інтерфейс (опціонально)
Наша команда має досвід у DeFi та реалізувала понад 30 проектів, включаючи vault-продукти для інституційних клієнтів. Зв'яжіться з нами для консультації щодо вашого проекту — ми оцінимо складність та запропонуємо оптимальне рішення. Замовте розробку principal-protected vault під ключ з повним аудитом.
Детальніше про zero-coupon bond механіку
Zero-coupon bond — це облігація, яка не виплачує купони, а продається з дисконтом до номіналу. У DeFi роль такої облігації виконує aToken, вартість якого лінійно зростає до номіналу за рахунок накопичення відсотків. Wikipedia визначає zero-coupon bond як борговий інструмент з дисконтом. У контексті vault ця механіка дозволяє гарантувати повернення principal.Орієнтири за термінами
Базовий vault з Aave protection + однією ризиковою стратегією: 6-8 тижнів. Система з кількома стратегіями, вторинним ринком shares та early exit механікою: 2-3 місяці. Отримайте консультацію щодо вашого проекту — ми оцінимо складність та запропонуємо оптимальне рішення.







