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.
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í .
colisionador de mallas
Jestin