Інтеграція з Index Coop
Index Coop — це протокол децентралізованих крипто-індексів: DPI (DeFi Pulse Index), MVI (Metaverse Index), ETH2X-FLI (2x leveraged ETH). Під капотом — Set Protocol V2, який управляє кошиками активів з автоматичним ребалансуванням. Інтеграція з Index Coop потрібна в двох сценаріях: використовувати готові токени індексу як компонент DeFi-продукту, або створити власний індекс через їх інфраструктуру.
Що інтегруємо та як
Використання токенів Index як забезпечення або LP актив
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 — потрібна кастомна реалізація оракульного адаптера.
Mint та редемпшн через Set Protocol
Прямий mint 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 для входу через один токен
Більшості користувачів незручно збирати усі компоненти кошика перед мінтом. 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
├── IndexPriceOracle.sol — складний оракул для ціни SetToken
└── RebalanceObserver.sol — моніторинг ребалансувань
RebalanceObserver потрібен, якщо ваш протокол тримає позиції в токенах Index — склад кошика змінюється при ребалансуванні (щоквартально для DPI). Після ребалансування ваги та компоненти змінюються, складний оракул потрібно перекалібрувати.
Типові проблеми інтеграції
Проскальзування при масовому редемпшні: якщо багато користувачів одночасно виходять з вашого продукту через редемпшн DPI, це створює тиск на продаж усіх компонентів. При інтеграції в lending враховуйте ліквідність компонентів при розрахунку LTV.
Ребалансування як flash point: у день ребалансування DPI обсяг торгів зростає, ціна може кратково відхилятися. Якщо ваш оракул на основі spot ціни — це ризик. Краще використовувати TWAP 30-60 хвилин для IndexPriceOracle.
Stack та інструменти
Інтерфейси Set Protocol з npm пакету @setprotocol/set-protocol-v2. Тести — Foundry fork на Ethereum mainnet. The Graph subgraph Index Coop для історичних даних ребалансувань.
Frontend: wagmi hooks для ERC-20 approve flow (компоненти перед issue), інтеграція Index Coop API для отримання актуального componentSwapData.
Оцінки за часом
Інтеграція готових токенів Index в існуючий протокол (оракул + підтримка забезпечення) — 2-3 дні. Розробка нового індексу через Set Protocol з кастомним модулем ребалансування — 1-2 тижні.







