Разработка yield vault с автокомпаундингом под ключ

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1305 услуг
Разработка yield vault с автокомпаундингом под ключ
Сложный
~1-2 недели
Часто задаваемые вопросы

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

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

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

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

Пользователь внёс 100 ETH в vault на Curve, но из-за пропущенного harvest в течение месяца APY оказался на 30% ниже расчётного. Это типовая ситуация: без автокомпаундинга сложный процент не работает, а ручной сбор наград (harvest) требует времени и газовых затрат. Мы строим yield vault — смарт-контракты, которые автоматически реинвестируют доходность, избавляя от ручного harvest. Это ключевой компонент DeFi-протоколов, но реализация сопряжена с нетривиальными техническими сложностями: кто платит за compound, как избежать проскальзывания при продаже reward-токенов и как защититься от reentrancy через токены с хуками. Наши инженеры с 5+ летним опытом в DeFi запустили 10+ vault-ов в mainnet, и мы готовы поделиться наработанными практиками.

Как работает yield vault с автокомпаундингом?

Yield vault принимает пользовательские средства, размещает их в протоколе (Aave, Compound, Curve, Convex), собирает накопленные reward-токены и реинвестирует их обратно. На практике возникают нетривиальные проблемы: кто платит за compound, как не потерять на проскальзывании при продаже rewards и как не попасть под reentrancy через токены с хуками.

Кто вызывает harvest и за чей счёт

Автокомпаундинг требует периодического вызова функции harvest() — сбор rewards и реинвестирование. Эту транзакцию кто-то должен оплатить.

  • Permissionless harvest: Любой может вызвать harvest() и получить bounty (обычно 0.5-1% от собранных rewards). Экономика работает, когда rewards достаточно велики. При низком TVL vault-а harvest случается редко, APY ниже заявленного.
  • Keeper-based harvest: Согласно документации Chainlink Automation, настройка триггера занимает минуты. Chainlink Automation или Gelato Network вызывают harvest() по расписанию или при накоплении порога. Надёжнее, но требует финансирования. Gelato берёт оплату из самих rewards через IAutomate интерфейс.
  • Harvest при каждом deposit/withdraw: Самый простой вариант, но при первом депозите в новый vault вы платите gas за harvest нулевых rewards.

Мы обычно используем гибрид: keeper по расписанию с permissionless harvest как fallback.

Математика компаундинга и ошибки накопления

APY при компаундинге: (1 + r/n)^n - 1, где r — годовая ставка, n — количество компаундингов в год. При ежедневном компаундинге (n=365) и 20% APR — APY составит 22.13%. При еженедельном (n=52) — 21.94%. Разница небольшая, но неправильная частота на frontend разочаровывает пользователей.

Ошибка округления: при каждом compound shares * pricePerShare не всегда делится нацело на totalAssets. Накопительная ошибка за тысячи compound-операций может стать значимой. Решение: хранить totalAssets как точное значение, обновлять его атомарно при каждой операции. Эффект сложного процента работает без потерь.

Как настроить Chainlink Automation keeper?

  1. Разверните контракт vault и зарегистрируйте upkeep на Chainlink Automation.
  2. В checkUpkeep() верните true, когда накопленные rewards превышают порог (например, 1000 токенов).
  3. В performUpkeep() вызовите harvest() и сжигайте комиссию keeper.
  4. Установите интервал проверки (minWaitSeconds) и бюджет в LINK.

Это гарантирует регулярный compound даже при низком TVL.

Стратегия — ядро vault

Интеграция с Curve + Convex

Классическая стратегия: депозит USDC → Curve 3pool (USDC/USDT/DAI) → получение 3CRV → стейкинг в Convex Finance → получение CRV + CVX rewards → продажа CRV/CVX за USDC → добавление обратно в 3pool. Кривые взаимодействия в Solidity:

// Deposit в Curve
ICurvePool(POOL_3CRV).add_liquidity([amount, 0, 0], minLpTokens);
// Stake LP в Convex
IConvexBooster(BOOSTER).deposit(pid, lpAmount, true);
// Claim rewards
IConvexRewardPool(REWARD_POOL).getReward(address(this), true);
// Sell CRV via Uniswap V3
ISwapRouter(UNISWAP_ROUTER).exactInputSingle(params);

