Как форкнуть Uniswap v3, не делая форка? Подсказка: нужна алгебра
Учёные расходятся в цифрах, сколько на самом деле существует форков Uniswap v2, но, скорее всего, много или даже очень много. «А раз это так популярно, почему бы не сделать из этого бизнес?» — подумали ребята из Algebra Finance и сделали DaaS (DEX-as-a-Service).
Но Uniswap v2 уже морально устарел: у пулов на его основе есть проблемы с непостоянными потерями (impermanent loss) и неэффективным использованием капитала, поэтому протокол построен на базе Uniswap v3.
🦄 Почему за основу взят Uniswap v3?
Концепция CLMM (Concentrated Liquidity Market Maker), которая стала основной фичей Uniswap v3, отчасти решала проблему непостоянных потерь, а кроме того, концентрированная ликвидность позволяла использовать капитал провайдеров ликвидности (LP) в разы эффективнее. Но всё же было у неё пара недостатков.
⚙️ DEX-движок
Первая версия протокола Algebra v1 не просто тупо взяла код третьего Uniswap: была сохранена основная архитектура (core + periphery контракты), но переработана таким образом, чтобы исправить недостатки Uniswap v3:
Динамические комиссии — тут команда протокола сильно заморочилась и разработала формулу, которая учитывает волатильность актива, объём ликвидности и объём торгов, и на основании этих данных корректирует комиссию пула.
Получается, что:
• При высокой волатильности комиссия увеличивается, чтобы компенсировать риски LP.
• При низкой торговой активности, но достаточной ликвидности, комиссия снижается, чтобы стимулировать больше обменов.
Таким образом, всю ликвидность конкретной пары можно держать в одном пуле, а не разбивать на несколько с разной комиссией (как в Uniswap v3). Подробно формула разбирается в whitepaper.Фарминг из коробки — добавили возможность поощрять LP через фарминг-кампании. Дело в том, что в случае с CLMM стандартный фарминг не подходит. Для справедливого распределения ревардов нужно учитывать:
• объём ликвидности конкретной позиции;
• время, когда эта позиция была в диапазоне и зарабатывала комиссии.
Задача нетривиальная: для этого пришлось разработать виртуальные пулы, которые подключаются к основному пулу и получают эту информацию в реальном времени (у Uniswap ничего подобного нет).
🚀 Запуск протокола
После истечения лицензии на код Uniswap v3 (в апреле 2023 года) разные DEX'ы начали разворачивать Algebra v1, например QuickSwap, Camelot, THENA.
Судя по отсутствию в документации информации о развертывании, команда Algebra делает это самостоятельно. За это протокол получает community fee, то есть часть торговых комиссий DEX'ов отчисляется протоколу. На данный момент этим решением уже воспользовалось больше 30 DEX.
У протокола есть токен ALGB: около 70% заработанных комиссий тратится на выкуп и сжигание этого токена, остальные идут на поддержание работы протокола и выплату ревардов за стейкинг ALGB.
🥈Algebra v2 (Integral)
Недавно была представлена вторая версия протокола — Algebra Integral. Фактически это функционал Uniswap v4, но на базе всё того же Uniswap v3. В четвёртой версии Uniswap сделал единый пул, а также добавил хуки.
Хуки — это callback-функции, которые вызываются при основных действиях пула (иницилизация, свопы, добавление/удаление ликвидности, flash-loan) и позволяют вынести много логики «наружу».
Algebra Integral не стала перенимать концепцию единого пула, но хуки добавила: теперь у создателей пар есть возможность настраивать доп. функционал по желанию, выбирая из различных плагинов. Например, не всем пулам нужны динамические комиссии, фарминг или TWAP.
Плагины можно подключать и отключать: к одному пулу подключается только один плагин, но можно использовать прокси-плагин, который позволит подключать другие плагины. Это сделало протокол более эффективным с точки зрения затрат на газ и дало возможность разрабатывать новый функционал без
Мы с коллегами периодически пишем в нашем Telegram-канале. Если интересно, что у нас в работе и что обсуждаем, можете заглянуть.