Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

328
Vistas
¿Cómo intercambiar tokens de Uniswap en el contrato mismo? ValueError: estimación de gas fallida: 'ejecución revertida'

Estoy buscando realizar un intercambio Uniswap V3 de WMATIC a USDC. Escribí e implementé mi contacto en Polygon Mumbai Testnet usando brownie-eth.

Sin embargo, al llamar a la función de intercambio en el contrato, aparece el siguiente error:

ValueError: estimación de gas fallida: 'ejecución revertida'. Es probable que esta transacción se revierta. Si desea transmitir, debe establecer el límite de gas manualmente.

No puedo localizar exactamente qué causa que el intercambio falle. Debería haber WMATIC más que suficiente en el contrato para ejecutar el intercambio: https://mumbai.polygonscan.com/address/0xED85D87Ddf25036d8ea1F03005900f5524D65a26

 pragma solidity ^0.8.0; import {TokenSwap} from "./uniswap.sol"; import {ISwapRouter} from '../interfaces/ISwapRouter.sol'; import {TransferHelper} from '../contracts/uniswap/TransferHelper.sol'; contract swapTest { address public immutable tokenIn = 0xb685400156cF3CBE8725958DeAA61436727A30c3; address public immutable tokenOut = 0xe6b8a5CF854791412c1f6EFC7CAf629f5Df1c747; uint public immutable amount = 0.01*(1 ether); // Uniswap Config address private constant SWAP_ROUTER = 0xE592427A0AEce92De3Edee1F18E0157C05861564; ISwapRouter public immutable swapRouter = ISwapRouter(SWAP_ROUTER); uint24 public constant poolFee = 3000; // Safely transfer tokens function swapExactInputSingle() public returns (uint256 amountOut) { TransferHelper.safeApprove(tokenIn, SWAP_ROUTER, amount); ISwapRouter.ExactInputSingleParams memory params = ISwapRouter .ExactInputSingleParams({ tokenIn: tokenIn, tokenOut: tokenOut, fee: 3000, recipient: address(this), deadline: block.timestamp, amountIn: amount, amountOutMinimum: 0, sqrtPriceLimitX96: 0 }); amountOut = swapRouter.exactInputSingle(params); } }

Me gustaría que el intercambio se realice en el contrato en sí (sin tener que aprobar el contrato para gastar el saldo de la billetera y que el remitente reciba el intercambio). Por eso cambié el destinatario para que sea la dirección (esto) , y no incluye una función de transferencia segura.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda