Created
December 19, 2019 19:39
-
-
Save mounibec/5e39c4c1ffb9de3f8781c29761b902c2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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