Разработка протокола опционов на блокчейне (Dopex-стиль)
Децентрализованные опционы — один из самых технически сложных сегментов DeFi. Dopex построил архитектуру, которая решает главную проблему on-chain опционов: ликвидность. Вместо orderbook, где покупатель и продавец должны найти друг друга, Dopex использует пулы ликвидности (SSOV — Single Staking Option Vault), где LP-провайдеры коллективно выступают в роли продавца опционов. Купить call или put можно в любой момент, пока в пуле есть резервы. Реализация такого протокола с нуля — это 6-16 недель работы, в зависимости от глубины функционала.
Механика SSOV: как работает пул опционов
Epoch-структура и strike цены
SSOV работает эпохами — фиксированными периодами (обычно 1 месяц). В начале эпохи задаётся набор strike цен (например, для ETH: $2000, $2200, $2400, $2600). LP-провайдеры вносят ETH в vault — их средства станут collateral для опционных контрактов.
Покупатель опциона платит premium и получает право на payoff при экспирации:
- Call option: payoff = max(0, price_at_expiry - strike)
- Put option: payoff = max(0, strike - price_at_expiry)
Расчёт premium — ключевой инженерный вызов. Dopex использует Black-Scholes с on-chain имплементацией. Проблема: Black-Scholes требует ln() и e^x — функции, которых нет в EVM нативно. Реализация через Taylor series или таблицы приближений с фиксированной точкой.
Black-Scholes on-chain: где теряется точность
Классическая формула Black-Scholes для call option:
C = S·N(d1) - K·e^(-rT)·N(d2)
d1 = (ln(S/K) + (r + σ²/2)·T) / (σ·√T)
d2 = d1 - σ·√T
где S — spot price, K — strike, r — risk-free rate, σ — implied volatility, T — time to expiry.
На EVM работаем с fixed-point арифметикой (WAD, 1e18). Функция ln(x) реализуется через PRBMath библиотеку или ABDKMathQuad. Точность критична: ошибка 0.1% в расчёте premium на объёме 1M$ = $1000 расхождение за транзакцию. Накапливается в пользу атакующего, который знает о расхождении.
Реальный кейс из аудита: протокол использовал приближение ln(x) ≈ x - 1 для значений близких к 1.0 — это давало ошибку до 2% при S/K в диапазоне 0.9-1.1 (around-the-money опционы). Именно там находится наибольший объём торгов. Убыток LP составил ~$80K за первый месяц до обнаружения.
Implied Volatility: oracle или on-chain расчёт
Implied volatility (IV) — критичный параметр, от которого линейно зависит premium. Варианты:
Chainlink IV feed — есть для ETH, BTC. Надёжно, но с latency до 1 часа. При резком движении рынка IV может быть занижена — LP продают опционы слишком дёшево.
DVOL-стиль (Deribit Volatility Index) — off-chain расчёт через TWAP implied volatility из orderbook. Требует собственного oracle инфраструктуры или интеграции с Chainlink Functions.
On-chain historical volatility — расчёт по TWAP ценам за последние N периодов. Не отражает forward-looking риск, но не зависит от внешних оракулов. Минус: underpricing опционов накануне событий (merge, ETF approval).
Мы строим гибридную систему: Chainlink IV feed как первичный источник, on-chain historical volatility как fallback при staleness > 2 часов.
Архитектура протокола
Контрактная структура
DopexStyleProtocol/
├── core/
│ ├── OptionMarket.sol # Создание/покупка/экспирация опционов
│ ├── SSOV.sol # Vault ликвидности LP
│ ├── OptionPricing.sol # Black-Scholes on-chain
│ └── EpochManager.sol # Управление эпохами
├── oracles/
│ ├── VolatilityOracle.sol # IV агрегатор
│ └── PriceOracle.sol # Chainlink wrapper
├── rewards/
│ ├── DPX.sol # Governance/reward token
│ └── StakingRewards.sol # Emissions для LP
└── periphery/
├── Router.sol # Пользовательский интерфейс
└── OptionToken.sol # ERC-1155 опционные токены
ERC-1155 для опционов — правильный выбор. Каждая комбинация (strike, expiry, type) = отдельный token ID. Пользователь может держать опционы с разными страйками в одном кошельке, transfer работает как для обычных токенов — вторичный рынок создаётся автоматически.
LP vault mechanics: риски и защиты
LP вносят ETH, коллективно продают опционы. При массовой экспирации in-the-money (рынок пошёл против LP) — vault выплачивает большой payoff. Это intrinsic риск, который LP принимают.
Управляемые риски, которые мы закрываем контрактно:
Max capacity per strike — нельзя продать опционов на один страйк больше N% от общего vault. Иначе концентрированная экспирация обнуляет vault.
Withdrawal lock — LP не могут вывести средства в середине эпохи. Иначе при движении цены к страйку LP массово выходят, оставляя протокол без collateral для выплат.
Delta hedging pool — опционально, для протоколов с серьёзными институциональными LP. Часть средств vault автоматически хеджируется через perpetual contracts (GMX, Gains Network).
AtlasDEX интеграция для вторичного рынка
Опционные токены ERC-1155 нужно где-то торговать. Варианты:
- Интеграция с OpenSea/Blur (они поддерживают ERC-1155)
- Собственный AMM для опционов (сложно, требует кастомной кривой)
- Интеграция с Lyra Protocol как secondary market layer
Для MVP рекомендуем P2P-торговлю через Seaport (OpenSea протокол) — это бесплатно и не требует дополнительной ликвидности.
Безопасность: специфичные уязвимости опционных протоколов
Oracle manipulation при экспирации. Moment of truth для опциона — цена в момент экспирации. Если используется spot price оракула в одном блоке — flash loan атака манипулирует ценой, создаёт искусственную прибыль по опционам. Защита: TWAP за последние 30 минут как settlement price.
Epoch sandwich attack. Атакующий покупает большой объём опционов в конце эпохи (зная приближающееся движение рынка), получает payoff, в начале следующей эпохи LP ещё не восполнили потери — vault недокапитализирован. Защита: cooldown между эпохами с обязательным reconciliation period.
Grief через dust positions. Создание тысяч мелких опционных позиций (gas griefing) для функции settle при экспирации. Защита: minimum premium > dust threshold, fee на создание позиции.
Стек разработки
Foundry как основной инструмент — fuzz-тесты на Black-Scholes расчёты критичны. Тестируем с vm.fuzz все граничные значения: S/K от 0.1 до 10, T от 1 часа до 1 года, IV от 10% до 500%. PRBMath v4 для fixed-point арифметики. Chainlink price feeds на mainnet fork для тестирования oracle logic.
| Компонент | Технология | Сложность |
|---|---|---|
| Black-Scholes | PRBMath + Solidity | Высокая |
| IV Oracle | Chainlink Functions | Средняя |
| LP Vault | ERC-4626 base | Средняя |
| Option Tokens | ERC-1155 | Низкая |
| Rewards | Fork of Synthetix Staking | Средняя |
Процесс и сроки
Проектирование (1-2 недели). Архитектура контрактов, моделирование экономики в Python (сценарии: normal market, crash -50%, pump +100%), параметры vault (max capacity, fees, epoch length).
Разработка core (3-5 недель). OptionMarket, SSOV vault, Black-Scholes on-chain с тестами точности, EpochManager, Oracle интеграция. Foundry fuzz + invariant тесты.
Разработка periphery (2-3 недели). Router, reward system, frontend (wagmi + viem), The Graph субграф для исторических данных.
Аудит (2-4 недели). Рекомендуем внешний аудит для протоколов с TVL выше $500K. Внутренний аудит — обязательно.
Деплой и мониторинг. Поэтапный запуск: ограниченный vault capacity на старте, постепенное увеличение после подтверждения стабильности.
Базовый SSOV для одного актива — 6-8 недель. Полноценный мультиактивный протокол с governance и вторичным рынком — 10-16 недель. Стоимость рассчитывается после детального анализа требований и желаемого набора активов.







