I am just starting out with ethers.js and smart contracts in general. I am attempting to read the price between two tokens (MATIC => WETH) using the getAmountsOut() function on the sushiswap router (0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506). My code is below.
<code>const ethers = require('ethers');
const {
addressSushiFactory,
addressSushiRouter,
addressOneinchFactory,
addressOneinchRouter,
addressFrom,
addressTo
} = require('./addressList');
const {
decimalsABI,
sushiGetAmountsOutABI
} = require('./abiList');
const provider = new ethers.providers.JsonRpcProvider("https://polygon-mainnet.infura.io/v3/###########");
const contractRouter = new ethers.Contract(addressSushiRouter, sushiGetAmountsOutABI, provider);
const GetPrices = async (humanIn) => {
const contractDecimalsFrom = new ethers.Contract(addressFrom, decimalsABI, provider);
const decimalsFrom = await contractDecimalsFrom.decimals();
const bigIn = ethers.utils.parseUnits(humanIn, decimalsFrom).toString();
const amountsOut = await contractRouter.getAmountsOut(bigIn, [addressFrom, addressTo]);
console.log(bigOut);
}
GetPrices("1000");
</code>
<code>const ethers = require('ethers');
const {
addressSushiFactory,
addressSushiRouter,
addressOneinchFactory,
addressOneinchRouter,
addressFrom,
addressTo
} = require('./addressList');
const {
decimalsABI,
sushiGetAmountsOutABI
} = require('./abiList');
const provider = new ethers.providers.JsonRpcProvider("https://polygon-mainnet.infura.io/v3/###########");
const contractRouter = new ethers.Contract(addressSushiRouter, sushiGetAmountsOutABI, provider);
const GetPrices = async (humanIn) => {
const contractDecimalsFrom = new ethers.Contract(addressFrom, decimalsABI, provider);
const decimalsFrom = await contractDecimalsFrom.decimals();
const bigIn = ethers.utils.parseUnits(humanIn, decimalsFrom).toString();
const amountsOut = await contractRouter.getAmountsOut(bigIn, [addressFrom, addressTo]);
console.log(bigOut);
}
GetPrices("1000");
</code>
const ethers = require('ethers');
const {
addressSushiFactory,
addressSushiRouter,
addressOneinchFactory,
addressOneinchRouter,
addressFrom,
addressTo
} = require('./addressList');
const {
decimalsABI,
sushiGetAmountsOutABI
} = require('./abiList');
const provider = new ethers.providers.JsonRpcProvider("https://polygon-mainnet.infura.io/v3/###########");
const contractRouter = new ethers.Contract(addressSushiRouter, sushiGetAmountsOutABI, provider);
const GetPrices = async (humanIn) => {
const contractDecimalsFrom = new ethers.Contract(addressFrom, decimalsABI, provider);
const decimalsFrom = await contractDecimalsFrom.decimals();
const bigIn = ethers.utils.parseUnits(humanIn, decimalsFrom).toString();
const amountsOut = await contractRouter.getAmountsOut(bigIn, [addressFrom, addressTo]);
console.log(bigOut);
}
GetPrices("1000");
However, when i run it i recieve the error:
<code>var error = new Error(message);
^
Error: missing revert data in call exception; Transaction reverted without a reason string [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ] (error={"reason":"processing response error","code":"SERVER_ERROR","body":"{"jsonrpc":"2.0","id":46,"error":{"code":-32000,"message":"execution reverted"}}","error":{"code":-32000},"requestBody":"{"method":"eth_call","params":[{"to":"0x1b02da8cb0d097eb8d57a175b88c7d8b47997506","data":"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010100000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619"},"latest"],"id":46,"jsonrpc":"2.0"}","requestMethod":"POST","url":"https://polygon-mainnet.infura.io/v3/1c907e346a334bd9b230b2ab851aaca0"}, data="0x", code=CALL_EXCEPTION, version=providers/5.6.5)
at Logger.makeError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:233:21)
at Logger.throwError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:242:20)
at checkError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:103:16)
at JsonRpcProvider.<anonymous> (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:687:47)
at step (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:48:23)
at Object.throw (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:29:53)
at rejected (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:21:65)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
reason: 'missing revert data in call exception; Transaction reverted without a reason string',
code: 'CALL_EXCEPTION',
error: Error: processing response error (body="{"jsonrpc":"2.0","id":46,"error":{"code":-32000,"message":"execution reverted"}}", error={"code":-32000}, requestBody="{"method":"eth_call","params":[{"to":"0x1b02da8cb0d097eb8d57a175b88c7d8b47997506","data":"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010100000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619"},"latest"],"id":46,"jsonrpc":"2.0"}", requestMethod="POST", url="https://polygon-mainnet.infura.io/v3/1c907e346a334bd9b230b2ab851aaca0", code=SERVER_ERROR, version=web/5.6.0)
at Logger.makeError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:233:21)
at Logger.throwError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:242:20)
at /Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:305:32
at step (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:33:23)
at Object.next (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:14:53)
at fulfilled (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:5:58)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
reason: 'processing response error',
code: 'SERVER_ERROR',
body: '{"jsonrpc":"2.0","id":46,"error":{"code":-32000,"message":"execution reverted"}}',
error: Error: execution reverted
at getResult (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:170:21)
at processJsonFunc (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:348:22)
at /Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:280:46
at step (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:33:23)
at Object.next (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:14:53)
at fulfilled (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:5:58)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: -32000,
data: undefined
},
requestBody: '{"method":"eth_call","params":[{"to":"0x1b02da8cb0d097eb8d57a175b88c7d8b47997506","data":"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010100000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619"},"latest"],"id":46,"jsonrpc":"2.0"}',
requestMethod: 'POST',
url: 'https://polygon-mainnet.infura.io/v3/1c907e346a334bd9b230b2ab851aaca0'
},
data: '0x'
}
Node.js v22.4.0
</code>
<code>var error = new Error(message);
^
Error: missing revert data in call exception; Transaction reverted without a reason string [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ] (error={"reason":"processing response error","code":"SERVER_ERROR","body":"{"jsonrpc":"2.0","id":46,"error":{"code":-32000,"message":"execution reverted"}}","error":{"code":-32000},"requestBody":"{"method":"eth_call","params":[{"to":"0x1b02da8cb0d097eb8d57a175b88c7d8b47997506","data":"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010100000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619"},"latest"],"id":46,"jsonrpc":"2.0"}","requestMethod":"POST","url":"https://polygon-mainnet.infura.io/v3/1c907e346a334bd9b230b2ab851aaca0"}, data="0x", code=CALL_EXCEPTION, version=providers/5.6.5)
at Logger.makeError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:233:21)
at Logger.throwError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:242:20)
at checkError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:103:16)
at JsonRpcProvider.<anonymous> (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:687:47)
at step (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:48:23)
at Object.throw (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:29:53)
at rejected (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:21:65)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
reason: 'missing revert data in call exception; Transaction reverted without a reason string',
code: 'CALL_EXCEPTION',
error: Error: processing response error (body="{"jsonrpc":"2.0","id":46,"error":{"code":-32000,"message":"execution reverted"}}", error={"code":-32000}, requestBody="{"method":"eth_call","params":[{"to":"0x1b02da8cb0d097eb8d57a175b88c7d8b47997506","data":"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010100000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619"},"latest"],"id":46,"jsonrpc":"2.0"}", requestMethod="POST", url="https://polygon-mainnet.infura.io/v3/1c907e346a334bd9b230b2ab851aaca0", code=SERVER_ERROR, version=web/5.6.0)
at Logger.makeError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:233:21)
at Logger.throwError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:242:20)
at /Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:305:32
at step (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:33:23)
at Object.next (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:14:53)
at fulfilled (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:5:58)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
reason: 'processing response error',
code: 'SERVER_ERROR',
body: '{"jsonrpc":"2.0","id":46,"error":{"code":-32000,"message":"execution reverted"}}',
error: Error: execution reverted
at getResult (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:170:21)
at processJsonFunc (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:348:22)
at /Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:280:46
at step (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:33:23)
at Object.next (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:14:53)
at fulfilled (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:5:58)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: -32000,
data: undefined
},
requestBody: '{"method":"eth_call","params":[{"to":"0x1b02da8cb0d097eb8d57a175b88c7d8b47997506","data":"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010100000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619"},"latest"],"id":46,"jsonrpc":"2.0"}',
requestMethod: 'POST',
url: 'https://polygon-mainnet.infura.io/v3/1c907e346a334bd9b230b2ab851aaca0'
},
data: '0x'
}
Node.js v22.4.0
</code>
var error = new Error(message);
^
Error: missing revert data in call exception; Transaction reverted without a reason string [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ] (error={"reason":"processing response error","code":"SERVER_ERROR","body":"{"jsonrpc":"2.0","id":46,"error":{"code":-32000,"message":"execution reverted"}}","error":{"code":-32000},"requestBody":"{"method":"eth_call","params":[{"to":"0x1b02da8cb0d097eb8d57a175b88c7d8b47997506","data":"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010100000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619"},"latest"],"id":46,"jsonrpc":"2.0"}","requestMethod":"POST","url":"https://polygon-mainnet.infura.io/v3/1c907e346a334bd9b230b2ab851aaca0"}, data="0x", code=CALL_EXCEPTION, version=providers/5.6.5)
at Logger.makeError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:233:21)
at Logger.throwError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:242:20)
at checkError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:103:16)
at JsonRpcProvider.<anonymous> (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:687:47)
at step (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:48:23)
at Object.throw (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:29:53)
at rejected (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:21:65)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
reason: 'missing revert data in call exception; Transaction reverted without a reason string',
code: 'CALL_EXCEPTION',
error: Error: processing response error (body="{"jsonrpc":"2.0","id":46,"error":{"code":-32000,"message":"execution reverted"}}", error={"code":-32000}, requestBody="{"method":"eth_call","params":[{"to":"0x1b02da8cb0d097eb8d57a175b88c7d8b47997506","data":"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010100000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619"},"latest"],"id":46,"jsonrpc":"2.0"}", requestMethod="POST", url="https://polygon-mainnet.infura.io/v3/1c907e346a334bd9b230b2ab851aaca0", code=SERVER_ERROR, version=web/5.6.0)
at Logger.makeError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:233:21)
at Logger.throwError (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/logger/lib/index.js:242:20)
at /Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:305:32
at step (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:33:23)
at Object.next (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:14:53)
at fulfilled (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:5:58)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
reason: 'processing response error',
code: 'SERVER_ERROR',
body: '{"jsonrpc":"2.0","id":46,"error":{"code":-32000,"message":"execution reverted"}}',
error: Error: execution reverted
at getResult (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:170:21)
at processJsonFunc (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:348:22)
at /Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:280:46
at step (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:33:23)
at Object.next (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:14:53)
at fulfilled (/Users/callumfrederiksen/Documents/arbitrage/node_modules/@ethersproject/web/lib/index.js:5:58)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: -32000,
data: undefined
},
requestBody: '{"method":"eth_call","params":[{"to":"0x1b02da8cb0d097eb8d57a175b88c7d8b47997506","data":"0xd06ca61f0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010100000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619"},"latest"],"id":46,"jsonrpc":"2.0"}',
requestMethod: 'POST',
url: 'https://polygon-mainnet.infura.io/v3/1c907e346a334bd9b230b2ab851aaca0'
},
data: '0x'
}
Node.js v22.4.0
Could someone please help me with this?
I have attached my code and the error but i cannot find anything else online