fbpx

Uniswap.

Uniswap – один из самых интересных проектов, запущенных на Ethereum за последнее время. Это протокол для децентрализованного обмена токенами, но сильно отличающийся от других традиционных протоколов, популярных сегодня. Вдохновившись одним из постов Виталика Бутерина на Reddit, создатель Uniswap, Хайден Адамс захотел получить некоторый опыт программирования на Solidity, однако вскоре обучение переросло в получение гранта от фонда Ethereum. Uniswap – это набор смарт-контрактов, развернутых в сети Ethereum. Это означает, что весь процесс обмена производится на блокчейне. Нет ни токена, ни централизации, ни платы основателю сервиса. Механика Uniswap требует некоторого привыкания, но позже мы увидим, что у протокола есть некоторые удивительные преимущества по сравнению с традиционными DEX.

Уникальная архитектура Uniswap полностью исключает ордербук. Как ни странно, маркетмейкеры больше не указывают цену при предоставлении ликвидности. Вместо этого они просто поставляют средства, а Uniswap заботится о всём остальном.

На традиционной бирже, такой как Coinbase, маркетмейкеры обычно предоставляют ликвидность в различных ценовых точках. Например, трейдер имеет в своем распоряжении 1000 долларов и 10 ETH. Тогда он может поставить ордер на покупку по цене $80 на 5 ETH, и ещё один ордер на покупку по цене $60 на 10 ETH. Что касается продажи ETH, то он может поставить ордер на 4 ETH по 120 долларов и ордер на 6 ETH по 140 долларов. Coinbase решили делать рынки с различными ценовыми точками, что им успешно удаётся. В совокупности все ордера трейдеров составляют ордербук. Поскольку рынки движутся вверх или вниз, заказы могут заполняться или не заполняться в зависимости от указанных цен. Как правило, «цена» ETH указывается как середина рынка между самой высокой ставкой на покупку и самой низкой ценой на продажу.

Теперь представьте гипотетически, что Coinbase должен был принимать все заявки и предложения и объединять в две гигантские корзины. Трейдеру наверняка не слишком понравится эта идея. Они не хотели бы, чтобы их заказы смешивались с другими людьми или чтобы Coinbase совершал сделки от их имени по произвольной цене.

Но именно так по своей сути работает Uniswap. Маркетмейкер больше не определяет по каким ценам они готовы покупать или продавать ETH. Вместо этого Uniswap объединяет ликвидность каждого и создает рынки в соответствии с определённым алгоритмом. Этот алгоритм, известный как автоматизированный маркетмейкер (AMM), устанавливает цены для пользователя в соответствии с некоторым заранее заданным набором правил. Примером очень простого AMM является стратегия бота, которая выставляет заявки на покупку и продажу ровно на один доллар соответственно ниже и выше, чем средняя цена рынка и постоянно пересматривает размещение заказов по мере движения рынка.

Не все AMM одинаковы, и разные стратегии имеют свои собственные компромиссы. Uniswap использует вариант, который они называют «Модель маркетмейкера постоянного результата». Этот AMM обладает очень приятной особенностью, заключающейся в возможности всегда обеспечить ликвидность, независимо от того, насколько велик размер заявки или насколько мал размер пула ликвидности. Хитрость заключается в том, чтобы асимптотически увеличивать цену монеты по мере увеличения желаемого количества покупки или продажи. Несмотря на то, что крупные заказы находятся в этой системе в невыгодном положении (как мы увидим чуть позже), зато системе никогда не нужно беспокоиться о нехватке ликвидности. Ликвидность будет буквально всегда.

Для трейдеров

Давайте рассмотрим простой пример с использованием торговой пары ETH/DAI. Давайте предположим, что маркет-мейкеры совместно профинансировали пул в размере 100,000 DAI и 1,000 ETH. Uniswap берет эти две величины и перемножает их (100,000 x 1,000 = 100,000,000).

