Интеграция с Index Coop
Index Coop — это протокол децентрализованных крипто-индексов: DPI (DeFi Pulse Index), MVI (Metaverse Index), ETH2X-FLI (2x leveraged ETH). Под капотом — Set Protocol V2, который управляет корзинами токенов с автоматической ребалансировкой. Интеграция с Index Coop нужна в двух сценариях: использовать готовые индексные токены как компонент DeFi-продукта, или создать собственный индекс через их инфраструктуру.
Что интегрируем и как
Использование Index токенов как collateral или LP asset
DPI и другие Index токены — это ERC-20, под которым Set Protocol держит корзину реальных активов. Цена DPI = сумма цен составляющих токенов пропорционально весам. Для интеграции в lending-протокол это означает: нужен составной оракул, который считает цену DPI через цены компонентов.
Index Coop предоставляет ISetToken интерфейс для получения текущих компонентов и их позиций:
interface ISetToken is IERC20 {
function getComponents() external view returns (address[] memory);
function getDefaultPositionRealUnit(address component) external view returns (int256);
}
Цена Set Token = Σ(component_price * position_real_unit). Это нужно считать on-chain для использования в lending или деривативах. Chainlink не имеет прямых фидов для DPI — нужна кастомная реализация oracle adapter.
Минт и редемпшн через Set Protocol
Прямой минт DPI происходит через BasicIssuanceModule:
IBasicIssuanceModule(issuanceModule).issue(
ISetToken(DPI_ADDRESS),
quantity, // количество DPI токенов
to // получатель
);
Перед вызовом нужно approve всех компонентов корзины на issuanceModule. Получить точное количество каждого компонента для N токенов:
(address[] memory components, uint256[] memory amounts) =
IBasicIssuanceModule(issuanceModule).getRequiredComponentUnitsForIssue(
ISetToken(DPI_ADDRESS),
quantity
);
Редемпшн — обратная операция через redeem(). Пользователь сжигает DPI, получает все компоненты пропорционально.
ExchangeIssuance для single-token入场
Большинству пользователей неудобно собирать все компоненты корзины перед минтом. ExchangeIssuance позволяет войти через один токен (ETH, USDC):
IExchangeIssuanceV2(exchangeIssuance).issueExactSetFromToken(
ISetToken(DPI_ADDRESS),
IERC20(USDC),
setAmount,
maxInputAmount,
componentSwapData // маршруты свопов для каждого компонента
);
Под капотом контракт делает свопы через DEX агрегатор (1inch или Uniswap) для каждого компонента. componentSwapData — это encoded calldata для каждого свопа. Генерируется через Index Coop API или собственный routing engine.
Архитектура интеграции
Типовая интеграция для DeFi-продукта:
YourProtocol.sol
├── IndexCoopAdapter.sol — обёртка над Set Protocol interfaces
├── IndexPriceOracle.sol — составной оракул цены SetToken
└── RebalanceObserver.sol — мониторинг ребалансировок
RebalanceObserver нужен, если ваш протокол хранит позиции в Index токенах — состав корзины меняется при ребалансировке (обычно ежеквартально для DPI). После ребалансировки веса и компоненты меняются, составной оракул нужно перекалибровать.
Типичные проблемы интеграции
Слипидж при массовом редемпшн: если много пользователей одновременно выходят из вашего продукта через редемпшн DPI, это создаёт продажное давление на все компоненты. При интеграции в lending учитывайте ликвидность компонентов при расчёте LTV.
Ребалансировки как flash point: в день ребалансировки DPI объём торгов растёт, цена может кратковременно отклоняться. Если у вас оракул на основе spot price — это риск. Лучше использовать TWAP 30-60 минут для IndexPriceOracle.
Стек и инструменты
Интерфейсы Set Protocol — из @setprotocol/set-protocol-v2 npm пакета. Тесты — Foundry fork на Ethereum mainnet. The Graph subgraph Index Coop для исторических данных ребалансировок.
Фронтенд: wagmi hooks для работы с ERC-20 approve flow (компоненты перед issue), интеграция Index Coop API для получения актуального componentSwapData.
Ориентиры по срокам
Интеграция готовых Index токенов в существующий протокол (оракул + collateral поддержка) — 2-3 дня. Разработка нового индекса через Set Protocol с кастомным rebalance модулем — 1-2 недели.







