недостаточно ликвидности для этой сделки uniswap что значит

Uniswap. Обзор и руководство

1* roDAzOSwEniXuYDpS1ceg

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

Основные особенности Uniswap

Uniswap имеет 2 основные особенности, известные как Swap и Pool.

Swap: Swap даёт возможность пользователям обменивать Ethereum (ETH) и различные ERC-20 токены.

Pool: Pool позволяет пользователям зарабатывать за счёт предоставления ликвидности. Это возможно благодаря депонированию токенов в смарт контракты взамен на токены пула.

Преимущества биржи Uniswap.

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

Отсутствие Know Your Customer (KYC): так как Вы полностью контролируете свои средства, Вам не нужно проходить процедуру KYC и раскрывать своё имя, паспортные данные и т.д. Это значит, что начать пользоваться биржей намного быстрее и значительно снижает вероятность того, что Ваша личная информация попадёт в чужие руки в случае взлома биржи.

Низкие комиссии: Uniswap взимает фиксированную комиссию в размере 0.3% за сделку. Это значительно дешевле, чем на большинстве децентрализованных бирж.

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

Uniswap: недостатки и риски

Сбой транзакции: во время обменов на Uniswap, транзакции могут провалиться. На это есть 3 основных причины. Во-первых, Вы не заплатили достаточную комиссию за GAS, и транзакция заняла больше времени чем установленный для неё срок. Во-вторых, Вы указали максимальную цену, которую Вы готовы заплатить, но реальная цена превысила максимальную до того, как транзакция была выполнена. И последняя, недостаток ликвидности в пуле. В этих случаях Ваша транзакция «возвращается», т.е. сбрасывается как будто её никогда не было, чтобы Вы не потеряли Ваши средства.

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

Руководство для начинающих пользователей

Uniswap позволяет пользователем подключатся напрямую к своей бирже. Он поддерживает следующие кошельки: MetaMask, WalletConnect, Coinbase Wallet, Fortmatic и Portis.

Подключение к Uniswap

Нажмите «Launch App» (запустить приложение) в Uniswap, а затем «Connect wallet» (подключится к кошельку). Выберите кошелёк, который Вы хотите подключить и затем нажмите «Connect wallet». Вы увидите всплывающее окно, на котором будет указана Ваша учётная запись, выберите кошелёк и нажмите «Next», затем «Connect». Готово!

Как использовать функцию Swap в Uniswap?

Uniswap даёт Вам возможность обменивать токены ERC-20. Во вкладке «Swap» (обмен) выберите сколько ERC-20 токенов Вы хотите обменять. Выберите монету, на которую Вы хотите их обменять, нажав на стрелочку под «To». Появится список, в котором Вы сможете выбрать желаемый токен, или, если он отсутствует в списке, Вы можете вставить его адрес смарт-контракта. Uniswap покажет примерное количество токенов, которое Вы получите после обмена. Чтобы подтвердить, нажмите «Swap» (обменять).

Выберите нужную монету

После этого Вы будете перенаправлены на страницу, где нужно подтвердить обмен (как на изображении слева внизу). Тут есть несколько важных пунктов:

· сумма, которую Вы меняете и сумма, которую Вы получите;

· минимальная сумма, которую Вы отправили: это гарантированная сумма, которую Вы получите в случае если цена упадёт пока транзакция обрабатывается;

· влияние цены: разница между рыночной ценой и примерная цена, предоставленная Uniswap в зависимости от размера сделки;

· комиссия поставщика ликвидности: комиссия, которую Вы заплатите Uniswap. Обычно это 0.3% от суммы транзакции.

Как только Вы подтвердите обмен, появится всплывающие окно (как на изображении справа внизу) для подтверждения цены за GAS так это транзакция на Ethereum. Введите цену за GAS, которую Вы хотите заплатить и нажмите «confirm» (подтвердить).

Как только транзакция выполнится, Uniswap Вам об этом сообщит и даст ссылку на Etherscan, где есть все детали транзакции. Здесь Вы можете проверить сколько токенов Вы получили и узнать комиссию за транзакцию.

Руководство по пулу ликвидности Uniswap (Liquidity Pool)

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

Обратите внимание, что для пулов ликвидности Вам надо вносить эквивалентную стоимости в Ethereum вместе с токеном, который Вы хотите использовать. Допустим, если я хочу участвовать в пуле ETH / USDT, мне нужно одновременно внести в пул эквивалентную сумму в ETH и USDT (раздел Add liquidity) Средства, которые Вы отправляете в эти пулы, будут использоваться другими людьми, поэтому Ваши соотношения ETH и USDT будут колебаться.

