DEV Community

ssadek1976
ssadek1976

Posted on

UNPREDICTABLE_GAS_LIMIT when calling estimateGas function

Hello,

When I issue npx ts-node .ts and attempt to call out estimateGas function on sushiswap router as shown in below code snippet it triggers UNPREDICTABLE_GAS_LIMIT error (see below output error log #1).

`const gasLimit = await sushiEthDai.estimateGas.swap(
            !shouldStartEth ? DAI_TRADE : 0,
            shouldStartEth ? ETH_TRADE : 0,
            flashLoanerAddress,
            ethers.utils.toUtf8Bytes('1')
          );`
Enter fullscreen mode Exit fullscreen mode

Output Error Log #1
Error: cannot estimate gas; transaction may fail or may require manual gas limit See: https://links.ethers.org/v5-errors-UNPREDICTABLE_GAS_LIMIT
at Logger.makeError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:269:28)
at Logger.throwError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:281:20)
at checkError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\src.ts\json-rpc-provider.ts:78:20)
at JsonRpcProvider. (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\src.ts\json-rpc-provider.ts:642:20)
at step (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\lib\json-rpc-provider.js:48:23)
at Object.throw (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\lib\json-rpc-provider.js:29:53)
at rejected (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\lib\json-rpc-provider.js:21:65)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
reason: 'execution reverted',
code: 'UNPREDICTABLE_GAS_LIMIT',
method: 'estimateGas',
transaction: {
from: 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
to: '0xC3D03e4F041Fd4cD388c549Ee2A29a9E5075882f',
data: '0x022c0d9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000a7564f968608ad09236b794836f93a5b76dfd53d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000',
accessList: null
},
error: Error: processing response error (body="{\"jsonrpc\":\"2.0\",\"id\":56,\"error\":{\"code\":-32000,\"message\":\"execution reverted\"}}", error={"code":-32000}, requestBody="{\"method\":\"eth_estimateGas\",\"params\":[{\"from\":\"0x825c5e7d385f9f07e2312154b0cf3cdd06396869\",\"to\":\"0xc3d03e4f041fd4cd388c549ee2a29a9e5075882f\",\"data\":\"0x022c0d9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000a7564f968608ad09236b794836f93a5b76dfd53d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000\"}],\"id\":56,\"jsonrpc\":\"2.0\"}", requestMethod="POST", url="https://mainnet.infura.io/v3/xxxxxxxxxxxxxxxx", code=SERVER_ERROR, version=web/5.7.1)
at Logger.makeError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:269:28)
at Logger.throwError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:281:20)
at C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\src.ts\index.ts:341:28
at step (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:33:23)

at Object.next (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:14:53)
at fulfilled (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:5:58)

at processTicksAndRejections (node:internal/process/task_queues:96:5) {
reason: 'processing response error',
code: 'SERVER_ERROR',
body: '{"jsonrpc":"2.0","id":56,"error":{"code":-32000,"message":"execution reverted"}}',
error: Error: execution reverted
at getResult (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\src.ts\json-rpc-provider.ts:142:28)
at processJsonFunc (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\src.ts\index.ts:383:22)
at C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\src.ts\index.ts:320:42

at step (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:33:23)

at Object.next (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:14:53)
at fulfilled (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:5:58)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
code: -32000,
data: undefined
},
requestBody: '{"method":"eth_estimateGas","params":[{"from":"xxxxxxxxxxxxxxxxxxxxxxxx","to":"0xc3d03e4f041fd4cd388c549ee2a29a9e5075882f","data":"0x022c0d9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000a7564f968608ad09236b794836f93a5b76dfd53d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000"}],"id":56,"jsonrpc":"2.0"}',
requestMethod: 'POST',
url: 'https://mainnet.infura.io/v3/xxxxxxxxxxxxxxxxxxxxx'
}
}

