Это моя первая статья среднего размера, так что будьте со мной полегче.

Я заметил несколько вещей при использовании Uniswap-SDK с JavaScript. Здесь есть некоторые моменты, которые уже показаны в документах Uniswap. Однако новичкам может быть сложно следить за документацией и применять логику к коду. Поэтому я постараюсь объяснить это просто.

Вы можете обратиться к документации Uniswap по ссылке ниже для подробного объяснения.



Uniswap
Автоматизированный протокол ликвидности на Ethereumuniswap.org



Эта статья будет специально посвящена торговым парам Uniswap, когда задействовано более двух токенов. Например, когда есть токен в паре с USDT или USDC, и вы хотите использовать Uniswap-SDK для торговли с ETH.

Итак, давайте начнем,

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

Первым шагом является установка Uniswap-SDK. Во-вторых, инициируйте Uniswap-SDK с необходимыми параметрами. Затем определите ChainId с предпочтительной цепочкой (MAINNET, ROPSTEN, RINKEBY и т. д.). После этого объявите токен, с которым нужно взаимодействовать.

const UNISWAP = require('@uniswap/sdk')
const chainId = UNISWAP.ChainId.MAINNET
//SPDR Token
const tokenAddress = '0xbcd4b7de6fde81025f74426d43165a5b0d790fdd'

Важно объявить все токены, с которыми нужно взаимодействовать. (примечание: «dai» на самом деле не является токеном DAI, это просто имя переменной для целевого адреса токена).

const dai = new UNISWAP.Token(chainId, tokenAddress, 18);
const weth = new UNISWAP.Token(chainId, '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', 18);
const usdt = new UNISWAP.Token(chainId, '0xdac17f958d2ee523a2206206994597c13d831ec7', 6);

Далее настроим пары, в данном случае возьмем любую пару USDT, например, SPDR (SpiderDAO)/USDT. Я создал две пары:
USDT с WETH и DAI с USDT, чтобы упростить маршрут.

const USDTWETHPair = UNISWAP.Fetcher.fetchPairData(usdt, weth)
const DAIUSDTPair = UNISWAP.Fetcher.fetchPairData(dai, usdt)
const route = new UNISWAP.Route([USDTWETHPair, DAIUSDTPair], weth)

Наконец, можно совершить сделку и объявить путь, чтобы он шел от WETH → USDT → SPDR. Например, когда вы покупаете токены SPDR на сумму 1 ETH. Сначала он обменяет 1 ETH на эквивалентный USDT, а затем обменяет USDT на токены SPDR.

const trade = new UNISWAP.Trade(route, new UNISWAP.TokenAmount(weth, amountIn), UNISWAP.TradeType.EXACT_INPUT)
const path = [weth.address, usdt.address, dai.address];

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