Зачем поставщики ликвидности это делают? Они получают комиссию от тех, кто выполняет обмены в их пулах ликвидности. Как уже говорилось, Uniswap взимает фиксированную комиссию в размере 0.3% за каждую транзакцию. Эти 0.3% пропорционально распределяются между всеми поставщиками ликвидности этого пула в зависимости от того, сколько они внесли.

Предоставляя ликвидность пулам Вы можете получать комиссию поставщика, когда другие пользователи совершают сделки.

Неудавшиеся транзакции: почему это происходит и как этого избежать?

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

Чтобы избежать неудавшиеся транзакции, нужно искать других людей, которые хотят выполнить ту же транзакцию, что и Вы. Для этого нажмите «…» (меню) в Uniswap и перейдите в раздел «Analytics» (Аналитика) и найдите нужную торговую пару, чтобы узнать сколько других людей тоже хотят её купить. Если цена токена, который Вы хотите получить растёт, Вы можете заплатить больше за GAS. Это ускорит вашу транзакцию и выполнит её с большей вероятностью.

Как быстрее получить / ускорить Uniswap транзакции?

Получите быстрее или ускорьте свои транзакции, за счёт большей платы за GAS, чем у других. Чтобы узнать сколько нужно заплатить за GAS, проверьте Ethereum Gas Station и узнайте рекомендованные цены для быстрых, обычных и безопасных транзакций. Наш совет для быстрых транзакций — платите на 10 % больше указанной рекомендованной цены для того, чтобы Ваша транзакция оформилась быстрее.

Ethereum Gas Station

Поддельные монеты на Uniswap: как их определить и избежать

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

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

Импортирование монет в Uniswap

Другой способ проверки подлинности токена — это Etherscan (как на изображении снизу). Зайдите снова на Coingecko, найдите нужный Вам токен и нажмите на Etherscan.io explorer. В окне Etherscan, появится адрес контракта для этого токена. Сравните номер контракта с номером в адресной строке вашего браузера.

Сравните адрес токена на Etherscan с адресом в вашем браузере.

Внимание: НЕ ищите токен или его адрес на Etherscan. Всегда ищите ссылку на Etherscan через Coingecko или официальный сайт проекта. Это связано с тем, что сам Etherscan, находит все токены и транзакции на блокчейне, включая поддельные.

Как настраивать допустимое проскальзывание?

Проскальзывание происходит, когда цена, по которой в конечном итоге выполняется ордер, не совпадает с ценой на момент подтверждение транзакции. При торговле на Uniswap, это называется «допустимое проскальзывание» и выражается в процентах.

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

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

Источник

Почти половина провайдеров ликвидности на бирже Uniswap теряют деньги. Почему так происходит?

Согласно недавно проведенным исследованиям платформ Topaz Blue и Bancor Protocol, проблема непостоянных потерь (impermanent loss) актуальна почти для половины поставщиков ликвидности децентрализованной биржи (DEX) Uniswap v3. Таким образом, для них простое удержание активов было бы выгоднее, чем поддержка ликвидности на платформе. Рассказываем о ситуации подробнее.

Биржа Uniswap и многие другие децентрализованные биржи являеются автоматизированными маркет-мейкерами (AMM) — то есть протоколами, которые с помощью смарт-контрактов обеспечивают автоматическое проведение сделок без участия централизованного органа. Эти сделки проводятся с помощью алгоритма, а не книги торговых ордеров, как на традиционных биржах. Подробнее о принципе работы Uniswap мы писали в этой статье. Рекомендуем ознакомиться, чтобы лучше понимать происходящее в нише.

В итоге рынок создают провайдеры ликвидности. Это люди, которые по сути делятся деньгами для определённой торговой пары, на которые и торгуют другие участники рынка. Особенность заключается в том, чтобы делиться эквивалентным объёмом двух криптовалют. Например, если человек отправляет в ликвидность один эфир для пары ETH/USDT, он также должен доложить 4320 долларов в USDT по сегодняшнему курсу Эфириума. Таким образом на рынке сохраняется баланс.

Что такое Impermanent loss?

