Convierta el script de texto sin formato en un script codificado en hexadecimal en python

Estoy creando un programa (para una altcoin que estoy desarrollando) que debería facilitar la creación de transacciones OP_RETURN. Actualmente tengo algunos problemas para crear el script de forma pitónica (puedo hacerlo a mano, pero no tengo idea de cómo programarlo).

Como ejemplo, el programa toma un script OP_RETURN (p. ej., 6a4c0a0102030405060708090a) y crea una transacción con ese script, por sí mismo. Sin embargo, actualmente debe ingresar el script hexadecimal real en lugar de la cadena que desea enviar a la cadena de bloques.

Mi pregunta es: ¿cuál es la mejor manera de tomar una cadena/int y convertirla en un script codificado en hexadecimal compatible con transacciones? Por ejemplo:

String: OP_RETURN 12345678910
Output: 6a4c0a0102030405060708090a

Muchas gracias a cualquiera que ayude. Les daré algo de bitcoin si logran encontrar una buena solución.

Esta es más una pregunta de programación que una pregunta específica de bitcoin
Toda la información relacionada con bitcoin que necesita está en la especificación: en.bitcoin.it/wiki/Script Aparte de eso, deberá aprender a convertir valores a binario/hexadecimal en python, que es más una cuestión de programación general basada preguntó en el sitio principal de Stack Overflow.

Respuestas (2)

Estoy leyendo las especificaciones . Su cadena hexadecimal debe comenzar con 6a[OP_RETURN opcode] seguido de 4c[OP_PUSHDATA1] seguido de un número de un byte que indica el tamaño (en bytes) de los siguientes datos. Tienes 10 bytes, así que este 0a. Luego vienen tus datos reales, y aquí creo que te equivocaste. En cualquier caso, 0102030405060708090a(en su ejemplo manual) no es ni la codificación hexadecimal de la cadena "12345678910"ni del entero 12345678910. Mira estos fragmentos de python:

>>> from binascii import hexlify
>>> hex(12345678910)
'0x2dfdc1c3e'

>>> hexlify("12345678910".encode()).decode()
'3132333435363738393130'

Así que supongo que necesita aclarar qué representan sus datos y cómo quiere que se codifiquen...

Para todos los que necesiten esta respuesta también: mi amigo creó un programa simple en Python y C++ para hacer exactamente esto. Puedes descargarlo aquí .