I also tried overriding the gas limit when passing it as a parameter into the same function shown below but it returns this time a slightly different error Error: cannot override "gas" (see below output error log #2).

`const gasLimit = await sushiEthDai.estimateGas.swap(
            !shouldStartEth ? DAI_TRADE : 0,
            shouldStartEth ? ETH_TRADE : 0,
            flashLoanerAddress,
            ethers.utils.toUtf8Bytes('1'), {
                gas: 6721975
            }
          );`
Enter fullscreen mode Exit fullscreen mode

Output Error Log #2
Error: cannot estimate gas; transaction may fail or may require manual gas limit See: https://links.ethers.org/v5-errors-UNPREDICTABLE_GAS_LIMIT
at Logger.makeError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:269:28)
at Logger.throwError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:281:20)
at checkError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\src.ts\json-rpc-provider.ts:78:20)
at JsonRpcProvider. (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\src.ts\json-rpc-provider.ts:642:20)
at step (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\lib\json-rpc-provider.js:48:23)
at Object.throw (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\lib\json-rpc-provider.js:29:53)
at rejected (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\lib\json-rpc-provider.js:21:65)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
reason: 'execution reverted',
code: 'UNPREDICTABLE_GAS_LIMIT',
method: 'estimateGas',
transaction: {
from: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
to: '0xC3D03e4F041Fd4cD388c549Ee2A29a9E5075882f',
data: '0x022c0d9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000a7564f968608ad09236b794836f93a5b76dfd53d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000',
accessList: null
},
error: Error: processing response error (body="{\"jsonrpc\":\"2.0\",\"id\":56,\"error\":{\"code\":-32000,\"message\":\"execution reverted\"}}", error={"code":-32000}, requestBody="{\"method\":\"eth_estimateGas\",\"params\":[{\"from\":\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"to\":\"0xc3d03e4f041fd4cd388c549ee2a29a9e5075882f\",\"data\":\"0x022c0d9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000a7564f968608ad09236b794836f93a5b76dfd53d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000\"}],\"id\":56,\"jsonrpc\":\"2.0\"}", requestMethod="POST", url="https://mainnet.infura.io/v3/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", code=SERVER_ERROR, version=web/5.7.1)
at Logger.makeError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:269:28)
at Logger.throwError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:281:20)
at C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\src.ts\index.ts:341:28
at step (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:33:23)

at Object.next (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:14:53)
at fulfilled (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:5:58)

at processTicksAndRejections (node:internal/process/task_queues:96:5) {
reason: 'processing response error',
code: 'SERVER_ERROR',
body: '{"jsonrpc":"2.0","id":56,"error":{"code":-32000,"message":"execution reverted"}}',
error: Error: execution reverted
at getResult (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\providers\src.ts\json-rpc-provider.ts:142:28)
at processJsonFunc (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\src.ts\index.ts:383:22)
at C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\src.ts\index.ts:320:42

at step (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:33:23)

at Object.next (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:14:53)
at fulfilled (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\web\lib\index.js:5:58)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
code: -32000,
data: undefined
},
requestBody: '{"method":"eth_estimateGas","params":[{"from":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","to":"0xc3d03e4f041fd4cd388c549ee2a29a9e5075882f","data":"0x022c0d9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000a7564f968608ad09236b794836f93a5b76dfd53d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000"}],"id":56,"jsonrpc":"2.0"}',
requestMethod: 'POST',
url: 'https://mainnet.infura.io/v3/xxxxxxxxxxxxxxxxxxxxxxxxxx'
}
}
Error: cannot override "gas" (operation="overrides", overrides=["gas"], code=UNSUPPORTED_OPERATION, version=contracts/5.7.0)
at Logger.makeError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:269:28)
at Logger.throwError (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\logger\src.ts\index.ts:281:20)
at C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\contracts\src.ts\index.ts:304:16

at step (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\contracts\lib\index.js:48:23)

at Object.next (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\contracts\lib\index.js:29:53)
at fulfilled (C:\Samuel\Blockchain\Flashloan-arbitrage-bot-uniswap-v2\node_modules\@ethersproject\contracts\lib\index.js:20:58)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
reason: 'cannot override "gas"',
code: 'UNSUPPORTED_OPERATION',

operation: 'overrides',
overrides: [ 'gas' ]
}

Not sure if tsnode accepts command line options for setting gas limits or directly within tsconfig.json. This last case, I have consulted the tsconfig docs but it says nothing or no mention about gas limits. So Iยดm stuck here.

Any help would be greatly appreciated.

Thank you,
Samuel

Top comments (0)