Нереализованная потеря (непостоянная потеря, impermanent loss или IL) — это потеря средств, с которой сталкиваются поставщики ликвидности из-за волатильности торговой пары на децентрализованной бирже. Как мы уже отметили, поставщики ликвидности или LP — это люди, которые депонируют средства в пулы DEX ради получения прибыли в виде комиссий от сделок.

AMM регулируются математическим алгоритмом, который автоматически балансирует соотношение активов в пуле на уровне 50:50 и тем самым определяет их стоимость. Для ценообразования используется формула X x Y = K, где X и Y — два разных актива, а K — постоянная величина, которая до и после сделки должна оставаться одинаковой. Чтобы понять принцип возникновения IL, рассмотрим простой пример работы поставщика ликвидности.

Топ пулов ликвидности на Uniswap

Предположим, что в пуле ликвидности есть два актива, ETH и стейблкоин DAI. Чтобы обеспечить ликвидность пулу, поставщик должен депонировать в него обе монеты в равной стоимости. Например, 1 ETH и 4320 DAI — это текущая рыночная стоимость Эфириума в DAI. Пока рыночная цена ETH остается стабильной, никаких проблем нет, но как только она начнёт расти, арбитражные трейдеры начнут выкупать ETH из пула, пока стоимость актива на DEX и на других биржах не будет равной.

Из-за того, что константа K должна оставаться прежней, по формуле при росте цены ETH, скажем, в четыре раза с условных 4 тысяч долларов, поставщик ликвидности из пула сможет вывести только 0.5 ETH и 8 тысяч DAI. А значит эфиров он получит меньше, а стейблкоина — больше, ведь таким образом гарантируется баланс двух криптовалют в паре при учёте роста курса Эфириума. То есть всего он получит 16 тысяч DAI или 16 тысяч долларов.

Но если бы LP просто хранил монеты, а не отправлял их в пул, то имел бы эквивалент уже 20 тысяч DAI за тот же срок. Разница в 4 тысяч DAI или 4 тысячи долларов и есть той самой нереализованной потерей.

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

Риски для поставщиков ликвидности Uniswap

Расчёты выше приведены без учёта заработанных комиссий поставщиками ликвидности. Впрочем, аналитики пришли к выводу, что даже величина дохода с комиссий не покрывает полностью потери от IL для почти половины LP Uniswap. Вот цитата по этому поводу, опубликованная изданием Cointelegraph.

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

Объем IL в исследуемых пулах

Эксперты Topaz Blue и Bancor Protocol исследовали 17 пулов Uniswap, которые представляют собой 43 процента от общей ликвидности платформы. В период с 5 мая по 20 сентября они принесли 199 миллионов долларов дохода в форме комиссий для своих поставщиков ликвидности. За это же время они понесли IL в общем размере 260 миллионов долларов.

А значит здесь владельцам капитала было бы проще держать монеты на своём счету. Ведь рост их курсов обеспечил бы больше дохода.

Провайдеры ликвидности на 80 процентов из проанализированных пулов теряли больше на IL, чем получали комиссий. Только в тех пулах — WBTC/USDC, AXS/WETH и FTM/WETH — динамика была положительной. В некоторых пулах, например в MKR/ETH, убытки значительно превышали доходы LP.

Соотношение IL к доходам от комиссий в зависимости от времени предоставления ликвидности

Вывод: в вышеупомянутом периоде просто покупка и удержание монет из пулов на своём кошельке принесли бы больше средств с меньшими рисками. Впрочем, у предоставления ликвидности есть свои плюсы: если инвестор рассчитывает, что стоимость монеты не будет серьёзно меняться в ближайшем будущем, роль LP поможет создать отличный источник пассивного дохода.

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

Источник

Как зарабатывать, предоставляя ликвидность на Uniswap?

Содержание статьи:

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

Как работает Uniswap?

Uniswap взимает комиссию в размере 0,30% со всех сделок. Когда поставщик ликвидности возвращает свои токены из резерва, он получает пропорционально распределенную сумму от общих комиссий, накопленных во время блокировки его средств в пуле.

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

Добавление ликвидности через Uniswap

Далее необходимо перейти на вкладку «Пул» и убедиться, что в верхней части страницы выбрано «Добавить ликвидность». Актив для торговли будет автоматически выбран в верхнем поле. Актив, который хотите получить, нужно выбрать в нижнем поле.

