26 марта 2020

Понимаем Uniswap: Иллюстрированное руководство

Одним из самых популярных трендов в криптовалютной индустрии, сменивший эпоху ICO, в 2019 году стали проекты DeFi — проекты и протоколы для децентрализованных финансов. Основа концепции DeFi — это децентрализованная возможность обмена, инвестирования и кредитования, беспрепятственно на практике и абсолютно демократично по структуре, с полным контролем своих средств, которые доверяются не конкретным персонам, а смарт-контрактам и алгоритмам. 

Сегодня поговорим об одном из самых интересных проектов в этой области — Uniswap, протоколе для децентрализованного обмена токенами. 

Интересно, что разработке Uniswap способствовала идея Виталика Бутерина для децентрализованной биржи (DEX), в которой был бы задействован автоматизированный маркет-мейкер. Собственно, сам разработчик протокола, Хайден Адамс, поначалу стремился просто попрактиковаться в разработке на Solidity, а спустя время это хобби принесло ему несколько грантов и $100 000 от фонда Ethereum. 

Теперь проект вышел далеко за рамки просто развлечения и стал одним из важнейших компонентов всей DeFi индустрии. И эта слава имеет обратную сторону — во время последних испытаний рынка на прочность, увы, но алгоритмы большинства участников спасовали перед обвальными настроениями рынка и умелыми одиночками, которые использовали уязвимости и пограничные нюансы функционирования сложных финансовых систем для своего обогащения. Подробнее можно почитать в хорошем материале ForkLog-а Черный четверг для DeFi.

Если вам стало интересно, как же все устроено — мы подготовили  перевод отличного иллюстрированного руководства по механике работы проекта Uniswap.

Оригинал: A Graphical Guide for Understanding Uniswap

Минутка рекламы: Хотите, чтобы для вашего проекта писала наша команда? Лонгриды, переводы (эта статья — наглядный пример наших возможностей), обзоры, новости — полный цикл, от выбора тем до оформления и публикации. В приоритете — биржи, кошельки, игры и сервисы. Интересно? Обращайтесь:raiden@coinindex.agency

 

Что такое Uniswap?

Uniswap — это протокол, подобный бирже, позволяющий  пользователям безопасно обменивать токены ERC20 без необходимости использовать традиционную модель биржевой книги заявок. Uniswap объединяет токены в специальные смарт-контракты, создавая пулы ликвидности, в пределах которых другие участники могут торговать. Любой может обменивать токены, добавлять токены в пул для получения комиссии, или же создать новую торговую пару.

Данное руководство призвано помочь новичкам разобраться в том, как функционирует Uniswap и что происходит за его кулисами. Несмотря на то, что интерфейс может показаться простым, многое все же остается за кадром.

Если вы заинтересованы в лучшем понимании практической стороны использования Uniswap, рекомендуем эту статью: The Ultimate Guide to Uniswap

ERC20 токены

Токены стандарта ERC20, на Ethereum, являются самыми популярными и взаимозаменяемыми токенами, что означает, что между одинаковыми токенами этого стандарта нет различия. Например, если у меня в руке 100 металлических шариков одного размера и цвета, не имеет значения, какой из них я вам дам. Точно так же, если у меня 100 одинаковых токенов ERC20, не имеет значения, какой из них я вам отправлю. В свою очередь, NFT токены стандарта ERC721 — невзаимозаменяемы, о них вы могли слышать по коллекционной игре Сryptokitties

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

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

Обзор смарт-контрактов Uniswap

При просмотре веб-сайта Uniswap важно помнить, что это гораздо больше, чем просто интерфейс. С помощью набора смарт-контрактов Uniswap стандартизирует механизм обмена токенов ERC20. Любой может создать интерфейс, который подключается к этим контрактам, и сразу же осуществить обмен со всеми, кто использует Uniswap.

Существует два разных типа контрактов, из которых состоит Uniswap. Первый известен как биржевой контракт (Exchange). Контракты Exchange содержат пул определенного токена и Ether, с которыми пользователи могут осуществлять обмен. Второй тип контракта — это Factory, отвечающий за создание новых биржевых контрактов и привязку адреса токена ERC20 к его персональному биржевому контракту.

За листинг нового инструмента в Uniswap плата не взимается. Любой может вызвать функцию в контракте Factory, чтобы зарегистрировать новый токен. На рисунке ниже показан пример добавления DAI в Uniswap. Кто-то сначала вызвал функцию createExchange в контракте Factory с адресом контракта DAI. Затем Factory проверяет реестр, чтобы узнать, был ли ранее создан контракт Exchange для этого токена. Если такого еще нет, Factory создает контракт Exchange и записывает его адрес в реестр.

Пулы ликвидности (Liquidity Pools)