Риск проскальзывания при продаже rewards: если vault накопил 50,000 CRV и продаёт всё за один своп — price impact 2-5%. Решение: разбить продажу на несколько частей (slicedSell) или использовать 1inch для оптимального маршрута через несколько пулов.

Управление комиссиями

Стандартная структура fee для yield vault:

  • Performance fee: 10-20% от накопленного yield при каждом harvest. Идёт treasury протокола.
  • Management fee: 0.5-2% годовых от TVL. Начисляется непрерывно через увеличение totalAssets в пользу treasury.
  • Withdrawal fee: 0-0.1%. Опционально, для discourage краткосрочных депозитов.

Реализация management fee без отдельных транзакций: при каждом totalAssets() call вычислять elapsed_seconds * annualFeeRate / SECONDS_IN_YEAR * tvl и вычитать из возвращаемого значения. Treasury shares минтятся при harvest.

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

Модель Преимущества Недостатки Затраты на газ
Permissionless bounty Нулевые затраты на keeper Непредсказуемая частота OPEX на bounty (0.5-1% rewards)
Keeper (Chainlink) Гарантированная периодичность Затраты на LINK $2-5 за upkeep в день
При депозите/выводе Простота, нет внешних зависимостей Редкий harvest при малом TVL Входит в gas пользователя

Какие риски возникают при работе с yield vault?

Reentrancy через ERC-777 и callback-токены

Harvest функция делает несколько внешних вызовов: claim → swap → deposit. ERC-777 токены вызывают tokensReceived хук у получателя. Если vault принимает ERC-777, во время claim хук может вызвать deposit или withdraw до завершения harvest. Паттерн защиты: nonReentrant на harvest, deposit, withdraw.

Sandwich-атаки на harvest своп

Публичный harvest() видим в mempool. MEV-боты делают sandwich: покупают CRV до harvest свопа, продают после. Защита: deadline на своп (максимум 1-2 блока), жёсткий minAmountOut через TWAP oracle вместо spot price. amountOutMin = twapPrice * amount * (1 - maxSlippage). TWAP за 30 минут — Uniswap V3 observe(). Альтернатива: Flashbots Private Transactions.

Price manipulation через flash loan

Стратегия, которая читает spot price из AMM для расчёта compound ratio, уязвима: flash loan временно сдвигает цену. Решение: никогда не использовать spot AMM price для принятия решений о суммах. Только TWAP или Chainlink для ценовых расчётов.

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

Solidity 0.8.x + OpenZeppelin 5.x (ERC-4626, ReentrancyGuard, Pausable, AccessControl). Foundry для тестирования с fork-тестами на mainnet. Chainlink Automation для keeper. 1inch Fusion API для оптимальных свапов.

Риск Вектор Защита
Reentrancy ERC-777 хуки в claim nonReentrant на все state-changing функции
Sandwich Публичный harvest TWAP minAmountOut + Flashbots
Price manipulation Spot AMM цены Chainlink / TWAP для расчётов
Накопительная ошибка fee Неточный totalAssets Exact accounting, обновление при каждой операции
Слишком редкий compound Недостаточный TVL Keeper + permissionless с bounty

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

  • Аналитика (2-3 дня). Целевые протоколы, структура fee, частота compound, требования к keeper.
  • Проектирование (3-5 дней). ERC-4626 vault архитектура, отдельная стратегия контракт для апгрейдаемости, fee accounting.
  • Разработка (2-4 недели). Vault → стратегия → keeper интеграция → frontend (wagmi + viem).
  • Тестирование. Foundry fork-тесты: полный цикл deposit → earn → harvest → withdraw на mainnet состоянии. Fuzz на суммы и timing.
  • Аудит. Внешний аудит обязателен при TVL > $500k. Наши vault-ы проходят формальную верификацию.

Что входит в результат?

  • Исходный код смарт-контрактов (проверен на Etherscan)
  • Документация архитектуры и инструкция по деплою
  • Настроенный Chainlink Automation keeper
  • Интеграция с 1inch для оптимальных свопов
  • Отчёт об аудите (при необходимости)
  • Обучение команды и поддержка на этапе запуска

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

