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