Завьялов Илья Николаевич
Завьялов Илья Николаевич личный блог
17 мая 2024, 11:59

Завьялов Илья Николаевич про AMM.

Перед тем как вы погрузитесь в изучение статьи, обратите внимание на тот факт что всё упомянутое в ней не является финансовой рекомендацией для принятие более взвешенного решения просьба провести свое собственное исследование.


Основная цель curve.fi — это предоставление возможности обмена стейблкоинов с низким проскальзыванием (далее подробнее разберем, что это такое).

Начнем по порядку разбираться, как устроены АММ алогоритмы.

Uniswap AMM

Каждый, кто хоть немного углублялся в defi встречал формулу .

x*y=k


Это упрощенное представление алгоритма, который лежит в основе Uniswap.

Это формула означает, что отношение активов (токенов) в пуле — это неизменное значение.

Пример:

Представим, что у нас есть пул USDT/ETH, и в пуле лежит 40000 USDT (это X) и 10 ETH (это Y), таким образом 40000*10=400’000 (это K).

Теперь к нам пришел условный Вася и хочет обменять свои 4000 USDT на ETH.

Давайте посчитаем как изменится количество токенов в пуле, используя нашу формулу.

После того как Вася внес 4000 USDT, в пуле стало 44000 USDT (там еще Uniswap забирает комиссию 0.3%, но мы опустим это).

Теперь на надо посчитать сколько ETH нужно отдать Васе.

Составим простое уравнение за средней школы:

44000 (наш Х) * y = 400000 (наш К)


Теперь нам надо найти сколько ETH должно быть в пуле, чтобы уравнение сошлось. Разделим обе части на 44000 (то есть X) и получим y=400000/44000. Таким образом y=9.09
Mы получили количество ETH, которое ДОЛЖНО БЫТЬ В ПУЛЕ. Теперь надо разницу отдать Васе. 10ETH — 9.09ETH = 0.91 ETH (куда делось 0.09 ETH???)

Автоматическая установка цены

Как мы могли заметить, когда Вася внес 4000 USDT, цена автоматически изменилась.

Теперь 1 ETH стоит Y/X, то есть 44000/9.09=4840 USDT.

Давайте рассмотрим, что произойдет, когда Вася захочет еще раз обменять 4000 USDT.

Произведем еще раз все вычисления:

(44000 + 4000) * y = 400000

Y = 8.33

Таким образом в пуле станет 48000 USDT, 8,33 ETH

И 1 ETH будет стоить 5762 USDT

Как мы увидели на двух примерах, при росте спроса на один из активов, цена второго автоматики изменяется. Потому это и называется AMM (автоматический маркет мейкер).

Завьялов Илья Николаевич про AMM.

Красный график показывает количество токенов в пуле

Синий график (производная от x*y) показывает цену токенов


Проскальзывание

Проскальзывание — это величина, которая показывает насколько изменится цена, после того как покупатель, Вася в нашем случае, захочет обменять средства. Если говорить максимально просто, то это то насколько меньше вы получите по факту сделки.

В первом примере мы увидели, что изначально 1 ETH стоил 4000 USDT, но по факту Вася купил по цене 4395 USDT (4000/0.91)

 

От чего зависит проскальзывание?

Ответ: от ликвидности (количества токенов в пуле)

Разберемся почему:

Формула для расчета проскальзывания выглядит так: 

Завьялов Илья Николаевич про AMM.

Чтобы проще понять, как работает эта формула рассмотрим два случая

 

  1. Если мы захотим купить небольшое количество токенов, то δ (сколько мы купим) будет сильно меньше X (сколько в пуле) (δ << X, это для гиков выражение), и получился S = 1 — (очень близкое к 1 число), то есть проскальзываете будет стремиться к 0.
  2. Для пула, где очень много токенов X будет стремиться к бесконечности, таким образом проскальзывание тоже будет стремиться к 0.

 

Предположим у нас есть пул, где:

 

1'000'000 токенов X

 

5'000'000 токенов Y

 

K = 5 * 10^12

 

Рассмотрим два примера, как менялась цена (изначальная цена была 5 у.е):

Завьялов Илья Николаевич про AMM.

Выкупаем один актив

 

Давайте посмотрим, что произойдет, если кто-то захочет полностью забрать один из активов в пуле.

 

В нашем воображаемом пуле будет

 

100 ETH

 

400'000 USDT

 

В нашем случае Вася будет покупать по 100 ETH на централизованной бирже и продавать в нашем пуле

 

Купив 100 ETH за 400000 USDT, он пришел в наш пул и продал 100 ETH

 

Теперь в пуле

 

200 ETH

 

200'000 USDT

 

Вася потратил 4000$

 

Если сделать так очень много раз и построить график, то получится вот такая зависимость.

Завьялов Илья Николаевич про AMM.

По графику видно, что чем больше денег мы тратим, тем меньше цена ETH, но в какой-то момент она начинает незначительно меняться в сравнении с потраченной суммой.

 

Таким образом можно заметить, что выкупить всю ликвидность из пула почти невозможно.

 

 

 

Чем плох Uniswap AMM?

 

Представим ситуацию, что у нас в пуле лежит не ETH/USDT, а пара стейблкоинов USDT/USDC

 

Опять рассмотрим пример, где Вася на одну и ту же сумму покупает один из активов.

 

У нас есть пул:

 

100'000 USDT

 

100'000 USDC

Завьялов Илья Николаевич про AMM.


Из таблиц видно, что при маленьких суммах разница не очень большая, но когда Вася начинает менять по 10000 USDT, то на 3 сделке он теряет 500$ из-за проскальзывания, хотя меняет доллар на доллар.

 

 

 

Пул без проскальзывания (такое бывает ???)

 

Давайте представим пул, в котором цена активов будет постоянной, то есть я в любой момент смогу обменять 1000 USDT на 1000 USDC 1:1, звучит как решение для нашей проблемы с обменом стейблкоинов.

 

Но не так все просто и вот почему...

 

Если описывать такой пул, то это будет пул с линейной зависимостью (как на алгебре в 9 классе y=kx+b).

 

Например у нас есть пул, и в нем:

 

1000 USDC

 

1000 USDT

 

Выражение описывающее пул будет следующим:

 

X + Y = C

 

X — количество токена #1

 

Y — количество токена #2

 

C — сумма токенов

 

в нашем примере мы получим X + Y = 2000.

Завьялов Илья Николаевич про AMM.

Вот как это будет выглядеть, если мы построим график зависимости количества токенов в пуле.

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн