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