Цель Uniswap для этой конкретной торговой пары – сохранить результат, т.е. умножение этих двух величин, равным 100 миллионам независимо от того, сколько торговых операций происходит (отсюда и название Модель маркетмейкера постоянного результата). Ключевая формула, которую нужно иметь в виду: x * y = k, где x и y – количество монет в пуле ликвидности, а k – результат. Чтобы сохранить постоянную k, x и y должны быть обратно зависимы, т.е. если x повышается, то y – понижается, и наоборот. Когда трейдер совершает покупку ETH по этому контракту, он увеличивает x (поскольку они добавляют DAI в пул ликвидности) и уменьшает y (когда они удаляют ETH из пула ликвидности). Но данная схема не масштабируется линейно. Попытка купить 100 ETH вместо 10 ETH не требует просто в 10 раз больше DAI. На самом деле он увеличивается асимптотически. Самый простой способ убедиться в этом – построить кривую x * y = k.

Интересно, что в этой системе цена напрямую зависит от размера заказа. Чем дальше вы движетесь по кривой, тем меньше вы получаете за одну единицу валюты, которую вы отдаёте. Вот таблица переплат, которые придётся платить за большие размеры заказа, исходя из текущей цены ETH/DAI, равной 100.

Как видите, если вы хотите купить >2% от пула ликвидности, то это выйдет достаточно дорого. Однако стоит понимать, что переплаты основаны на текущем размере пула ликвидности. Если бы пул был в 100 раз больше (т. е. 10 миллионов DAI и 100,000 ETH), купить 50 ETH было бы не так дорого. В конечном счете, уплаченная цена отражает, насколько размер сделки меняет соотношение x/y. Когда пул ликвидности больше, гораздо проще обрабатывать крупные заказы.

Одной из проблем, о которой не стоит забывать – это фронтенд атака, которая является сегодня является проблемой для всех DEX-ов на Ethereum (прим. перев. когда кто-то видит отправленную транзакцию, и с помощью увеличенной комиссии майнерам опережает ваш заказ, заставляя вас покупать дороже). Чтобы помочь смягчить эту проблему, Uniswap позволяет указать максимальную цену при оформлении заказа. Поэтому, если атака будет осуществлена, и транзакция атакующего будет принята в блок раньше, чем ваша, то пользователь не будет обязан покупать по худшей цене. Да, сделка может быть не осуществлена, но вы ничего не потеряете, платить больше, чем вы собирались, не придётся. Еще одна функция, которую реализует Uniswap – это истекающие ордера, что мешает майнерам удерживать подписанные транзакции и обрабатывать их позже, когда цена переместится, защищая пользователя обмена.

Обмены с ERC-20 на ERC-20 также возможны без отдельного пула ликвидности. Например, заказ на REP<>ZRX будет проходить через пару REP/ETH, а затем автоматически через пару ZRX/ETH.

Для поставщиков ликвидности.

Поставщики ликвидности имеют еще более сложную задачу. Давайте посмотрим на создание рынка ETH/DAI. Первое, на что следует обратить внимание поставщикам ликвидности (и трейдерам тоже), является то, что отношение x/y представляет цену торговой пары. В нашем случае x/y = 100,000 DAI/1,000 ETH = 100. Предположим также, что цена ETH на основе Coinbase составляет 100 долларов. Если бы х/у не равнялся 100, между Uniswap и Coinbase была бы возможность арбитража.

Когда поставщик ликвидности добавляет ликвидность в пул, он не может предоставить ликвидность только одной стороне пары. В противном случае он будет менять соотношение и, по сути, устанавливать новую цену (что опасно, так как очень быстро налетят арбитражники, и пользователь потеряет деньги). Например, если поставщик ликвидности добавляет только 1,000 ETH и 0 DAI, то новое соотношение контракта равно 100,000/2,000 = 50. Арбитражники будут выкупать ETH до тех пор, пока соотношение снова не станет 100: 1. Поэтому поставщики ликвидности должны предоставить равное количество обеих сторон торговой пары (а интерфейс Uniswap помогает избежать ошибок в этом процессе).

