Получить правильную цену исполнения из Uniswap V2

Я пытаюсь понять Uniswap v2 SDK. Я написал простую функцию для получения результата торговли:

  • 1 WETH для Дая
  • 1 DAI для WETH

Мой вопрос: почему результат первой сделки действительно соответствует тому, что возвращает интерфейс Uniswap, а вторая сделка даже близко не соответствует той, что доступна в веб-интерфейсе?

Код:

import { ChainId, Token, Fetcher, Route, TradeType, TokenAmount, Trade } from '@uniswap/sdk'

const DAI = new Token(ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18)
const WETH = new Token(ChainId.MAINNET, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 18)

const fetch = async () => {
  const pair = await Fetcher.fetchPairData(DAI, WETH)

  const routeWethForDai = new Route([pair], WETH);
  const tradeWethForDai = new Trade(routeWethForDai, new TokenAmount(WETH, BigInt(1E18)), TradeType.EXACT_INPUT);

  const routeDaiForWeth = new Route([pair], DAI);
  const tradeDaiForWeth = new Trade(routeDaiForWeth, new TokenAmount(DAI, BigInt(1E18)), TradeType.EXACT_INPUT);

  console.log(tradeWethForDai.executionPrice.toSignificant(6) + " DAI for 1 WETH")
  console.log(tradeDaiForWeth.executionPrice.toSignificant(6) + " WETH for 1 DAI")
};


fetch()

Торговля WETH с DAI

Торговля DAI с WETH


person Karzel    schedule 04.04.2021    source источник


Ответы (1)


По какой-то причине пользовательский интерфейс Uniswap показывает маршрут DAI > USDC > COMP > ETH на скриншоте. Влияние на цену составляет 6,35%, проскальзывание было бы огромным, если бы своп был выполнен таким образом. Существует пул ETH/DAI, поэтому лучше обмениваться напрямую без каких-либо других токенов в дорожка. Вы можете применить это в пользовательском интерфейсе Uniswap, нажав на шестеренку и включив Disable Multihops:

Отключить многоскачковые

person pwagner    schedule 05.04.2021
comment
Благодарю вас! Отключить Multihops было ключом. С включенной опцией DAI -> WEITH trade тоже работает :) - person Karzel; 06.04.2021
comment
@Karzel Дело не в вашем вопросе. В настоящее время, как и в случае с большим объемом торгов, существует также разница в сумме результатов кода примера цены выполнения SDK и веб-интерфейса. Знаете ли вы причину различия? - person reaver lover; 14.05.2021