Skip to content

Instantly share code, notes, and snippets.

@mounibec
Created December 19, 2019 19:39
Show Gist options
  • Save mounibec/5e39c4c1ffb9de3f8781c29761b902c2 to your computer and use it in GitHub Desktop.
Save mounibec/5e39c4c1ffb9de3f8781c29761b902c2 to your computer and use it in GitHub Desktop.
const {ParaSwap} = require("paraswap");
const BN = require('bignumber.js');
const paraSwap = new ParaSwap(1, 'https://paraswap.io/api/v1');
async function getTokens(){
return await paraSwap.getTokens();
}
async function getPrice(tokenFrom, tokenTo, srcAmount){
return await paraSwap.getRate(tokenFrom, tokenTo, srcAmount);
}
async function buildTx(tokenFrom, tokenTo, srcAmount, minDestAmount, priceRoute, userAddress){
return await paraSwap.buildTx(tokenFrom, tokenTo, srcAmount, minDestAmount, priceRoute, userAddress);
}
async function trade(from, to, _srcAmount, myAddress) {
const tokens = await getTokens();
const fromToken = tokens.find(token => token.symbol === from);
const toToken = tokens.find(token => token.symbol === to);
const srcAmount = new BN(_srcAmount).times(10**fromToken.decimals);
const priceRoute = await getPrice(fromToken.address, toToken.address, srcAmount);
const minDestAmount = new BN(priceRoute.amount).times(0.99).toFixed();
const transaction = await buildTx(fromToken.address, toToken.address, srcAmount, minDestAmount, priceRoute, myAddress);
return transaction;
}
trade("ETH", "DAI", 100, "0x80B1D1299602aedc567F4DC8db19076d186C6558")
.then(transaction => console.log('transaction', transaction));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment