Программирование DeFi: Uniswap. Часть 1

Программирование DeFi: Uniswap. Часть 1

Лучший способ научиться чему‑то — научить других. Второй лучший способ научиться чему‑то — сделать это самому. Я решил объединить эти два способа и научить себя и вас программировать DeFi сервисы на Ethereum (и любых других блокчейнах, основанных на EVM — Ethereum Virtual Machine).

Аирдроп от Optimism. Ссылка в описании профиля.

Мы сосредоточимся на том, как работают эти сервисы, попытаемся понять экономическую механику, которая делает их такими, какие они есть (а все DeFi основаны на экономической механике). Мы будем выяснять, разбирать, изучать и создавать основные механизмы DeFi.

Однако мы будем работать только над смарт‑контрактами: создание front‑end для смарт‑контрактов — тоже большая и интересная задача, но она выходит за рамки этой статьи.

Давайте начнем наше путешествие с Uniswap.

Различные версии Uniswap

По состоянию на июнь 2021 года было запущено три версии Uniswap.

Первая версия (V1) была запущена в ноябре 2018 года и допускала обмен только между eth и токенами. А также были возможны обмены токенов на токены.

Вторая версия (V2) была запущена в марте 2020 года и представляла собой улучшение V1, позволяя осуществлять прямой обмен между любыми токенами ERC20, а также связанный обмен между любыми парами.

Третья версия (V3) была запущена в мае 2021 года и значительно повысила эффективность использования капитала, что позволило поставщикам ликвидности выводить большую часть своей ликвидности из пулов и при этом получать те же вознаграждения (или сжимать капитал в меньших ценовых диапазонах и получать до 4000x прибыли).

В этой серии мы разберем каждую из версий протокола и попробуем построить упрощенные копии каждой из них.

Эта статья посвящена Uniswap V1, чтобы соблюсти хронологический порядок и лучше понять, какие были улучшения от версии к версии.

Что такое Uniswap?

Uniswap — это децентрализованная криптовалютная биржа (DEX), которая призвана стать альтернативой централизованным биржам. Она работает на блокчейне Ethereum и полностью автоматизирована: здесь нет администраторов, менеджеров или пользователей с привилегированным доступом.

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

Давайте узнаем больше о маркет-мейкерах.

Маркет‑мейкеры (рынкоделы, рынкодвижи) — это организации, которые обеспечивают ликвидность (наполенение торговыыми активами) на классических рынках. Ликвидность — это то, что делает возможными сделки: если вы хотите что‑то продать, но никто не покупает это, сделки не будет. Некоторые торговые пары имеют высокую ликвидность (например, BTC‑USDT), а некоторые — низкую или вообще не имеют ликвидности (например, некоторые мошеннические или сомнительные альткоины).

DEX должна обладать достаточной ликвидностью, чтобы функционировать и служить альтернативой централизованным биржам. Один из способов получить такую ликвидность — это разработчикам вложить свои собственные деньги (или деньги своих инвесторов) в DEX и стать маркет‑мейкером. Однако это сложно осуществимое решение, поскольку потребуется много денег, чтобы обеспечить достаточную ликвидность для всех пар, учитывая, что на DEX позволяют обмениваться любыми токенами. Более того, это сделает DEX централизованным: будучи единственными маркет‑мейкерами, разработчики будут иметь в своих руках большую власть.

Лучшее решение — позволить каждому стать маркет‑мейкером, и именно это делает Uniswap автоматизированным маркет‑мейкером: любой пользователь может внести свои средства в торговую пару (и получить от этого выгоду).

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

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

Смарт-контракт Exchange

Uniswap V1 имеет только два смарт-контракта: Factory и Exchange.

Factory — это смарт‑контракт реестра, который позволяет создавать Биржи (Exchange), отслеживает все развернутые Биржи, позволяет находить адрес Биржи по адресу токена и наоборот. При этом сразу стоит отметить, что каждая обмениваемая пара (eth‑токен) развертывается как отдельный смарт‑контракт Биржи и этот смарт‑контракт позволяет обменивать eth на указанный токен и обратно. Таким образом смарт‑контракт Exchange определяет логику проведения обмена на Бирже по одному конкретному токену.

11
2
Начать дискуссию