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.

web3py python obtener el valor exacto de intercambio de tokens

Estoy utilizando web3py para intercambiar tokens, utilizando la función “swapExactETHForTokens”, está funcionando perfectamente, con el hash de retorno utilizo la función “web3.eth.get_transaction_receipt” para obtener los detalles de la transacción, pero no pude encontrar cómo obtener la cantidad exacta de tokens que entraron a mi billetera.

Encontré otro tema respondido con la misma pregunta, pero no entendí la respuesta o soy demasiado nuevo en web3py para esto.

Lo que realmente quiero es obtener el valor final del token obtenido en el intercambio como se muestra en la imagen a continuación

Imagen

No sé si estoy buscando esta información de la manera incorrecta, pero no he encontrado ningún otro material sobre el tema en web3py.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la cantidad exacta de tokens que se depositaron en tu billetera después de un intercambio exitoso de tokens utilizando la función “swapExactETHForTokens” en web3py, debes analizar el recibo de la transacción utilizando el campo “logs”. Este campo contiene una lista de registros de eventos emitidos durante la transacción, incluido el evento “Transfer” que indica la transferencia de tokens desde el contrato a tu dirección.

    Aquí tienes un ejemplo de código para lograr esto:

    from web3 import Web3
    
    # inicializa una instancia de web3
    w3 = Web3()
    
    # configura la dirección del contrato y el hash de la transacción
    contract_address = "0x1234567890abcdef"
    txn_hash = "0xabcdef1234567890"
    
    # obtén el recibo de la transacción
    receipt = w3.eth.get_transaction_receipt(txn_hash)
    
    # analiza los registros para encontrar el evento Transfer
    for log in receipt['logs']:
        if log['address'] == w3.toChecksumAddress(contract_address) and log['topics'][0] == w3.keccak(text='Transfer(address,address,uint256)').hex():
            # decodifica los datos del evento
            event = w3.eth.contract(address=contract_address, abi=ABI).events.Transfer().processLog(log)
            # obtén la cantidad de tokens transferidos
            token_amount = event.args.value
    
    # imprime la cantidad de tokens
    print(token_amount)
    

    En este ejemplo, reemplaza “0x1234567890abcdef” con la dirección del contrato de tokens y “0xabcdef1234567890” con el hash de tu transacción.

    Ten en cuenta que también debes proporcionar el ABI del contrato de tokens para decodificar los datos del evento. Reemplaza “ABI” con el ABI real del contrato de tokens.

Comments are closed.