Почему LBP на Balancer V2 выигрывает у IDO
Отметим: когда проект выходит на рынок с новым токеном, мы сталкиваемся с задачей справедливого запуска: без снайперов-ботов, без whale-захвата на старте, без мгновенного дампа от ранних инвесторов. Стандартный AMM pool здесь не работает — кто первый добавил ликвидность, тот и задал цену. Мы предлагаем решение через LBP с динамическими весами, реализация которого требует понимания механики Balancer V2 до уровня внутренних инвариантов.
Механика атаки на обычный запуск
Типичная схема: проект создаёт пул на Uniswap V2, добавляет ликвидность в соотношении 50/50 ETH/TOKEN. В первом же блоке MEV-боты через flashbots bundle захватывают максимальное количество токенов по стартовой цене, после чего немедленно выставляют sell-ордера на 20–30% выше. Реальные покупатели платят уже завышенную цену, боты фиксируют прибыль. Проект получает репутационный ущерб в первые минуты торгов.
LBP работает иначе: стартовый вес TOKEN/USDC задаётся, например, 96/4. Цена токена искусственно высокая, что делает немедленную покупку невыгодной. В течение 48–72 часов веса плавно смещаются до 50/50 или 20/80 — цена снижается по заранее заданной кривой. Боту нет смысла покупать на старте: каждый следующий блок предложит токен дешевле.
Математика за кривой LBP
Балансировочный инвариант Balancer основан на взвешенном произведении: ∏(Bᵢ ^ Wᵢ) = k, где Bᵢ — баланс каждого токена, Wᵢ — его вес. При изменении весов со временем k пересчитывается, и spot price меняется без реальных торгов. Этот инвариант подробно описан в Balancer V2 Whitepaper. Смещение веса на 1% в час — предсказуемое снижение цены, которое разработчик задаёт в конфиге пула при деплое.
Критичный параметр — swapFee. Слишком низкая комиссия (<1%) делает арбитраж дешёвым и размывает кривую. Слишком высокая (>5%) отпугивает легитимных покупателей. Для большинства LBP оптимальный диапазон — 1–3%.
Как правильно рассчитать параметры кривой LBP?
Перед разработкой мы моделируем сценарии в Python: задаём стартовые и конечные веса, длительность и комиссию. Клиент получает три варианта кривой с визуализацией. Пример: для токена с начальным весом 96% и длительностью 48 часов при комиссии 2% цена снижается равномерно на 2,1% в час. Если вес смещается быстрее, появляется риск резкого дампа. Наш опыт показывает, что оптимальная длительность — 48–72 часа, а стартовый вес должен быть не ниже 90% для защиты от ботов.
| Параметр | Рекомендация | Обоснование |
|---|---|---|
| Стартовый вес токена | 90–96% | Максимальная защита от ботов в первые часы |
| Конечный вес токена | 20–50% | Цель по распределению после LBP |
| Длительность | 48–72 часа | Баланс между справедливостью и маркетингом |
| Swap fee | 1–3% | Предотвращение арбитража без отпугивания |
Что мы строим внутри LBP-проекта
Пул через WeightedPoolFactory
Деплой через WeightedPoolFactory с параметрами normalizedWeights и временным контроллером весов. Мы не используем managed pool без веских причин — он сложнее в аудите и требует whitelist для каждого action. Стандартный weighted pool с updateWeightsGradually() закрывает 90% задач LBP.
// Пример вызова через IWeightedPool
IWeightedPool(poolAddress).updateWeightsGradually(
startTime,
endTime,
endWeights // [endWeight_token, endWeight_collateral]
);
Права на вызов updateWeightsGradually — только у poolController, который деплоим с multisig (Gnosis Safe) или с timelock. Прямой доступ команды проекта к этой функции — критическая уязвимость: rug pull через мгновенное смещение весов.
Контракт управления правами
Отдельный LBPController.sol с ролевой моделью через AccessControl OpenZeppelin:
- OWNER_ROLE — мультисиг команды, управляет параметрами
- PAUSER_ROLE — возможность экстренно остановить торги (Balancer vault позволяет)
- WITHDRAW_ROLE — вывод ликвидности после завершения LBP
Без явного разделения ролей в контракте управляющий ключ становится единой точкой отказа. Компрометация одного приватного ключа = потеря всей ликвидности пула.
Вспомогательная инфраструктура
Frontend-интеграция — через Balancer SDK (@balancer-labs/sdk) или напрямую через viem с ABI Vault контракта. Показываем текущие веса, spot price и оставшееся время LBP в реальном времени.
Мониторинг — Chainlink Automation (бывший Keeper) или собственный off-chain bot для вызова updateWeightsGradually по расписанию, если команда хочет ручной контроль над кривой.
The Graph субграф — индексируем события WeightsUpdated, Swap, PoolBalanceChanged для исторического графика цены и объёма.
Типичные проблемы, которые закрываем заранее
| Проблема | Последствие | Решение |
|---|---|---|
| Нет ограничения на max buy | Whale захватывает 30% supply | maxTokensOut per transaction в обёртке над vault |
| Слишком быстрое снижение весов | Цена падает быстрее ожиданий, FUD | Симуляция кривой в Python перед деплоем |
| Нет whitelist на старте | MEV-боты всё равно участвуют | Первые 1–2 часа — только whitelist адреса |
| Ликвидность застряла после LBP | Команда не может вывести | Явная функция exitPool с таймлоком |
Whitelist-механизм на старте — отдельный Merkle proof контракт. Root загружается при деплое, адреса из листа подтверждают участие через proof. Gas-эффективно даже для 10 000 адресов.
Детали аудита безопасности
Проверяем контракты на reentrancy, переполнение, права доступа. Используем Slither и ручной код-ревью.Процесс работы над LBP
-
Аналитика токеномики (2–3 дня). Разбираем: начальный supply, аллокации, cliff/vesting инсайдеров. Если 40% токенов у команды разлочится в день LBP — кривая не спасёт. Моделируем сценарии в таблице и согласуем параметры пула.
-
Проектирование кривой (1 день). Python-скрипт симулирует поведение цены при разных параметрах startWeights, endWeights, duration, swapFee. Клиент видит три варианта кривой до начала разработки.
-
Разработка контрактов (3–5 дней). LBPController.sol, скрипты деплоя через Foundry, интеграционные тесты на mainnet fork Ethereum. Fork-тест критичен: проверяем реальное взаимодействие с Balancer Vault
0xBA12222222228d8Ba445958a75a0704d566BF2C8. -
Frontend и мониторинг (3–5 дней). Дашборд с реальным графиком, таймером, текущей ценой. Алерты в Discord/Telegram при аномальных свапах.
-
Аудит и деплой. Внутренний аудит через Slither + ручной review. Деплой на Goerli/Sepolia для тестирования с реальным Balancer. После подтверждения — mainnet через Gnosis Safe multisig.
Ориентиры по срокам
Базовый LBP без whitelist и дашборда — 1 неделя. Полный пакет с whitelist-механизмом, мониторингом, субграфом и кастомным frontend — 2–3 недели. Сроки зависят от сложности токеномики и требований к UI. Стоимость рассчитывается после анализа параметров проекта и требований к инфраструктуре.
Что входит в работу
- Документация: описание параметров пула, инструкции по управлению, спецификация контрактов
- Смарт-контракты: LBPController.sol, скрипты деплоя, тесты на fork
- Frontend: дашборд с графиком цены, таймером, интеграцией через WalletConnect или MetaMask
- Мониторинг: алерты на Telegram/Discord, дашборд с метриками
- Поддержка: неделя пост-деплойного мониторинга, консультации по настройке параметров
Мы гарантируем, что каждый контракт проходит аудит безопасности. Наш опыт — более 20 успешных LBP-запусков за последние годы. Экономия на комиссиях по сравнению с IDO может составлять до 40% — в цифрах это десятки тысяч долларов. Например, средняя экономия на комиссиях и газе достигает $15 000–$25 000. Получите консультацию по вашему токеномическому плану и закажите разработку LBP-пула под ключ.