Далее необходимо выбрать количество токенов для добавления в пул ликвидности. Соответствующая сумма ETH автоматически отобразится в верхнем поле. Внизу отобразится текущий обменный курс и размер пула. Нажмите «Добавить ликвидность» и подтвердите уведомление о транзакции через свой кошелек. С этой минуты Uniswap автоматически будет обрабатывать транзакцию и обновлять баланс указанного кошелька.

После подтверждения транзакции в блокчейне можно просмотреть объем предоставленной ликвидности ETH и DAI, а также долю вашего пула в процентах. Эта ликвидность используется, когда пользователи совершают сделки ETH-DAI на Uniswap, что означает, что соотношение вашего ETH к DAI может со временем измениться, но стоимость в долларах останется постоянной.

С каждой транзакцией по предоставлению ликвидности вы автоматически получаете токены поставщика ликвидности (LP) Uniswap. Эти токены отслеживают ваш вклад в пул и используются для распределения вашей доли комиссий за транзакции, накопленных за период времени, на который вы предоставляете ликвидность.

Чтобы удалить ликвидность и получить вознаграждение, на вкладке «Пул» в раскрывающемся меню выберите «Удалить ликвидность». Выберите токен ERC-20, для которого вы предоставили ликвидность, и баланс, указанный выше, будет равен вашему количеству токенов LP.

Ниже вы увидите расчетный результат, который включает вашу долю накопленных комиссий за транзакции. Соотношение ETH к DAI может отличаться от суммы, которую вы внесли из-за сделок, совершенных другими пользователями. Нажмите «Удалить ликвидность», и подтвердите уведомление о транзакции.

После подтверждения транзакции в блокчейне вы получите вывод ETH и DAI в свой кошелек, токены LP будут сожжены, а доля вашего пула вернется к 0.

Источник

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

Введение

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

4171acd4099c399335f917008f1dd314

Давайте начнем наше путешествие с Uniswap. Полный исходный код можно найти здесь.

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

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

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

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

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

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

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

Что такое Uniswap?

image loader

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

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

Постоянное соотношение торгуемых пар

Вы, вероятно, уже слышали это определение, давайте посмотрим, что оно означает.

В основе Uniswap лежит формула постоянного соотношения торгуемых пар:

image loader

Эта формула также отвечает за расчеты цен.

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

Настройка проекта

Сначала создайте пустой каталог (я назвал свой zuniswap), перейдите в него по cd и установите HardHat:

Нам также понадобится смарт-контракт для создания токенов, давайте воспользуемся смарт-контрактами ERC20, предоставляемыми OpenZeppelin.

Инициализируйте проект HardHat и удалите все из папок contract, script и test.

Токен-контракт

Uniswap V1 поддерживает обмен только между eth и токенами. Поэтому нам нужен смарт-контракт токенов и для этого мы возьмем стандарт ERC20. Давайте напишем его!

Это все, что нам нужно: мы расширяем смарт-контракт ERC20, предоставленный OpenZeppelin, и определяем собственный конструктор, который позволяет нам задать имя токена ( _name ), символ ( _symbol ) и начальное количество токенов ( initialSupply ). Конструктор также создаёт токены в количестве указано в initialSupply и отправляет их по адресу создателя токена.

Теперь начинается самое интересное!

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

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

Мы создадим смарт-контракт Exchange, а Factory оставим для другой статьи.

Давайте создадим новый пустой смарт-контракт:

Обеспечение ликвидности

Как мы уже выяснили, ликвидность делает возможными торги по токенам. Таким образом, нам нужен способ добавить ликвидность в смарт-контракт Биржи:

Эта реализация addLiquidity не является полной. Я намеренно сделал ее такой, чтобы больше сосредоточиться на функциях ценообразования. Мы восполним этот пробел в одной из последующих статьей.

Давайте также добавим вспомогательную функцию, которая показывает баланс токенов на Бирже:

И теперь мы можем протестировать addLiquidity, чтобы убедиться, что все правильно:

Для краткости я опустил много шаблонного кода в тестах. Пожалуйста, проверьте полный исходный код, если что-то непонятно.

Функция ценообразования

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

image loader

Давайте придерживаться этой идеи и построим функцию ценообразования:

И давайте проверим это:

Причина в том, что Solidity поддерживает целочисленное деление с округлением до целого. Цена 0,5 округляется до 0! Давайте исправим это, увеличив точность:

После обновления теста он пройдет:

Таким образом, теперь 1 токен равен 0,5 eth, а 1 eth равен 2 токенам.