Простой vault на один протокол с Chainlink Automation — 1-2 недели. Мультистратегийный vault с оптимальным роутингом rewards и sandwich-защитой — 4-8 недель. Стоимость рассчитывается после определения стратегии и требований к безопасности. Обсудите детали — мы подготовим индивидуальное коммерческое предложение.

Закажите разработку yield vault с автокомпаундингом — получите бесплатную консультацию. Наши инженеры с 5+ летним опытом в DeFi реализовали 10+ vault-ов для известных протоколов. Опишите вашу задачу, и мы предложим оптимальное решение.

Разработка DeFi-протоколов

Мы проектируем модульные DeFi-протоколы, в которых математика стейблкоинов, ликвидности и оракулов работает без сбоев. Mango Markets — краш-тест: атакующий манипулировал spot price через один аккаунт, взял кредит под завышенный collateral и вывел $114 млн. Оракул брал цену с единственного источника без TWAP. Не баг в коде — это архитектурное решение, которое стало уязвимостью. Наш опыт показывает: любой DeFi-протокол — это система ставок на то, что все компоненты, от расчётов до экономических стимулов, выстроены правильно одновременно.

Мы не пишем код под «если всё работает, не трогай». Мы моделируем стресс-сценарии: каскадные ликвидации, депег, флеш-кредиты. И только после этого — события, которые не сломают протокол.

Почему оракулы — критический компонент DeFi?

Большинство крупных взломов DeFi начинались с манипуляции оракулом. Разберём три слоя, которые мы используем в каждом проекте.

Spot price как оракул — не вариант. Uniswap v2 spot price можно сдвинуть flash loan за одну транзакцию. Цена в конце блока — единственное, что попадает в state, её и читает оракул. Схема атаки: занять через flash loan → купить актив в пул → цена поднялась → взять кредит под завышенный collateral → продать актив → вернуть flash loan. Одна транзакция.

TWAP как защита. Uniswap v3 observe() усредняет цену за период (30 минут). Манипуляция требует удерживать цену несколько блоков — это стоит дорого. Но TWAP медленно реагирует на легитимные изменения, что открывает окно для arbitrage на liquidation при резких движениях.

Chainlink Price Feeds — агрегация от множества data providers с медианой. Стандарт для lending. Проблема: heartbeat 1–24 часа и deviation threshold 0.5%. Если цена не двигается, фид может не обновляться сутки. В волатильном рынке — lag.

Оракул Механизм Защита от манипуляции Задержка
Chainlink Медиана от независимых провайдеров Высокая (децентрализация) До 24 ч при 0% движения
Uniswap v3 TWAP Средняя цена за N блоков Высокая (сложно удерживать) 30 мин — 1 ч
Pyth Network Cross-chain low-latency Средняя (зависимость от publisher) Секунды

В продакшене мы используем двухуровневую проверку: Chainlink aggregator + Uniswap v3 TWAP как верификатор. Если расхождение больше N% — транзакция отклоняется, система ставится на паузу.

Как защитить DeFi-протокол от flash loan атак?

Flash loan превращает любого пользователя в обладателя неограниченного капитала на одну транзакцию. Поэтому при проектировании контрактов мы предполагаем: доступ к неограниченному капиталу есть у всех. Это меняет threat model полностью.

Легитимные применения flash loan — arbitrage, liquidation, самоликвидация. Но протокол должен проверять, что заём не используется для манипуляции: оракул не должен читать цену из пула, который можно сдвинуть за одну транзакцию. Мы добавляем проверки на block.timestamp и минимальную глубину ликвидности.

Ключевые компоненты DeFi-архитектуры

Тип протокола Основная механика Главный риск
DEX (AMM) x*y=k или concentrated liquidity impermanent loss, oracle manipulation
Lending collateral ratio, liquidation bad debt при каскадных ликвидациях
Yield aggregator автокомпаундинг стратегий rug через strategy upgrade
Derivatives / Perps funding rate, mark price liquidation cascades, socialized losses
Liquid staking stETH-style rebasing depegging при mass unstake

AMM: от x*y=k до concentrated liquidity

Uniswap v2 использует x * y = k. LP-токены ERC-20 — каждый пул выпускает свой токен пропорционально доле. Проблема: ликвидность размазана по всей кривой, большая часть не используется.

