Разработка structured products на блокчейне
Structured products — финансовые инструменты с заранее определённым профилем риск/доходность. В TradFi это нота с защитой капитала, привязанная к индексу, или autocallable с барьером. На блокчейне та же механика реализуется через смарт-контракты, что добавляет programmable payouts, прозрачность и composability — но и принципиально новые технические риски.
Протокол Ribbon Finance (vault-style структурированные продукты на основе опционов) стал образцом того, как это делается правильно: вся механика on-chain, settlement через Opyn oTokens, риски явно описаны в коде. При этом даже Ribbon сталкивался с проблемами ценообразования и liquidity при экстремальной волатильности.
Механика структурированных продуктов на блокчейне
Principal protection через on-chain bond mechanics
Классический structured product: 90% капитала идёт в "безрисковый" инструмент (защита принципала), 10% — в опцион на upside. На блокчейне безрискового актива нет, но есть приближения:
- Lending в Aave/Compound по ставке 4-8% APY в USDC
- Liquidity provision в Curve стейблкоин-пулах (1-3% APY)
- Tokenized treasury bills (USDY от Ondo, BUIDL от BlackRock) на поддерживаемых чейнах
Контракт вычисляет split при депозите: сколько нужно вложить в yield-инструмент сейчас, чтобы к maturity иметь 100% от initial deposit. Остаток идёт в опционную стратегию.
Математика: для 12-месячного продукта при Aave yield 6% principal portion = deposit / 1.06. При депозите $10,000 — $9,434 в Aave, $566 на опционную составляющую.
Проблема: yield rate в Aave не фиксирован. За 12 месяцев он может упасть до 1%, и контракт не соберёт достаточно для защиты принципала. Решение — либо фиксировать yield через interest rate swap (есть on-chain через Pendle), либо консервативная оценка с буфером.
Payoff структуры и их реализация в Solidity
Capital protected note — простейший случай:
payoff = max(principal, principal + principal * max(0, assetReturn - strike))
Barrier product — более сложно:
если цена НЕ касается barrier за всё время → payoff = principal + coupon
если цена касается barrier → payoff = principal * (finalPrice / initialPrice)
On-chain continuous barrier monitoring невозможен без oracle с высокой частотой обновлений. Chainlink обновляет цену каждые 0.5% отклонения или раз в час — это не continuous. Решение: discrete barriers (проверка раз в день/неделю по снапшоту оракула) или European knock-in/knock-out (проверка только в expiry).
Autocallable — самый сложный:
- Каждый период (месяц/квартал) проверяется условие autocall
- Если выполнено — продукт погашается досрочно с coupon
- Если нет — продолжается
Для on-chain реализации нужен keeper (Chainlink Automation или Gelato) для автоматической проверки условий в каждый observation date. Missed observation = некорректное поведение продукта.
Settlement и интеграция с деривативами
Для опционной составляющей: Opyn oToken стандарт (ERC-20 токен, представляющий право на выплату при istrike), Lyra positions, или собственные контракты.
Основной риск — counterparty риск при settlement. Если опционный протокол взламывают в момент, когда ваш structured product держит в нём значительную позицию — принципал под угрозой. Диверсификация между несколькими опционными протоколами или использование только battle-tested решений снижает этот риск.
Токенизация и lifecycle управление
ERC-1155 для структурных нот
Каждый выпуск (серия) продукта — отдельный token ID в ERC-1155. Это позволяет:
- Торговать на secondary market
- Использовать как collateral в других DeFi-протоколах
- Отслеживать исторические выпуски в одном контракте
tokenId кодирует параметры выпуска: series | strike | maturity. При mint фиксируется snapshot цены underlying через оракул — это initial price для расчёта return.
Vault architecture
По образцу Ribbon Finance — каждый продукт это vault:
StructuredProductFactory
└── ProductVault (per series)
├── DepositModule
├── StrategyModule (yield + options)
├── SettlementModule
└── WithdrawModule
Funds lock period — критический параметр. На время действия продукта средства заблокированы в контракте. Emergency exit механизм через multisig с timelock — для крайних случаев (взлом underlying protocol).
Ценообразование и NAV
NAV (Net Asset Value) для структурного продукта складывается из:
- Текущая стоимость yield позиции (Aave aToken по current rate)
- Текущая стоимость опционной позиции (Black-Scholes mark-to-market)
- Минус accumulated fees
On-chain NAV расчёт с Black-Scholes требует fixed-point математики и актуальной волатильности из оракула. Альтернатива — off-chain NAV расчёт с on-chain верификацией через Merkle proof (как это делает Backed Finance для токенизированных ценных бумаг).
Regulatory considerations
Structured products в большинстве юрисдикций — регулируемые финансовые инструменты. On-chain реализация не меняет правового статуса продукта. Проект должен иметь юридическое мнение до запуска публичного продукта. Технически это не наша задача — но важно обозначить клиенту на старте.
Процесс разработки
Финансовое проектирование (1 неделя). Математика payoff, stress-тестирование в Python (Monte Carlo симуляция для разных сценариев). Убеждаемся, что principal protection работает при realistically bad scenarios.
Архитектура контрактов (3-5 дней). Vault структура, интеграции с yield и опционными протоколами, keeper механика.
Разработка (4-6 недель). Foundry + тесты на все payoff сценарии. Fork-тесты с реальными интеграциями Aave, Chainlink.
Аудит (4-8 недель). Финансовые контракты требуют тщательного аудита. Особое внимание — settlement математика и oracle dependencies.
Ориентиры по срокам
Простой capital protected vault (yield + covered call) — 6-8 недель разработки. Многосерийный продукт с autocallable механикой и secondary market торговлей — 2-3 месяца. Интеграции с несколькими yield и деривативными протоколами увеличивают сроки и объём аудита.







