DeFi
March 12

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

DeFi

В этом уроке поговорим об изъятии заработанной комиссии.

Как мы можем узнать, что она есть у нашей позиции? Вызовем метод positions, передав ему tokenId нашей финансовой NFT, которую получили от протокола при создании позиции.

Две последних переменных tokensOwed0 и tokensOwed1 как раз говорят о том, сколько мы можем сейчас вывести комиссии при условии, что других операций мы не совершали (например, уменьшение ликвидности). Это распределенная между позициями комиссия, которая доступна для вывода.

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

Вызовем метод collect на контракте менеджера позиций протокола.

Укажем значения параметров:

  • payableAmount - указываем 0. Мы не передаем в транзакции эфир
  • tokenId - id нашего финансового NFT позиции. Найти мы его можем также на дашборде в приложении Envelop, либо в транзакции первоначального добавления ликвидности.
  • amount0Max, amount1Max - максимальное количество одного и другого токена, которое мы хотим получить. Укажем 100 долларов - также, с учетом количества знаков после запятой.

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

Видим, что метамаск показывает нам, что в результате транзакции мы получим некоторое количество USDT и USDC токенов. Подтверждаем транзакцию.

Проверим её. Видим, что протокол вернул нам некоторое количество токенов usdc/usdt.

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

Uniswap

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

До!