Uniswap v3 и позиции ERC-721: concentrated liquidity — LP предоставляет ликвидность в диапазоне [priceLow, priceHigh]. Capital efficiency до 4000x для стабильных пар. Но ERC-721 ломает vault-стратегии под ERC-20. Управление ranges — отдельная инженерная задача: позиция выходит из диапазона при движении цены, перестаёт зарабатывать fees, становится single-asset. Протоколы типа Arrakis Finance автоматически rebalance. Если строите vault поверх v3, нужен собственный range manager или интеграция с существующим.

Slippage в v3 рассчитывается через sqrtPriceX96 — 96-битная fixed-point математика. Ошибки на фронтенде приводят к расхождению между видимым и фактическим slippage.

Curve для пар с близкими ценами (stablecoin/stablecoin, stETH/ETH) использует инвариант, комбинирующий constant product и constant sum. Меньше slippage в диапазоне peg. Контракты на Vyper, код математически плотный, аудировать сложно.

Lending протоколы: collateral, liquidation, bad debt

LTV определяет максимальный кредит под collateral. Liquidation threshold — уровень ликвидации. Разница — буфер для liquidator. Типичный пример: LTV 75%, liquidation threshold 80%, bonus 5%. Если цена падает на 20%+, позиция открыта к ликвидации.

Каскадные ликвидации: много позиций ликвидируется одновременно → ликвидаторы продают collateral → цена падает → следующая волна. LUNA/UST 2022 — классический каскад.

Если collateral обесценивается быстрее ликвидации, протокол получает bad debt. Aave использует Safety Module (застейканный AAVE), Compound — reserves. Без backstop bad debt социализируется через dilution supply-токена или взаимозачёт.

Проектирование системы ликвидации требует моделирования стресс-сценариев: падение единственного liquidation bot, высокий gas, делистинг collateral.

Yield farming и incentive mechanics

Liquidity mining — раздача governance-токенов LP-провайдерам. Проблема mercenary capital: фармеры приходят, продают токены, уходят. TVL фиктивный.

Устойчивые механики: protocol-owned liquidity (Olympus bonding), veToken (CRV locked → boost + governance), locked staking с penalty. Ve-модель при неправильной реализации создаёт governance concentration. Нужен timelock на изменения gauge weights и лимиты на votingPower.

Что входит в нашу разработку DeFi-протоколов

  • Архитектурная документация: диаграммы взаимодействия контрактов, стресс-тесты ликвидаций, расчёты оракулов.
  • Реализация на Solidity 0.8.x с OpenZeppelin 5.x (AccessControl, ReentrancyGuard, Pausable, TimelockController) и Solmate для gas-optimised base contracts.
  • Foundry fork-тесты на реальном mainnet (Uniswap, Chainlink, Aave) — тесты до деплоя покрывают все сценарии.
  • Аудит: минимум два независимых аудитора для TVL от $1M. Code4rena или Sherlock для bug bounty.
  • Деплой с Gnosis Safe 3/5 multisig + timelock 48–72 часа.
  • Мониторинг через Tenderly (alerts, симуляции), OpenZeppelin Defender (automation), Forta (on-chain threat detection).
  • Поддержка после запуска: обновления, патчи, апгрейды через proxy.

Наши компетенции и опыт

Мы разрабатываем DeFi-протоколы с 2020 года — за это время реализовали 30+ проектов с общим TVL более $150 млн. Среди клиентов — протоколы в топ-20 по TVL на Ethereum, Arbitrum и Base. Команда сертифицированных разработчиков Solidity, прошедших аудиторские треки ConsenSys Diligence.

DeFi на Wikipedia — базовые принципы, которые мы применяем на практике.

Сроки

  • DEX с AMM (Uniswap v2 fork): 6–10 недель
  • Lending protocol (Aave-style, один collateral): 3–5 месяцев
  • Yield aggregator с несколькими стратегиями: 2–4 месяца
  • Полноценный DeFi-протокол с governance: 5–8 месяцев включая аудит

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

Получите консультацию по архитектуре DeFi-протокола — мы проанализируем риски и предложим оптимальное решение.