Мы создаём токенизированные индексы — ERC-20 токены, представляющие корзину on-chain активов. Пользователь минтит индекс-токен, внося базовые активы, и получает диверсифицированную экспозицию без необходимости держать каждый токен отдельно. Наши решения используют проверенные механики Index Coop's DPI и Bankless BED Index, но с дополнительной защитой от манипуляций и оптимизацией газа. Реализовать подобную систему с правильной математикой ребалансинга и защитой — задача, с которой мы справляемся под ключ.
Как устроен токенизированный индекс?
Токенизированный индекс — это смарт-контракт, который эмитирует shares в обмен на корзину базовых активов. Каждый share представляет пропорциональную долю пула. Архитектура включает четыре модуля: сам токен (ERC-20), реестр компонентов с целевыми весами, оракул для расчёта NAV и модуль ребалансинга.
Как избежать манипуляций при расчете NAV?
Net Asset Value индекса — это сумма price_i * quantity_i для каждого компонента. На практике это нетривиально: цены могут быть искажены через low-liquidity атаку. Мы применяем гибридный подход: Chainlink для топ-токенов (ETH, BTC, LINK, UNI), Uniswap V3 TWAP с периодом ≥30 минут для остальных, с санитарной проверкой на deviation. Если TWAP отклоняется от Chainlink более чем на 5% — транзакция реверсируется, пока не стабилизируется. Это убирает flash loan манипуляцию через пулы с низкой ликвидностью. Рекомендуемый период TWAP — 30 минут.
Почему ребалансинг через арбитражеров эффективнее?
При ребалансинге (раз в месяц или по trigger — выход компонента за пределы целевого веса ±5%) нужно продать переаллоцированные токены и купить недоаллоцированные. Два варианта:
-
Push ребалансинг — контракт сам инициирует свапы через Uniswap/1inch при вызове
rebalance(). Проблема: MEV. Все видят крупный ребалансинг в мемпуле, боты фронтранят каждый свап. Для индекса с $10M TVL это реальные потери. - Pull ребалансинг (через arbitrage incentive) — контракт устанавливает target weights и предлагает арбитражерам mint/redeem по NAV ± небольшая премия. Арбитражеры сами ребалансируют портфель через внешние DEX, зарабатывая на спреде. Механика схожа с ETF creation/redemption. Pull ребалансинг экономит до 80% газа по сравнению с push.
| Параметр | Push ребалансинг | Pull ребалансинг |
|---|---|---|
| Инициатор | Контракт | Арбитражеры |
| Газ | Высокий (~500k gas) | Низкий (~100k gas) |
| MEV уязвимость | Высокая | Низкая |
| Гибкость | Фиксированное расписание | Рыночное |
Dilution при минтинге
Если mint() принимает только один токен (например, USDC) и конвертирует его в компоненты внутри, это создаёт risk: пока транзакция в мемпуле, цены компонентов меняются. Пользователь получит меньше индекс-токенов, чем ожидал.
Решение: proportional mint — пользователь вносит все компоненты в правильных пропорциях. Нет внутренних свапов, нет slippage risk. Минус — UX сложнее. Компромисс: accept single-token deposit через Uniswap router как опциональный путь с явным предупреждением о slippage.
Также важна оптимизация газа в mint/redeem: обработка каждого компонента отдельно дорога для корзины из 10–20 токенов. Используем batch transfer и аккумулируем data через storage arrays.
Архитектура токенизированного индекса
Контракты
-
IndexToken(ERC-20) — сам индекс-токен. Реализуетmint(uint256[] amounts)иredeem(uint256 shares). При mint проверяет пропорции входных активов, чеканит shares пропорционально NAV. При redeem сжигает shares, отправляет пропорциональную долю каждого компонента. -
ComponentRegistry— список компонентов с целевыми весами. Owner (Gnosis Safe + timelock) может добавлять/удалять компоненты через governance proposal. При удалении компонента контракт переходит в режим redeem-only для этого актива. -
NAVOracle— агрегирует цены через Chainlink + Uniswap TWAP, возвращает актуальный NAV. Критическая зависимость — мониторим staleness каждого feed (Chainlink heartbeat 1-24 часа в зависимости от токена). -
RebalancingModule— логика ребалансинга. Считает deviation от target weights, публикуетRebalancingOpportunityсобытие для арбитражеров, принимаетrebalanceTrade(address[] sellTokens, address[] buyTokens, uint256[] amounts)от авторизованных rebalancer.
| Параметр | Типичное значение | Почему важно |
|---|---|---|
| Rebalancing threshold | ±5% от target weight | Слишком часто — газ, слишком редко — drift |
| TWAP period | 30-60 минут | Баланс между актуальностью и manipulation resistance |
| Max component count | 10-20 токенов | Газ на redeem O(n), mint O(n) |
| Mint/redeem fee | 0.1-0.3% | Покрывает operational costs |
Stacking: протокольная интеграция
Компоненты индекса могут быть не просто ERC-20, а yield-bearing токены: aWETH (Aave), stETH (Lido), cUSDC (Compound). Тогда индекс автоматически аккумулирует yield без дополнительной логики — NAV растёт за счёт accrual.
Но: при liquidation в Aave, balanceOf aWETH меняется мгновенно. NAV пересчитывается на следующий запрос. Если кто-то mintит в момент непоследовательного состояния — возможна dilution. Слушаем ReserveDataUpdated от Aave и блокируем mint/redeem в период резких изменений reserve index.
Процесс работы
- Аналитика (2-3 дня). Определяем состав корзины, стратегию ребалансинга, oracle-инфраструктуру. Анализируем ликвидность каждого компонента — если токен торгуется только на одном DEX с $500k liquidity, он не подходит для on-chain индекса.
- Проектирование (3-5 дней). Storage layout, интерфейсы модулей, governance схема для изменения состава.
- Разработка (1-2 недели). Контракты + fork-тесты с реальными oracle данными. Симуляция ребалансинга на исторических данных.
- Аудит и деплой. Акцент на NAV manipulation vectors и reentrancy в mint/redeem. Деплой с cap на TVL первые 30 дней.
Получите консультацию по архитектуре вашего индекса.
Что входит в работу
- Архитектура и дизайн контрактов
- Разработка смарт-контрактов на Solidity
- Настройка оракулов (Chainlink, Uniswap TWAP)
- Реализация mint/redeem и ребалансинга
- Аудит безопасности контрактов
- Интеграция с фронтендом (wagmi, RainbowKit)
- Документация и поддержка при деплое
Ориентиры по срокам
Базовый индекс с proportional mint/redeem и Chainlink oracle — 1-2 недели. Полная система с yield-bearing компонентами, арбитражным ребалансингом и governance — 4-6 недель.
Стоимость рассчитывается после анализа состава корзины и требований к oracle-инфраструктуре. Наш опыт — 5+ лет в DeFi, 20+ реализованных проектов, 10+ аудированных контрактов. Свяжитесь с нами для оценки вашего проекта — мы подберем архитектуру под ваши требования.







