es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

web3 python getAmountsOut ejecución revertida

Logré configurar esta función que devuelve el valor del token en USD de un contrato, todo funciona bien en algunos contratos, pero en otros contratos obtengo el error “execution reverted” al llamar a la función “getAmountsOut”, ¿alguien tiene alguna idea de qué puede ser? Obtengo los contratos del mismo lugar en bscscan y para algunos funciona y para otros no.

bsc = ‘https://bsc-dataseed.binance.org/’
web3 = Web3(Web3.HTTPProvider(bsc))
panRouterContractAddress = ‘0x10ED43C718714eb63d5aA57B78B54704E256024E’
panabi = ‘[{…}]’
contractbuy = web3.eth.contract(address=panRouterContractAddress, abi=panabi) # PANCAKESWAP

def get_price(self):
try:
# Token de moneda base y ABI
baseCurrency = web3.toChecksumAddress(“0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56”) # BUSD

    # Obtener el símbolo del token
    sellTokenContract = web3.eth.contract(self.token_to_buy, abi=sellAbi)
    symbol = sellTokenContract.functions.symbol().call()

    # Instancia y contrato del token a vender
    tokenToSell = web3.toChecksumAddress(self.token_to_buy)  # PRECIO DEL TOKEN
    sellAmount = web3.toWei(1, 'ether')

    # Calcular la cantidad mínima de tokens a recibir
    amountOut = contractbuy.functions.getAmountsOut(sellAmount, [tokenToSell, baseCurrency]).call() # Error aquí

    amountOutMin = web3.fromWei(int(amountOut[1]), 'ether')
    print("Valor del token: ", str(amountOutMin))
    str_format = "{:." + self.decs_usd + "f}"
    return float(str_format.format(amountOutMin)), symbol

except Exception as ex:
    print("ERRO:ver_preco:", ex)
    return "", ""

contratos ok:

https://bscscan.com/address/0x5649e392a1bac3e21672203589adf8f6c99f8db3

https://bscscan.com/address/0x00e1656e45f18ec6747f5a8496fd39b50b38396d

contratos con error:

https://bscscan.com/address/0x9376e6b29b5422f38391a2a315623cb853c3c68e

https://bscscan.com/address/0xe786d5a4b985bfe5e371f8e94413cfb440f6618a

si alguien puede explicarme por qué ocurre este error en algunos tokens y no en otros, y cómo puedo obtener detalles del mensaje de error además de “execution reverted”

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es posible que los contratos que están causando el error tengan parámetros o funcionalidades diferentes a los contratos que funcionan correctamente. El mensaje de error “execution reverted” generalmente significa que hubo un problema en la ejecución de la transacción y fue revertida.

    Para obtener mensajes de error más detallados, puedes intentar utilizar el bloque try-except para capturar la excepción específica que está siendo lanzada e imprimir el mensaje de error. Esto puede proporcionar más información sobre la causa del problema.

    Otra opción es revisar el código del contrato y asegurarte de que sea válido y funcional. Podría ser un problema con el propio contrato en lugar de tu código. También puedes intentar comunicarte con los desarrolladores del contrato para obtener más información sobre por qué se está produciendo el error.

Comments are closed.