Крупный протокол потерял $197M из-за атаки на ликвидацию. Пользователи с полисами от Nexus Mutual получили выплаты — остальные нет. Такой случай показывает: on-chain страхование — не маркетинг, а финансовый примитив. Мы разрабатываем протоколы, которые решают три проблемы: как определить страховой случай без субъективного участия, как динамически считать премии и как защитить пул от bank run. Проконсультируйтесь с нашими инженерами, чтобы разработать полис под ваши риски.
Три класса рисков: как их покрываем
Как работает параметрическое страхование ликвидации?
Ликвидация — самый формализуемый страховой случай. Lending-протоколы (Aave, Compound) эмитируют события LiquidationCall с параметрами: кто ликвидирован, сколько collateral изъято, какой debt погашен. Страховой контракт слушает эти события через лог-фильтрацию или верифицирует через proof в рамках одной транзакции. Параметрическое страхование быстрее governance-голосования в 2-3 раза по скорости выплат и исключает человеческий фактор.
Главная сложность — момент выплаты. Если производить выплату сразу после события, атакующий может искусственно создать ликвидацию собственной позиции и получить страховую выплату. Защита:
- Минимальный период между открытием позиции и выплатой (cooling period, например 7 дней)
- Проверка, что health factor падал постепенно, а не резко (защита от flash loan-манипуляции оракулом)
- Лимит выплаты как процент от ущерба, а не полное покрытие (co-insurance, 20-30% от потери)
Как работает страхование от взломов протокола?
Страхование от смарт-контракт эксплойтов — сложнее. Страховой случай субъективен: «был ли это взлом или задокументированное поведение?» Один подход — UMA Optimistic Oracle: заявитель подаёт claim с bond (5% от суммы), в течение окна 2 часов любой может оспорить. При отсутствии оспаривания выплата проходит автоматически. Альтернатива — собственный dispute resolution с Kleros арбитражем.
Для coverage pools нужен отдельный пул ликвидности, который берёт на себя риск. LP получают yield от страховых премий (до 20% годовых при utilisation 70%), но несут риск выплат. Ключевая уязвимость — bank run: при крупном взломе все LP пытаются вывести ликвидность одновременно. Наша архитектура включает lockup period (минимум 7-14 дней с момента начала вывода) и gradual release через очередь выводов.
Как защититься от сбоя оракула?
Отдельный класс — страхование от манипуляции или сбоя Chainlink-фида. Однажды некорректный фид LUNA вызвал каскад ликвидаций на Venus Protocol. Параметрический страховой случай здесь: «отклонение цены оракула от медианы нескольких источников превысило 2% за 10 блоков».
Для верификации этого события on-chain нужен агрегатор нескольких оракулов прямо в страховом контракте — Chainlink + Uniswap V3 TWAP + Pyth Network. Если их медианы расходятся более чем на порог — страховой случай наступает автоматически без голосования.
Проконсультируйтесь с нашими инженерами, чтобы выбрать оптимальное решение для вашего проекта.
Архитектура протокола
Модульная структура
InsuranceCore.sol — главный роутер
├── PolicyManager.sol — создание и хранение полисов
├── PremiumCalculator.sol — динамический расчёт премий
├── ClaimsProcessor.sol — верификация и выплаты
├── CapitalPool.sol — пул капитала LP
└── RiskOracle.sol — агрегатор условий страхового случая
Каждый модуль обновляемый через UUPS, но с timelock на governance-изменения минимум 48 часов. Для ClaimsProcessor — отдельный timelock 7 дней: выплаты не должны проходить мгновенно без возможности оспаривания.
Расчёт премий: actuarial model on-chain
Статичные премии — это неправильно. Протокол динамически корректирует премии на основе:
- Текущей утилизации капитального пула (при utilisation < 50% премия снижается на 40%, при > 80% — растёт на 50%)
- Исторической волатильности застрахованного протокола (через on-chain данные)
- Coverage ratio (отношение капитала пула к максимальным выплатам)
Простейшая формула: premium = basePremium * utilizationMultiplier * riskMultiplier. Все три параметра обновляются governance с timelock.
Верификация через Merkle proof
Для страхования позиций на Aave пользователь может представить Merkle proof своей позиции из snapshot состояния протокола на момент страхового случая. Это позволяет не хранить все позиции on-chain, а верифицировать принадлежность конкретной позиции к множеству пострадавших.
Генерация Merkle tree происходит off-chain через The Graph subgraph, proof публикуется в IPFS, ClaimsProcessor верифицирует через MerkleProof.verify() из OpenZeppelin.
Критические уязвимости и защита
| Вектор атаки |
Описание |
Защита |
| Самоликвидация |
LP страхует себя, провоцирует ликвидацию |
Cooling period + проверка health factor истории |
| Flash loan манипуляция оракулом |
Искусственный триггер страхового случая |
TWAP 30-минут + мультиоракульная медиана |
| Bank run на coverage pool |
Массовый вывод LP при крупном событии |
Lockup 14 дней + очередь выводов |
| Griefing через UMA dispute |
Оспаривание всех клеймов для блокировки выплат |
Escalation game с растущим bond |
| Reentrancy в ClaimsProcessor |
Многократный вызов выплаты |
ReentrancyGuard + pull payment pattern |
Сравнение подходов к определению страхового случая
| Подход |
Скорость выплаты |
Субъективность |
Сложность реализации |
| Параметрический (ликвидация) |
Мгновенно |
Низкая |
Средняя |
| Optimistic Oracle (UMA) |
До 2 дней |
Средняя |
Высокая |
| Governance голосование |
Недели |
Высокая |
Низкая |
Что входит в результат
- Полный аудит смарт-контрактов с отчётом об уязвимостях
- Развёртывание протокола на тестовой сети и mainnet
- Документация по эксплуатации и управлению рисками
- Исходный код с форматтирующими плагинами и тестами
- Обучение вашей команды по архитектуре и процессу обновления
- Поддержка в течение 30 дней после деплоя
Ориентиры по срокам
Минимальный протокол с одним классом риска (только ликвидации) — от 4 до 6 недель. Полноценный мультирисковый протокол с governance и динамическими премиями — от 8 до 14 недель. Плюс 2-4 недели на внешний аудит перед mainnet-деплоем.
Свяжитесь с нами для оценки вашего проекта. Закажите консультацию, и мы предложим архитектуру под ваш use case.
Разработка 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-протокола — мы проанализируем риски и предложим оптимальное решение.