Git Product home page Git Product logo

Comments (12)

scottbailey1234 avatar scottbailey1234 commented on April 19, 2024 16

To elaborate a bit for those in the tutorial who may not be aware of every aspect of object oriented coding structures. If you installed using @uniswap/sdk, and did not indicate a version as of 10/22/2021, you would have installed version 3.0.3.

In this case, in the const used to import values from uniswap (at the top of the code), you'll need to replace the "Token" and "Pair" statements with a single "Fetcher" statement. Then, within your methods in the code, replace "Token.fetchData" and "Pair.fetchData" with "Fetcher.fetchTokenData" and "Fetcher.fetchPairData"

It should look like this,
const { ChainId, TokenAmount, Fetcher } = require('@uniswap/sdk'); //import field values from uniswap

Then, within your method,

const init = async () => { //Apply WETH to process - In Uniswap, weth is used to trade ETH. ETH is sent to a weth token and the weth token is used to represent ETH during the trade.
const [dai, weth] = await Promise.all(
[addresses.tokens.dai, addresses.tokens.weth].map(tokenAddress => (
Fetcher.fetchTokenData(
ChainId.MAINNET,
tokenAddress,
)
)));
const daiWeth = await Fetcher.fetchPairData(
dai,
weth
);

To @wcDogg's point... EatTheBlocks course designers need to modify these details in the instructions or provide additional training on how we can manage version changes for the many different npm installs that are required for the build. It's an expensive course and it's no surprise that people will be frustrated on this one.

from eattheblocks.

cherylkw avatar cherylkw commented on April 19, 2024 11

I think uniswap SDK v2 has new features and no longer supports fetchdata method. So try to use Fetcher.fetchTokenData and Fetcher.fetchPairData.

from eattheblocks.

blockpartines avatar blockpartines commented on April 19, 2024 1

require('dotenv').config()
const Web3 = require('web3');
const { ChainId, TokenAmount, Fetcher } = require('@uniswap/sdk');
const abis = require('./abis');
const { mainnet: addresses } = require('./addresses');

const web3 = new Web3(
new Web3.providers.WebsocketProvider('process.env.INFURA_URL')
);

const kyber = new web3.eth.Contract(
abis.kyber.kyberNetworkProxy,
addresses.kyber.kyberNetworkProxy
);

const AMOUNT_ETH = 100;
const RECENT_ETH_PRICE = 230;
const AMOUNT_ETH_WEI = web3.utils.toWei(AMOUNT_ETH.toString());
const AMOUNT_DAI_WEI = web3.utils.toWei((AMOUNT_ETH * RECENT_ETH_PRICE).toString());

const init = async () => {
const [dai, weth] = await Promise.all(
[addresses.tokens.dai, addresses.tokens.weth].map(tokenAddress => (
Fetcher.fetchTokenData(
ChainId.MAINNET,
tokenAddress,
)
)));
daiWeth = await Fetcher.fetchPairData(
dai,
weth,
);

web3.eth.subscribe('newBlockHeaders')
.on('data', async block => {
console.log(New block received. Block # ${block.number});

  const kyberResults = await Promise.all([
      kyber
        .methods
        .getExpectedRate(
          addresses.tokens.dai, 
          '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', 
          AMOUNT_DAI_WEI
        ) 
        .call(),
      kyber
        .methods
        .getExpectedRate(
          '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', 
          addresses.tokens.dai, 
          AMOUNT_ETH_WEI
        ) 
        .call()
  ]);
  const kyberRates = {
    buy: parseFloat(1 / (kyberResults[0].expectedRate / (10 ** 18))),
    sell: parseFloat(kyberResults[1].expectedRate / (10 ** 18))
  };
  console.log('Kyber ETH/DAI');
  console.log(kyberRates);

  const uniswapResults = await Promise.all([
    daiWeth.getOutputAmount(new TokenAmount(dai, AMOUNT_DAI_WEI)),
    daiWeth.getOutputAmount(new TokenAmount(weth, AMOUNT_ETH_WEI))
  ]);
  const uniswapRates = {
    buy: parseFloat( AMOUNT_DAI_WEI / (uniswapResults[0][0].toExact() * 10 ** 18)),
    sell: parseFloat(uniswapResults[1][0].toExact() / AMOUNT_ETH),
  };
  console.log('Uniswap ETH/DAI');
  console.log(uniswapRates);
})
.on('error', error => {
  console.log(error);
});

}
init();

from eattheblocks.

antonmn avatar antonmn commented on April 19, 2024

Having the same problem ....... any solution?

from eattheblocks.

RolandoDrRobot avatar RolandoDrRobot commented on April 19, 2024

@cherylkw you da man! It worked perfectly

from eattheblocks.

supergav1967 avatar supergav1967 commented on April 19, 2024

Hi all....I am having the same issue as detailed in the thread above! When I install UniSwap SDK I am installing v3? Is there anyway to install a specific SDK version, and also it would appear that SDK v2 allows Fetcher.fetchTokenData and Fetcher.fetchPairData and appeared to work...if so what was the code amendment please?

from eattheblocks.

supergav1967 avatar supergav1967 commented on April 19, 2024

I think uniswap SDK v2 has new features and no longer supports fetchdata method. So try to use Fetcher.fetchTokenData and Fetcher.fetchPairData.

@cherylkw you da man! It worked perfectly

Hi there. What was the code amendments you made please>

from eattheblocks.

NumberXXIV avatar NumberXXIV commented on April 19, 2024

from Batman, in another thread
So you have installed uniswap/sdk @3.0.3 The code requires uniswap/sdk @2.0.5
You can install specific ersions like this:
Npm install @uniswap/[email protected]

from eattheblocks.

jt311 avatar jt311 commented on April 19, 2024

@NumberXXIV thanks so much this worked

from eattheblocks.

JvBug avatar JvBug commented on April 19, 2024

from Batman, in another thread So you have installed uniswap/sdk @3.0.3 The code requires uniswap/sdk @2.0.5 You can install specific ersions like this: Npm install @uniswap/[email protected]

I was having the same issue and this solved it so easily. Thank you!!

from eattheblocks.

CyHunterX avatar CyHunterX commented on April 19, 2024

To elaborate a bit for those in the tutorial who may not be aware of every aspect of object oriented coding structures. If you installed using @uniswap/sdk, and did not indicate a version as of 10/22/2021, you would have installed version 3.0.3.

In this case, in the const used to import values from uniswap (at the top of the code), you'll need to replace the "Token" and "Pair" statements with a single "Fetcher" statement. Then, within your methods in the code, replace "Token.fetchData" and "Pair.fetchData" with "Fetcher.fetchTokenData" and "Fetcher.fetchPairData"

It should look like this, const { ChainId, TokenAmount, Fetcher } = require('@uniswap/sdk'); //import field values from uniswap

Then, within your method,

const init = async () => { //Apply WETH to process - In Uniswap, weth is used to trade ETH. ETH is sent to a weth token and the weth token is used to represent ETH during the trade. const [dai, weth] = await Promise.all( [addresses.tokens.dai, addresses.tokens.weth].map(tokenAddress => ( Fetcher.fetchTokenData( ChainId.MAINNET, tokenAddress, ) ))); const daiWeth = await Fetcher.fetchPairData( dai, weth );

To @wcDogg's point... EatTheBlocks course designers need to modify these details in the instructions or provide additional training on how we can manage version changes for the many different npm installs that are required for the build. It's an expensive course and it's no surprise that people will be frustrated on this one.

Super helpful you make my day :).

from eattheblocks.

miklasz avatar miklasz commented on April 19, 2024

i manage to make it work:
npm uninstall @uniswap/sdk

and then

npm install @uniswap/[email protected]

from eattheblocks.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.