Все выглядит правильно, но что произойдет, если мы обменяем 2000 токенов на eth? Мы получим 1000 eth, а это все, что у нас есть по смарт-контракту! Биржа будет опустошена!

Видимо, что-то не так с функцией ценообразования: она позволяет опустошить Биржу, а этого мы не хотим.

Причина этого в том, что функция ценообразования принадлежит формуле постоянной суммы, которая определяет kkk как постоянную сумму xxx и yyy. Функция этой формулы представляет собой прямую линию:

image loader

График функции постоянной суммы

Она пересекает оси x и y, что означает, что она допускает 0 в любой из них! Мы определенно не хотим этого.

Правильная функция ценообразования

Напомним, что Uniswap является маркет-мейкером постоянного соотношения торгуемых пар, что означает, что он основан на формуле постоянного соотношения торгуемых пар:

image loader

Дает ли эта формула лучшую функцию ценообразования? Давайте посмотрим.

image loader

image loader

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

Это низкоуровневая функция, поэтому пусть она будет private. Давайте сделаем две высокоуровневые функции-обертки для упрощения вычислений:

Итак, теперь мы получаем 1,998 токена за 1 eth и 0,999 eth за 2 токена. Эти суммы очень близки к тем, которые были получены с помощью предыдущей функции ценообразования. Однако они немного меньше. Почему так?

Формула постоянного соотношения торгуемых пар, на которой мы основывали наши расчеты цен, на самом деле является гиперболой:

image loader

Гипербола никогда не пересекает xxx или yyy, поэтому ни один из резервов никогда не равен 0. Это делает резервы бесконечными!

И есть еще одно интересное следствие: функция ценообразования вызывает проскальзывание (slippage) цены. Чем больше количество торгуемых токенов по отношению к резервам, тем ниже будет цена.

Именно это мы и наблюдали в ходе тестов: мы получили чуть меньше, чем ожидали. Это может показаться недостатком постоянного соотношения торгуемых пар (поскольку каждая сделка имеет проскальзывание), однако это тот же механизм, который защищает пулы от опустошения. Это также согласуется с законом спроса и предложения: чем выше спрос (чем больший объем продукции вы хотите получить) по отношению к предложению (резервам), тем выше цена (тем меньше вы получите).

Давайте улучшим наши тесты, чтобы увидеть, как проскальзывание влияет на цены:

Как вы видите, когда мы пытаемся опустошить пул, мы получаем только половину того, что ожидали.

И последнее, что следует отметить: наша первоначальная функция ценообразования, основанная на соотношении резервов, не была ошибочной. На самом деле, она верна, когда количество токенов, которыми мы торгуем, очень мало по сравнению с резервами. Но для создания AMM нам нужно что-то более сложное.

Функция обмена

Теперь мы готовы к реализации обмена.

Обмен eth на токены означает отправку некоторого количества eth (хранящихся в переменной msg.value ) в функцию смарт-контракта и получение токенов взамен. Обратите внимание, что нам нужно вычесть msg.value из баланса смарт-контракта, поскольку к моменту вызова функции отправленные eth уже были добавлены к его балансу.

Наконец, последняя часть кода на сегодня:

Заключение

Вот и все на сегодня! Мы еще не закончили, но мы сделали многое. Наш смарт-контракт Биржи может принимать ликвидность от пользователей, рассчитывать цены таким образом, чтобы защититься от опустошения, и позволяет пользователям обменивать eth на токены и обратно. Это уже много, но некоторых важных частей все еще не хватает:

Добавление новой ликвидности может вызвать значительные изменения цен.

Поставщики ликвидности не получают вознаграждения; все обмены бесплатны.

Нет возможности удалить ликвидность.

Нет возможности обмениваться токенами ERC20.

Фабрика все еще не реализована.

Мы сделаем это в следующей части.

Серия статей

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

Полезные ссылки

Введение в смарт-контракты. Много фундаментальной информации о смарт-контрактах, блокчейне и EVM, которую необходимо изучить перед началом разработки смарт-контрактов.

Давайте запускать децентрализованные биржи на цепочке так же, как мы запускаем рынки предсказаний». Сообщение на Reddit от Виталика Бутерина, в котором он предложил использовать механику рынков предсказаний для создания децентрализованных бирж. Это дало идею использовать формулу постоянного соотношения торгуемых пар.

Источник

Adblock
detector