Uniswap getPair() does not deliver address

Hi there,

I have a problem when running the following 4 lines of code from the main JS script (see below):

  • await uniswapFactory.getPair(daiAddress, wethAddress)
  • await sushiFactory.getPair(daiAddress, wethAddress),
  • const uniswapReserves = await uniswapDaiEth.getReserves();
  • const sushiReserves = await sushiEthDai.getReserves();

For the first two, if I substituted them with hardcoded token pair addresses from Etherscan into the code it works. If I run the first two directly into Truffle console it resolves the pair addresses but strangely enough it doesn´t resolve when I execute the JS script!

For the above two .getReserves() function calls it doesn´t retrieve any of the reserve values unless if I ran them as they are under Truffle console environment then it retrieves them OK.

I appreciate your assistance here as it´s been bugging me for the full last two days and am running out of options to resolve this.

Full JS script

require('dotenv').config();
const { INFURA_API_KEY, PRIVATE_KEY } = process.env;
const { ethers } = require('ethers');

const UniswapV2Pair = require(".././build/contracts/IUniswapV2Pair.json");
const UniswapV2Factory = require('.././build/contracts/IUniswapV2Factory.json');

const daiAddress = "0x6B175474E89094C44Da98b954EedeAC495271d0F";
const wethAddress = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";

const privateKey = process.env.PRIVATE_KEY;
const infuraProvider = new ethers.providers.InfuraProvider('mainnet', process.env.INFURA_API_KEY);
const wallet = new ethers.Wallet(privateKey, infuraProvider);

const testBasic = async () => {
  const uniswapFactory = new ethers.Contract(
    "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f",
    UniswapV2Factory.abi, 
    wallet
  );

  const sushiFactory = new ethers.Contract(
    "0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac",
    UniswapV2Factory.abi, 
    wallet
  );

  let uniswapDaiEth;
  let sushiEthDai;

  const loadPairs = async () => {
    uniswapDaiEth = new ethers.Contract(
      await uniswapFactory.getPair(daiAddress, wethAddress),
      UniswapV2Pair.abi, 
      wallet
    );
    sushiEthDai = new ethers.Contract(
      await sushiFactory.getPair(daiAddress, wethAddress),
      UniswapV2Pair.abi, 
      wallet
    );
  };
  await loadPairs();

  infuraProvider.on('block', async (blockNumber) => {
    try {
      const uniswapReserves = await uniswapDaiEth.getReserves();
      const sushiReserves = await sushiEthDai.getReserves();
    } catch (err) {
      console.error(err);
    }
  });
};

testBasic();

Thank you very much for your help!

Best, Samuel

Hello Samuel.
Here is Marko Frei.
Contact @markofrei on Telegram

Hi

Please contact me

TG : @anydevbest
Skype : live:.cid.588439c6887bd701