Я осваивал разработку смарт-контрактов и создание токенов в целом, но единственное, с чем я боролся, — это понимание того, как Uniswap взаимодействует с моим контрактом на токен, когда пользователи обменивают Ethereum на мой токен или наоборот.

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

Я видел много других токен-контрактов, которые на самом деле определяют ссылку на фабрику/маршрутизатор Uniswap в коде, а затем создают там парный контракт. Насколько я могу судить, это дает им больше возможностей для настройки. Нужно ли мне делать что-то подобное, чтобы настроить поведение обмена с моим токеном в Uniswap? Или имеет смысл просто настроить пару токенов на сайте Uniswap?

0
Cole Medin 8 Янв 2022 в 03:29

1 ответ

Лучший ответ

Когда вы обмениваете токен ERC20 на ETH на Uniswap, вызывается функция токена transfer — см. IERC20.transfer. IIRC, когда вы «покупаете», ваш кошелек является получателем, а контракт пары Token-WETH (созданный Uniswap Factory) является отправителем. С другой стороны, когда вы «продаете», ваш кошелек является отправителем, а пара — получателем.

Если вы хотите получить адрес пары (ваш токен-WETH), вы можете использовать фабрику для его получения:

IUniswapV2Router router = IUniswapV2Router(uniswapV2RouterAddress);
IUniswapV2Pair pair = IUniswapV2Factory(router.factory())
    .getPair(address(this), router.WETH());

См. код интерфейса Uniswap и этот ответ (например), чтобы найти адрес маршрутизатора Uniswap (или погуглить)

0
Darth Thanatus 8 Янв 2022 в 16:18