DeFi
March 4

Вводный курс DeFi для всех. Работа с dAPPs через смарт-контракты. Uniswap. Часть IV

DeFi

Добавим ликвидность в существующий пулл, например, в пул пары USDT/USDC с комиссией 0,01%.

Для этого дадим контракту NonfungiblePositionManager протокола разрешение управлять нашими usdt и usdc токенами. Найдём в документации адрес этого контракта в сети Arbitrum.

Находим в эксплорере по адресу контракт USDT. В методах записи находим метод approve.

Указываем адрес распорядителя - адрес контакта NonfungiblePositionManager.

Указываем сумму - 0,5 usdt - 500000 с учётом количества знаков после запятой (значение в публичной переменной decimals у контракта USDT).

Подписываем транзакцию.

Тоже самое делаем на контракте стейблкоина USDC для своего аккаунта.

Далее на контракте пула пары с комиссией 0,01% посмотрим индекс текущего тика - вызовем метод slot0. Видим, что индекс текущего ценового тика 1.

После этого вызываем метод mint на контракте NonfungiblePositionManager.

Передаем ему значения параметров:

  • payableAmount - стами 0, мы не передаем в транзакции эфир, не вносим сейчас в пул нативные токены.
  • адрес токена USDc - на контракте пула можно посмотреть, какой токен 0, а какой 1.
  • адрес токена USDt.
  • размер комиссии пула, в который вносим ликвидность. Указываем 100, то есть 0,01%.
  • tickLower и tickUpper - границы нашего ценового диапазона. В предыдущем видео мы узнали, как можно определить текущую цену в пуле и границы желаемого ценового диапазона. Поэтому здесь мы сразу укажем значения -7 и 8.
  • amount0Desired, amount1Desired - укажем для каждого стейблкоина количество токенов, которые хотим внести - с учетом количества знаков после запятой. 100000 , то есть 0,1 USDt и USDc.
  • amount0Min, amount1Min - минимальное количество, которое пул должен принять от нас. Укажем 10 - также, с учетом количества знаков после запятой.
  • recipient - получатель позиции - укажем адрес кошелька, которым будем подписывать транзакцию.
  • deadline - время, до которого транзакция должна быть выполнена. Указывается в формате Unixtime с точностью до секунд. В описании к видео будет ссылка на конвертер, где можно взять значение текущего момента в формате unixtime.Увеличим текущее значение на 20000.

Подпишем транзакцию нашим кошельком.

Проверим транзакцию.

Протокол забрал с нашего баланса usdt и usdc. И создал нам финансовое нфт, к которому в протоколе привязана наша позиция в пуле ликвидности.

Посмотрим его в приложении DAO Envelop.

На контракте NonfungiblePositionManager вызовем метод чтения positions. Передадим ему tokenId финансового NFT нашей позиции.

Метод вернул состояние нашей позиции, видим настройки , которые мы сделали при создании позиции.

P.S. Обещанный в видео конвертор: epochconverter.com

Видео:

Uniswap

[Продолжение следует...]

До!