Вводный курс DeFi для всех. Занятие №01. Пулы. Часть III. CSMM
Маркетмейкер на основе постоянного значения суммы X+Y=K - CSMM (Constant Sum Market Maker)
Это идеальная модель для торговли с нулевым проскальзыванием, но не обеспечивает бесконечной ликвидности.
Эта модель несовершенна, поскольку она предоставляет возможность арбитража, когда котируемая цена отличается от рыночной цены актива, торгуемого в другом месте. Арбитражеры могут истощить все резервы в пулах ликвидности, не оставляя больше доступной ликвидности для других трейдеров.
Эта модель непригодна для большинства случаев использования АММ.
Маркетмейкер на основе постоянного среднего значения - Constant Mean Market Maker (CMMM)
Такая формула также известная как функция ценности, используется в Balancer и позволяет создавать пулы ликвидности с более чем двумя токенами и различными соотношениями токенов, выходящими за рамки стандартного распределения 50/50.
Здесь неизменным остается средневзвешенное геометрическое значение.
Это позволяет сохранять баланс различных активов в пуле и позволяет осуществлять обмен между любыми активами пула ликвидности.
Balancer
Balancer позиционирует себя как портфельный менеджер в дополнение к своему DEX на базе AMM. Вместо того, чтобы платить комиссионные за инвестиции в фонд, держатели пула Balancer собирают комиссии с трейдеров, которые занимаются арбитражем пулов ликвидности.
Это, по сути, создаёт индексный фонд, который получает дополнительный доход ребалансировки фонда, добавляя еще один источник дохода для провайдеров ликвидности.
Создателям пула разрешается устанавливать индивидуальные комиссии в диапазоне от 0,00001% до 10%.
Существует три типа пулов ликвидности:
- Публичный пул – любой может добавить ликвидность, но параметры пула постоянно фиксированы. Это пул с наименьшим необходимым уровнем доверия к создателю.
- Частный пул – гибкие параметры. Владелец – единственный, кто может изменять параметры и добавлять ликвидность. Это делает пул кастодиальным и централизованным.
- Смарт-пул – любой может добавить ликвидность. Пул поддерживает фиксированные и динамические параметры, которые могут быть изменены на постоянной основе. Это самый гибкий пул.
Balancer версии 2 поддерживает до 16 различных активов в пуле и позволяет создавать смарт-пулы. Смарт-пулы особенно полезны для управления казначейством, где пулы могут действовать как механизм автоматического выкупа токенов. Плюс, это также позволяет предоставлять незанятые активы в протоколы кредитования, повышая доходность пулов.
Balancer также представил инновационный метод начальных предложений DEX (IDO), называемый пулами начальной загрузки ликвидности (LBP). Это недолговечные смарт-пулы с динамическими весами токенов с течением времени. Цена токена устанавливается по высокой цене и, как ожидается, будет падать на протяжении всей продажи. В этом случае "киты" и боты не склонны покупать токены с самого начала, что позволяет использовать более демократичный способ сбора средств.
Используйте пулы с дополнительными наградами (бустами, например, через veBAL) для повышенных наград.
Архитектура
Balancer состоит из трёх основных компонентов:
- Маршрутизатор: Служит в качестве шлюза пользователя к протоколу, предлагая простые интерфейсы (роутеры) для выполнения операций.
- Хранилище (Vault): Централизует операции с ликвидностью и управляет учетом, упрощая обработку остатков токенов в нескольких пулах.
- Pool: Раскрывает точную математику пула, позволяя разработчикам использовать возможности протокола, не вдаваясь в сложные детали.
Эта архитектура объединяет различные конструкции пулов. Хранилище не зависит от математики пулов и может быть использована в любой системе, удовлетворяющей нескольким требованиям. Хранилище является частью протокола, но пользователи могут создавать собственные пулы и маршрутизаторы.
Следующая диаграмма иллюстрирует использование каждого компонента во время транзакции:
- Маршрутизатор выступает в качестве основного интерфейса для доступа к протоколу, предлагая удобный способ взаимодействия с хранилищем.
- Маршрутизатор разблокирует хранилище, что позволяет ему продолжать работу, записывая все кредиты и долги, возникающие в результате таких операций, как добавление ликвидности, удаление ликвидности и свопы.
- Хранилище обрабатывает операции по указанию маршрутизатора, обычно пересылая запросы пулам. Например, в случае свопа определяется количество токенов, которые должны быть внесены или изъяты из хранилища. После расчета необходимого количества токенов эти суммы записываются в хранилище как кредит или долг.
- Хранилище возвращает результаты операции маршрутизатору.
- Маршрутизатор погашает долги и кредиты, отправляя токены в хранилище для оплаты долгов и извлекая токены из хранилища для погашения кредитов.
- Хранилище проверяет, правильно ли маршрутизатор рассчитался с накопленными долгами и кредитами. Транзакция будет успешной только в том случае, если все дебеты и кредиты были точно погашены; в противном случае она будет отменена.
Хуки могут выполнять действия во время работы пула, а также вычислять динамическую комиссию за обмен.
- Сокращение LVR (Loss versus Rebalancing - Убытки против ребалансировки);
- Динамические комиссии;
- Автоматическая блокировка (Gauge locking);
- Лимиты на продажу или покупку.
При регистрации нового пула его можно связать с хуком. Эта конфигурация неизменяема и не может быть изменена после регистрации пула. Контракт с хуком - отдельный контракт, который может использоваться несколькими пулами.
Токены Balancer Pool - токены, которые представляют собой право собственности или доли в пуле Balancer. Когда пользователи добавляют ликвидность в пул Balancer, внося токены, они получают взамен соответствующие токены Balancer Pool. Эти токены представляют собой их пропорциональную долю в пуле ликвидности.
Токены Balancer Pool являются динамическими по своей природе, то есть их стоимость может колебаться в зависимости от изменений в составе пула. Они представляют собой право собственности на активы, входящие в пул, и дают владельцам право на часть торговых сборов, генерируемых пулом, пропорционально их доле. Пользователи могут выкупить свои токены Balancer Pool Tokens (BPT), чтобы забрать свою долю базовых активов из пула.
Контракт BPT соответствует стандарту токенов ERC-20, однако он не управляет состоянием токена напрямую. Вместо этого он делегирует эти обязанности контракту Vault, который является экземпляром ERC20MultiToken. Такой выбор дизайна централизует учёт и управление токенами, облегчая атомарное обновление состояний пула.
Поскольку BPT соответствуют стандарту ERC-20, они могут легко интегрироваться в качестве токенов пула в другие пулы.
Например, BPT пула стандарта ERC-4626, состоящего из обёрнутых версий DAI, USDC и USDT, может быть использован в паре с токенами новых проектов. Такая совместимость обеспечивает поддержание глубокой и капиталоэффективной стабильной ликвидности и одновременно создает эффективные пути обмена для токена проекта.
Создатели пулов получают возможность получать часть своп-комиссии и комиссии за доходность в качестве дохода, стимулируя создание успешных и процветающих пулов.
Когда в Balancer взимаются комиссии за своп или доходность, они распределяются между: Поставщиками ликвидности, Протоколом, Создателем пула.
Типы пулов Balancer
Взвешенные пулы (Weighted Pools) - очень универсальные и настраиваемые пулы. Они идеально подходят для общих случаев и позволяют пользователям создавать пулы с различным количеством токенов и весовыми коэффициентами.
Пул 80/20: Оптимизированная версия взвешенного пула с установленными весами 80%/20%. Идеально подходит для достижения ликвидности токенов управления.
Стабильные пулы (Stable pools) оптимальны для активов, которые, как ожидается, будут постоянно торговаться с известным обменным курсом.
Усиленные Пулы (Boosted Pools) предназначены для повышения эффективности использования капитала, углубления ликвидности и увеличения доходности для поставщиков ликвидности.
Пулы повышения ликвидности (Liquidity Bootstrapping pools LBPs) - пулы, которые могут динамически изменять вес токенов. LBP создают давление на продажу и преимущества справедливого рынка. Очень успешно используются для честных запусков токенов.
Преимущества взвешенных пулов:
- Контроль экспозиции. Взвешенные пулы позволяют пользователям выбирать уровень воздействия на определенные активы, сохраняя при этом способность обеспечивать ликвидность. Чем выше вес токена в пуле, тем меньше непостоянных потерь он понесет в случае резкого роста цен.
- Непостоянные потери гораздо меньше, но в очень асимметричных пулах проскальзывание при свопах выше, поскольку одна сторона имеет гораздо меньшую ликвидность. Пулы 80/20 стали золотой серединой, сочетающей оптимистичное обеспечение ликвидности и смягчение непостоянных потерь.
Balancer позволяет вносить в пул только один токен, который автоматически ребалансируется.
Уравнения Balancer - обобщение формулы постоянного произведения x*y=k, учитывающее случаи с количеством токенов больше 2, а также весовые коэффициенты, которые не делятся равномерно 50/50.
Формулы можно найти в Белой книге Balancer
Непостоянные потери в зависимости от относительного изменения цены и типа пула:
Стабильные пулы Balancer подключены к тому же протоколу, что и все остальные пулы. Обмен между стабильными монетами часто используется для арбитража, когда один токен используется в паре с двумя разными стабильными монетами в разных пулах. Используя пакетные обмены (Batch Swaps) на Balancer, эти свопы можно объединить в одну транзакцию, экономящую газ.
Пример. Используя стейбл пул [DAI, USDC, USDT], мы можем напрямую спарить токен LP, или BPT, с WETH во взвешенном пуле [WETH, SP-BPT]. Такая вложенность позволяет нам объединить ликвидность, что приводит к более глубокой ликвидности и лучшим. В данном примере это также избавляет вас от необходимости создавать 3 взвешенных пула [WETH, DAI], [WETH, USDC], [WETH, USDT].
Пулы с повышенной доходностью (Boosted пулы) - тип пула ликвидности, в котором некоторые или все токены могут приносить доход. Доходные токены могут составлять от 25 до 100 % от общего количества токенов пула.
Boosted пулы в v3 не будут требовать вложенности токенов Balancer Pool Token (BPT). Вместо этого токен, приносящий доход (например, Aave USDC), будет регистрироваться непосредственно в пуле.
Чтобы облегчить газоэффективные свопы с базовыми токенами (т. е. USDC) и обратно, в v3 введена концепция буферов.
Буфер можно представить как простой пул ликвидности из двух токенов, в котором хранится токен, приносящий доход (waUSDC), и его базовый аналог (USDC). Любой своп через пул Boosted Pool будет проходить через соответствующий буфер(ы), и если он содержит достаточно ликвидности для свопа, то внешний вызов не требуется. Для более крупных свопов буфер будет запускать сворачивание или разворачивание с помощью стороннего протокола и использовать внешний вызов для ребалансировки.
При минимальной ликвидности буферы должны способствовать проведению большинства свопов через пулы Boosted Pools, обеспечивая LP 100%-ную экспозицию по доходным активам.
- полностью или частично состоит из токенов, генерирующих доходность (yield-bearing) - например aUSDС, stETH. Это позволяет LP получать дополнительный доход помимо традиционных своп-комиссий.
- содержит внутренний пул с базовым активом (например, aUSDС-USDC).
- Интеграция с хранилищами ERC4626, что обеспечивает простую интеграцию и конкурентные цены свопов, делая их «plug and play» для генерации доходности. Т.е. внутри пула может быть ЛП-позиция взвешенного пула, генерирующего доходность от обменов.
Пакетные обмены
При попытке обмена токенами часто возникает необходимость в промежуточных обменах, когда нет пула, содержащего оба токена. Обычно для таких обменов требуется несколько пулов. Balancer предлагает газоэффективное решение - пакетный обмен.
Пакетный обмен - один вызов функции к хранилищу Balancer, которое затем обновляет баланс пулов.
Хранилище Balancer объединяет токены всех пулов. Это позволяет отделить логику учета от контрактов пулов. Хранилище учитывает остатки токенов, а контракт обмена реализует логику свопов. Один пакетный своп может разбить сделку на этапы. Остатки токенов обновляются в конце каждого свопа, поэтому сделки могут перемещаться по нескольким пулам.
Даже если существует пул с обоими токенами, часть сделки может быть направлена через дополнительные пулы, если сделка достаточно велика, чтобы вызвать значительное проскальзывание.
Например, если на Balancer совершается сделка на 1000 ETH за USDC, то для минимизации проскальзывания сделка будет разбита на 3 части и направлена через разные пулы.
Большая часть сделки будет направлена через пул WETH/USDC.
Другая часть будет направлена через два пула - сначала обмен WETH на DAI с помощью пула WETH/DAI, затем DAI на USDC в пуле DAI/USDC/USDT.
Третья часть будет направлена через пулы Balancer - boosted и linear. Все эти 5 сделок можно совершить одним пакетным свопом.
Ещё один случай использования пакетных свопов - когда в определённом пуле нет глубокой ликвидности.
Например, поскольку пул WETH/USDT не обладает высокой ликвидностью, многие сделки для WETH к USDT сначала будут заключаться с WETH к USDC и/или WETH к DAI в пулах USDC/WETH и DAI/WETH, а затем с USDC к USDT и/или DAI к USDT через пул DAI/USDC/USDT. Опять же, все эти 4 сделки можно совершить с помощью одного пакетного свопа.
Таким образом Balancer выступает не просто как DEX, но и как агрегатор пулов.
veBAL
BAL - токен управления протоколом. veBAL (vote-escrow BAL) - система наделения правами, основанная на механизме veCRV компании Curve.
veBAL блокирует токены пула BAL/WETH в соотношении 80/20 на срок не более 1 года. Система veBAL и Gauge (мера, калибр) разработана для содействия долгосрочному выравниванию владельцев токенов и справедливому распределению комиссий.
Заблокировав BAL/WETH 80/20 BPT, держатели получают veBAL, дающий им право на управление и сбор протокольных платежей. Баланс veBAL пользователя уменьшается со временем и прямо пропорционален количеству BAL/WETH 80/20 BPT, которые он заблокировал, и продолжительности оставшегося периода блокировки.
veBAL дает право голоса в управлении протоколом (например, распределение эмиссии BAL между пулами).
Голосование по калибру (Gauge) позволяет контролировать распределение стимулов для поставщиков ликвидности (LP). Держатели выбирают, какие пулы получают стимулы для майнинга ликвидности. Чем больше у пользователей veBAL, тем больше полномочий они имеют для распределения вознаграждений.
Усиление дохода: Комбинируйте награды за ликвидность с бустами от veBAL для повышения APY.
Комиссия протокола взимается при выполнении большинства операций в виде процента либо от комиссии за своп, либо от доходности токенов.
Плата за доходность - особый вид комиссии, которая применяется к токенам, приносящим доход, таким как wstETH. Процент комиссии контролируется управлением ДАО Balancer.
Комиссия за доходность распределяется тремя основными способами:
- как стимул ликвидности для основных пулов.
- в ДАО Balancer, обеспечивая источник дохода для протокола и участвуя в операционных расходах.
- держателям veBAL.
Роли пула
При регистрации пула создатель имеет право изменять определенные настройки пула:
- pauseManager может приостанавливать или отменять паузу пула. Когда пул приостановлен, все операции по изменению состояния возвращаются назад, а перевод пула в режим восстановления (если он еще не выполнен) становится безразрешительным;
- swapFeeManager может устанавливать статическую плату за своп для пула;
- poolCreator может установить плату создателя пула.
Balancer Governance всегда может приостанавливать/отключать пулы, даже если есть менеджер паузы. Однако управление не может устанавливать плату за своп, если есть менеджер свопа, или плату за создателя пула, если есть создатель пула.