Te enseño como crear un script en Python para consultar el estado de una transacción en la blockchain de Bitcoin. Puedes integrar este código en scripts más grandes que te permitan, por ejemplo, comprobar el estado de la transacción y enviarte una notificación cuando se complete.
- Tiempo de implementación: 5 min
- Nivel de dificultad: Fácil
Copia este script en Python
Copia este script en Python y guárdalo en un archivo con extensión .py, por ejemplo: estado_transaccion.py
import requests
def get_transaction_details(tx_hash):
url = f"https://api.blockchain.com/v3/explorer/tx/{tx_hash}"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
return data
else:
return None
def main():
try:
transaction_hash = input("Introduce el hash de la transacción de Bitcoin: ")
transaction_data = get_transaction_details(transaction_hash)
if transaction_data:
print("\nDetalles de la transacción:")
print(f"Hash de la transacción: {transaction_data['hash']}")
print(f"Fecha y hora: {transaction_data['time']}")
print(f"Cantidad de Bitcoin transferida: {transaction_data['total']} BTC")
print(f"Número de confirmaciones: {transaction_data['confirmations']}")
print(f"Entradas (inputs):")
for input_data in transaction_data['inputs']:
print(f" - Dirección: {input_data['prev_out']['addr']}")
print(f" Monto: {input_data['prev_out']['value']} BTC")
print(f"Salidas (outputs):")
for output_data in transaction_data['out']:
print(f" - Dirección: {output_data['addr']}")
print(f" Monto: {output_data['value']} BTC")
else:
print("Error al consultar la transacción. Verifica el hash ingresado.")
except Exception as e:
print(f"Error: {str(e)}")
if __name__ == "__main__":
main()
Instala las siguientes librerías
Para que el script funcione correctamente, necesitas instalar «Requests«, una biblioteca que te permite realizar solicitudes HTTP para acceder a la API de Blockchain.com y obtener información sobre transacciones de Bitcoin. Puedes instalarla con el siguiente comando:
pip install requests
Ejecuta el script
Ejecútalo desde la línea de comandos, te pedirá el ID de la transacción. Una vez introducido y hechas las comprobaciones, te mostrará toda la información relativa al estado de la transacción.
Ejecución:
python estado_transaccion.py
El script te pedirá que introduzcas el hash de la transacción de Bitcoin. Por ejemplo:
Introduce el hash de la transacción de Bitcoin: 5b8a7c9e4e8b7d9f3a7e1b2c6d5f8a9b
El script mostrará los detalles de la transacción, incluyendo el hash, la fecha y hora, la cantidad de Bitcoin transferida, el número de confirmaciones, las entradas y las salidas:
Detalles de la transacción:
Hash de la transacción: 5b8a7c9e4e8b7d9f3a7e1b2c6d5f8a9b
Fecha y hora: 2023-04-05 14:30:00
Cantidad de Bitcoin transferida: 0.012 BTC
Número de confirmaciones: 6
Entradas (inputs):
- Dirección: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Monto: 0.015 BTC
Salidas (outputs):
- Dirección: 3KzJr6Xm6kYVjmdFhWfGvG7ayb2uVvJrnf
Monto: 0.012 BTC
Explicación del código
Si te gusta la programación y tienes curiosidad por entender el código de arriba, o incluso modificarlo a tu gusto para añadir o modificar funcionalidades, aquí te lo explico:
- Importación de la biblioteca requests: Se importa la biblioteca
requests
, que es una popular biblioteca de Python para realizar solicitudes HTTP. Se usa para interactuar con APIs web. - Definición de
get_transaction_details(tx_hash)
:- Esta función toma un parámetro
tx_hash
, que es el hash (identificador único) de una transacción de Bitcoin. - Construye una URL para acceder a la API de Blockchain.com usando el hash de la transacción. La API proporciona información detallada sobre transacciones específicas de Bitcoin.
- Hace una solicitud GET a la API utilizando
requests.get()
. - Si la respuesta de la API es exitosa (código de estado HTTP 200), la función convierte la respuesta JSON en un diccionario de Python utilizando
response.json()
y devuelve este diccionario. - Si la solicitud no es exitosa, devuelve
None
.
- Esta función toma un parámetro
- Definición de
main()
:- La función
main
es el punto de entrada del script. - Solicita al usuario que ingrese el hash de una transacción de Bitcoin a través de la consola.
- Llama a la función
get_transaction_details()
con el hash de la transacción proporcionado por el usuario y guarda el resultado entransaction_data
. - Si
transaction_data
no esNone
(lo que significa que la solicitud a la API fue exitosa), imprime los detalles de la transacción, como:- El hash de la transacción.
- La fecha y hora de la transacción.
- La cantidad total de Bitcoin transferida en la transacción.
- El número de confirmaciones de la transacción.
- Detalles sobre las entradas (inputs) de la transacción, incluyendo la dirección de Bitcoin desde la que se enviaron los fondos y la cantidad enviada desde cada dirección.
- Detalles sobre las salidas (outputs) de la transacción, incluyendo la dirección de Bitcoin a la que se enviaron los fondos y la cantidad enviada a cada dirección.
- Si
transaction_data
esNone
o si ocurre un error durante la ejecución del script (por ejemplo, un error de conexión), se muestra un mensaje de error al usuario.
- La función
- Ejecución condicional
if __name__ == "__main__"
:- Este bloque asegura que
main()
solo se ejecute cuando el script se ejecute directamente (es decir, no cuando se importa como un módulo en otro script). Esto es una práctica estándar en Python para scripts que son tanto ejecutables como importables.
- Este bloque asegura que