Uniswap уникален тем, что не использует книгу заявок для определения стоимости актива. В традиционных крипто биржах, подобно Coinbase Pro, цена определяется спросом и предложением, где самая высокая цена — это та, за которую кто-то готов приобрести, и самая низкая цена — та, за которую кто-то готов продать. На изображении ниже мы видим, что самая высокая цена предложения BTC на Coinbase Pro, на тот момент, составляла $9301,36, а самая низкая запрашиваемая цена — $9301,37.

 

Вместо этого Uniswap использует Exchange контракты для объединения в один пул как Ether, так и определенного токена. При обмене Ether на токен, Ether отправляется в пул контракта, а токен возвращается пользователю. В результате трейдеру не нужно ждать контрагента для обмена или беспокоиться об указании цены. Поскольку любой может перечислить токен, и пользователям не нужно думать о сопоставлении с кем-либо, мы легко избегаем проблемы обеспечения начальной ликвидности.

Сумма, которая возвращается после обмена, основана на формуле автоматического маркет-мейкера. График ниже помогает проиллюстрировать, как работает эта формула. По сути, сумма, которую вам возвращают, зависит от соотношения эфира и токена в пуле. Независимо от объема, пользователь гарантированно выполнит свою сделку, потому что, чем больше актива вы добавляете в одну сторону пула, тем далее по кривой он продвигает вас к другому активу. Это означает, что чем больше заявка по отношению к пулу, тем меньше ставку вы получите.

Больше информации можно найти в посте Improving front running resistance of x*y=k market makers  

Но если пользователи только отправляют криптовалюту, как поддерживается  правильный курс эфира к токена? 

Ответ заключается в том, что пулы поддерживают ценовой баланс с внешними рынками через трейдеров которые занимаются арбитражем между пулами. Представьте, что пул DAI: ETH выражается в виде весов, и, когда они сбалансированы, пул соответствующим образом оценивается относительно рыночной цены централизованной биржи. Допустим, текущая цена ETH в долларах США на централизованной бирже составляет 150 долларов, а соотношение в пуле Uniswap DAI: ETH возвращает 150 DAI за 1 ETH. В результате мы сбалансированы, потому что пул соответствует текущей рыночной цене на централизованной бирже.

Теперь давайте предположим, что на рынке наблюдается движение, которое толкает цену ETH до 100 долларов на централизованной бирже. Из-за движения цены мы теперь можем видеть, что мы находимся вне баланса относительно рыночной цены, потому что теперь люди могут поменять 1 ETH на 150 DAI, используя Uniswap, тогда как рыночная цена на централизованной бирже составляет 100 долларов за 1 ETH.

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

Как результат, сторонние арбитражи играют большую роль в поддержании правильного соотношения токена и эфира в пулах Uniswap (прим. переводчика: и могут стать, как показала недавняя история, причиной панической волатильности).

Обмен ERC20 ⇄ ERC20

При взаимодействии с одним контрактом Exchange пользователь может переключаться между Ether и конкретным токеном ERC20. Однако Uniswap позволяет пользователям напрямую обменивать токены ERC20 между собой, в одной транзакции. 

В приведенном ниже примере у пользователя в наличии DAI и он хотел бы получить MKR. В результате пользователь вызывает функцию tokenToTokenSwap, которая добавляет DAI в пул DAI, переводит ETH в пул MKR и возвращает MKR по адресу, который первоначально отправил транзакцию.

Провайдеры ликвидности

Когда для токена впервые создается контракт Exchange, оба пула (токена и эфира) пусты. Первый человек, который делает депозит в контракт, и определяет соотношение между токеном и эфиром. Если они вносят соотношение, отличное от текущего рыночного курса, тогда предоставляется арбитражная возможность. Если ликвидность добавляется в уже существующий пул, необходимо добавлять пропорциональное количество и ETH и токена. Если этого не сделать, ликвидность в пуле подвергается арбитражному риску.

Кроме того, большие пулы ликвидности полезны для пользователей, поскольку они допускают большие сделки, не отклоняя соотношение токена к ETH слишком далеко по кривой. Uniswap стимулирует пользователей добавлять ликвидность в пулы, вознаграждая провайдеров комиссией, которую взимает протокол. За обмен между эфиром и токеном взимается комиссия в размере 0,3%, а при обмене токенов на токены — примерно 0,6%.

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

Прим. переводчика: следует понимать и риски, связанные с предоставлением ликвидности. Более подробно можно почитать в статье Uniswap: A Good Deal for Liquidity Providers?  или хорошем обзоре Are Uniswap‘s Liquidity Pools Right for You?

Сейчас Uniswap переходит на новую версию V2, которая будет обладать множеством улучшений, в первую очередь связанную с ценообразованием и препятствованию атак на пулы, например, front-running-а. Обе версии протокола будут работать параллельно, поэтому мы сможем сравнить эффективность и посмотрим, как распределиться ликвидность. 

ПереводчикСветлана Лозовюк. Редактор: Aleks. Материал подготовлен в рамках контент проекта CryptoHedwig от CoinIndex. Хотите, чтобы мы писали для вас? Давайте сотрудничать! Пишите — cryptohedwig@coinindex.agency

Обсудить в Discord!