Intentando intercambiar USDC a ETH con Uniswap y Ethers, pero obtengo errores todo el tiempo.
async function swapUsdcToEth(amount, walledAddress) { const usdc = await Fetcher.fetchTokenData(chainId, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'); const eth = await Fetcher.fetchTokenData(chainId, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'); const pair = await Fetcher.fetchPairData(usdc, eth); const route = new Route([pair], usdc); const amountIn = new TokenAmount(usdc, amount); const trade = new Trade(route, amountIn, TradeType.EXACT_INPUT); const slippageTolerance = new Percent('50', '10000'); const value = ethers.BigNumber.from(trade.inputAmount.raw.toString()).toHexString(); const amountOutMin = ethers.BigNumber.from(trade.minimumAmountOut(slippageTolerance).raw.toString()).toHexString(); const deadline = Math.floor(Date.now() / 1000) + 60 * 20; const uniswapRouterV2Address = '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D'; const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/b9fkdmkdkdv4937b52ea9637cf1d1bd'); const signer = new ethers.Wallet(walledAddress, provider); const uniswap = new ethers.Contract( uniswapRouterV2Address, ['function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)'], signer ); try { const tx = await uniswap.swapExactTokensForETH(value, amountOutMin, [walledAddress], walledAddress, deadline); const receipt = await tx.wait(); console.log('transaction was mined in block', receipt.blockNumber); } catch (e) { console.log(e); } }Recibir errores como ese: ' Error: no se puede estimar el gas; transacción puede fallar o puede requerir límite de gas manual '. ¿Que estoy haciendo mal?