Итак, давайте предположим, что после добавления 10 000 DAI и 100 ETH (общая рыночная стоимость 20 000 долл. США) пул ликвидности теперь составляет 100 000 DAI и 1000 ETH. Поскольку предоставленная сумма равна 10% от общей ликвидности, контракт чеканит и отправляет маркет-мейкеру «токены ликвидности», которые дают ему право на 10% ликвидности, доступной в пуле. Это не спекулятивные токены, которыми можно торговать. Они являются всего лишь инструментом бухгалтерского учета, чтобы отслеживать, сколько должны получить поставщики ликвидности. Если другие участники рынка впоследствии добавляют или снимают монеты, новые жетоны ликвидности соответственно чеканятся или сжигаются так, что относительная процентная доля каждого в пуле ликвидности остается неизменной.

 Теперь давайте предположим, что цена на Coinbase изменилась с 100 до 150 долларов. Контракт Uniswap должен также прийти к похожим значениям после некоторого арбитража. Трейдеры будут добавлять DAI и удалять ETH до тех пор, пока новое соотношение не станет 150: 1. Что происходит с поставщиком ликвидности? Контракт будет содержать около 122,400 DAI и 817 ETH (чтобы убедиться, что эти цифры точны, 122,400 * 817 = 100,000,000 (наш постоянный результат) и 122,400/817 = 150, наша новая цена). Выводя 10%, на которые мы имеем право, теперь принесет нам 12,240 DAI и 81.7ETH. Общая рыночная стоимость суммы этих двух активов составляет 24,500 долларов, что приводит нас к потере 500 долларов в результате создания рынка.

 Очевидно, что никто не хочет обеспечивать ликвидность и ещё и платить за это, и доход не зависит от способности совершать хорошие сделки (так как нет возможности совершать сделки, только добавлять ликвидность). Поэтому 0.3% всего объема торговли распределяется пропорционально между всеми поставщиками ликвидности. По умолчанию эти комиссии возвращаются в пул ликвидности, но могут быть получены в любое время. Трудно понять, каково отношение между доходами от комиссий и убытками от изменений рынка, не зная количества промежуточных сделок. Чем больше курс ходит туда-сюда, тем лучше для поставщиков ликвидности.

Большая идея.

Звучит намного сложнее, чем привычный обмен с обычным ордербуком. Переплаты также делают торговлю для китов чрезмерно дорогой. Так что же такого хорошего в этом модели обмена? Главное – объединенная ликвидность сглаживает глубину книги заказов. Больше нет больших дыр или большой разницы между ордерами на покупку и продажу. Это предпочтительнее для мелких трейдеров, которые не хотят иметь дело с книгами лимитных ордеров (Uniswap UX – один из самых приятных, что мы видели во всех криптосистемах). Больше не нужно ставить ордера или делать тяжелые расчеты. Поставщики ликвидности также могут «установить и забыть». С точки зрения управления заказами и позициями значительно меньше накладных расходов. Это отличный пассивный способ обеспечить ликвидность и заработать некоторые комиссионные.

Uniswap также вдыхает жизнь в транзакции между приложениями. В мире с миллионами микротранзакций гораздо более логично погружаться в один гигантский пул ликвидности, чем осознавать потребности в ликвидности в зависимости от цены. Отмена отличного ордера больше не опасна (представьте DEX с пустой книгой заказов на продажу). Ещё одним вариантом использования Uniswap является возможность для секьюрити токенов выплачивать дивиденды (покупая на сумму дивидендов данные секьюрити токены и сжигая их).

Для проницательного читателя эта модель очень похожа на сеть Bancor, запущенную в прошлом году. Однако Uniswap не взимает никакой платы за листинг, тратит значительно меньше газа и является более децентрализованным. Bancor требует блокировать токены BNT и заполнять форму заявки для создания торговой пары. Токен BNT также может быть заморожен по желанию создателей. Uniswap не имеет таких проблем. Uniswap будет работать, пока работает сеть Ethereum.

В данный момент в Uniswap около пары тысяч ETH ликвидности по всем контрактам, поэтому мы все еще в самом начале. Да, Uniswap вряд ли заменит другие типы DEX из-за китов, желающих торговать заказами большого размера. Однако его уникальные возможности определенно привлекут более широкое использование обычных трейдеров, которые хотят получить быстрый и легкий доступ к различным токенам.

Оригинал: https://medium.com/scalar-capital/uniswap-a-unique-exchange-f4ef44f807bf
Перевод: https://cp0x.com/topic/94-uniswap-protokol-obmena-na-ethereum/

loading...

Sileni16 Posts

Пока есть доступ к интернету, я эксперт во всех областях.