Інтеграція з Set Protocol (індекси)
Set Protocol — інфраструктура для токенізованих кошиків активів. В основі: SetToken — ERC-20, який представляє пропорційну долю в наборі активів. Власник 1 SetToken володіє, наприклад, 0.1 WETH + 0.05 WBTC + 50 USDC одночасно. Протокол управляє ребалансуванням, видачею та выкупом через модульну архітектуру. Інтеграція потрібна, коли проект хоче запропонувати користувачам готові портфельні стратегії: індекс DeFi top-10, 50/50 ETH/BTC, стратегія momentum trading — без необхідності будувати цей механізм з нуля.
Ключові контракти Set Protocol v2
SetToken та його компоненти
SetToken зберігає список компонентів (components) з їх позиціями (units — кількість на 1 Set). При видачі через BasicIssuanceModule.issue() користувач вносить усі компоненти пропорційно, отримує SetToken. При выкупі — зворотний процес.
Важливо: позиції в SetToken можуть бути Default (прямого власності) та External (через yield-протокол, наприклад Aave aToken). Якщо в індекс входить aUSDC замість USDC — Set Protocol автоматично враховує накопичені відсотки в getPositionRealUnits(). Інтеграція повинна коректно обробляти обидва типи позицій, інакше розрахунок вартості портфеля буде неправильним.
Потік видачі та проскальзування
Видача великого обсягу через DEX-орієнтований DebtIssuanceModule створює проскальзування: компоненти закупляються через Uniswap/SushiSwap та реальна ціна відрізняється від запропонованої. Set Protocol передає maxTokenAmountIn для кожного компонента, але якщо ринок рухнувся між quote та execution — транзакція ревертується.
Наша обгортка додає динамічний допуск проскальзування: отримуємо quote, додаємо буфер 0,5-1%, встановлюємо дедлайн на 2-3 блоки. Це зменшує ймовірність revert без суттєвого гіршого виконання.
Що будується при інтеграції
Компонент управління індексом
Якщо клієнт хоче створити власний Set (не просто використовувати існуючий):
// Створення SetToken через SetTokenCreator
ISetTokenCreator(creator).create(
components, // адреси токенів
units, // позиції (18 decimals)
modules, // [BasicIssuanceModule, StreamingFeeModule, ...]
manager, // адреса менеджера (multisig або контракт управління)
name,
symbol
);
StreamingFeeModule — важливий елемент для монетизації: комісія управління списується раз на рік через розбавлення пропозиції. Налаштування: feeRecipient, maxStreamingFeePercentage (максимум), streamingFeePercentage (поточна). Без явного обмеження max fee менеджер може поднять комісію до 100% — rug pull через комісію.
Механізм ребалансування
Ручне ребалансування менеджером через TradeModule.trade() — найпростіший варіант. Менеджер викликає trade, модуль продає лишний актив через вказаний DEX, купує потрібний. Це централізований підхід: єдиний приватний ключ менеджера = єдина точка відмови.
Для децентралізованого ребалансування інтегруємо в стилі Index Coop: менеджер — це смарт-контракт з функцією rebalance(), яка викликається тільки при відхиленні ваг від target на X% (наприклад, 5%). Умова тригеру перевіряється через канали ціни Chainlink.
Інтеграція frontend
SDK Set Protocol (setprotocol/setjs) або прямі виклики через viem:
-
getSetDetails()— поточні компоненти та ваги -
getIssuanceComponents()— скільки кожного токена потрібно для N Set -
getRedemptionComponents()— що отримаєш при выкупі N Set
Hook useSetTokenData агрегує дані з оновленням кожні 30 секунд через useInterval.
Підтримувані ланцюги та обмеження
| Ланцюг | Set Protocol v2 | Ліквідність компонентів | Статус |
|---|---|---|---|
| Ethereum | Так | Висока | Mainnet |
| Polygon | Так | Середня | Mainnet |
| Optimism | Обмежено | Середня | Експериментально |
| Arbitrum | Немає native | — | Не підтримується |
Процес розробки
Аналітика (1-2 дні). Визначаємо склад індексу, механізм ребалансування, модулі (Issuance, Fee, Trade, Governance). Перевіряємо ліквідність компонентів на цільовому ланцюгу.
Розробка (3-4 дні). Розгортання SetToken через CreatorFactory, налаштування модулів, обгортка для issuance/redemption з захистом від проскальзування, інтеграція frontend. Тести на fork Ethereum mainnet.
Розгортання (1 день). Через Gnosis Safe multisig, верифікація компонентів та модулів.
Базова інтеграція з існуючим Set — 3 дні. Створення власного індексу з логікою ребалансування — 5-7 днів. Вартість розраховується після згоди на склад індексу та вимоги до управління.







