Интеграция с Arrakis Finance (управление ликвидностью)
Uniswap v3 с концентрированной ликвидностью требует активного управления позициями. LP, выставивший ликвидность в диапазон $1800-$2200 для ETH/USDC, зарабатывает fee только пока цена внутри диапазона. Когда ETH уходит на $2500 — позиция конвертируется целиком в USDC, fee не начисляется. Ребалансировать вручную на mainnet при каждом движении — дорого и нереалистично.
Arrakis Finance (ранее G-UNI) решает это: vault-контракт держит позицию Uniswap v3 и ребалансирует автоматически по стратегии. LP депонирует токены в Arrakis vault, получает ERC-20 представление позиции, vault управляет тиками. Интеграция Arrakis в собственный DeFi-продукт — способ предложить пассивное LP без операционных затрат пользователей.
Архитектура Arrakis v2
Arrakis v2 строится на трёх компонентах:
ArrakisV2 vault — ERC-20 токен, представляющий долю в позиции. Каждый vault привязан к конкретной паре токенов. Vault может держать несколько позиций Uniswap v3 одновременно (multi-range), а не одну.
Manager — адрес (или контракт), которому разрешено вызывать rebalance. Это может быть multisig, Gelato automated executor, или кастомный стратегический контракт. Менеджер определяет, когда и как ребалансировать.
ArrakisV2Resolver — вспомогательный контракт для расчёта: сколько токенов нужно депонировать для получения заданного количества shares, какой диапазон оптимален для текущей волатильности.
Ключевые методы для интеграции
mint(uint256 mintAmount, address receiver) — депозит ликвидности. Перед вызовом нужно approve оба токена пары на адрес vault. Количество токенов для заданного mintAmount рассчитывается через getMintAmounts в Resolver.
burn(uint256 burnAmount, address receiver) — вывод ликвидности. Vault сжигает shares, возвращает пропорциональную долю обоих токенов.
rebalance(...) — доступно только manager'у. Принимает новые диапазоны и веса распределения ликвидности между ними. Типичная стратегия: широкий диапазон (базовая позиция, 80% ликвидности) + узкий диапазон вокруг текущей цены (активная позиция, 20%).
Типичная ошибка: approve одного токена
getMintAmounts(uint256 amount0Max, uint256 amount1Max) возвращает (amount0, amount1, mintAmount) — сколько конкретно каждого токена будет использовано. Интеграторы иногда делают approve только одного токена или approve с неверной суммой, что приводит к revert в mint. Нужно approve обоих токенов на amount0 и amount1 соответственно, не amount0Max.
Второй нюанс: vault может содержать «idle» токены (не размещённые в позиции Uniswap). Расчёт getMintAmounts это учитывает — пропорции могут быть нелинейными.
Сценарии использования в продукте
Протокол с treasury liquidity. DAO или протокол размещает treasury токены в Arrakis vault вместо прямого Uniswap v3. Автоматическая ребалансировка сохраняет ликвидность в рабочем диапазоне без ручного управления.
Пользовательское LP через упрощённый интерфейс. Ваш frontend показывает одну кнопку «Добавить ликвидность» — под капотом депозит в Arrakis vault. Пользователь не выбирает тики, не думает о ребалансировке.
Пары токенов протокола. Если у вас есть свой токен, Arrakis vault для пары Token/USDC обеспечит стабильную ликвидность даже при волатильности.
Интеграция через SDK
Arrakis предоставляет TypeScript SDK для расчётов и формирования транзакций. Для прямой интеграции достаточно ABI vault и Resolver. Пример flow на viem:
// 1. Получаем нужные суммы токенов
const { amount0, amount1, mintAmount } = await resolver.read.getMintAmounts([
vaultAddress, amount0Max, amount1Max
])
// 2. Approve обоих токенов
await token0.write.approve([vaultAddress, amount0])
await token1.write.approve([vaultAddress, amount1])
// 3. Mint shares
await vault.write.mint([mintAmount, userAddress])
Процесс работы
Анализ vault'а (1 день). Изучаем конкретный Arrakis vault: стратегия менеджера, историческая ребалансировка, текущие диапазоны, APR из fee.
Интеграция контрактов (1-2 дня). Если нужна on-chain интеграция (например, ваш контракт депонирует в Arrakis) — пишем адаптер.
Frontend и UX (1-2 дня). Форма депозита/вывода, отображение текущей позиции, accumulated fees.
Ориентиры по срокам
Базовая интеграция существующего Arrakis vault в frontend — 2-4 дня. Разработка кастомного vault с собственной стратегией ребалансировки — 1-2 недели.







