Преобразование сценария открытого текста в сценарий с шестнадцатеричным кодированием в python

Я создаю программу (для разрабатываемого мной альткойна), которая должна упростить создание транзакций OP_RETURN. В настоящее время у меня возникают проблемы с созданием скрипта на питоне (я могу сделать это вручную, но не знаю, как его запрограммировать).

Например, программа берет сценарий OP_RETURN (например, 6a4c0a0102030405060708090a) и сама создает транзакцию с этим сценарием. Однако в настоящее время вам нужно ввести фактический шестнадцатеричный скрипт вместо строки, которую вы хотите отправить в блокчейн.

Мой вопрос: как лучше всего взять строку/int и преобразовать ее в скрипт с шестнадцатеричным кодированием, удобный для транзакций? Например:

String: OP_RETURN 12345678910
Output: 6a4c0a0102030405060708090a

Большое спасибо всем, кто помогает. Я дам вам немного биткойнов, если вам удастся найти хорошее решение.

Это больше вопрос программирования, чем вопрос о биткойнах.
Вся необходимая вам информация, связанная с биткойнами, находится в спецификации: en.bitcoin.it/wiki/Script . — спросили на основном сайте Stack Overflow.

Ответы (2)

Я читаю спецификацию . Ваша шестнадцатеричная строка должна начинаться с 6a[OP_RETURN opcode], за которым следует 4c[OP_PUSHDATA1], за которым следует однобайтовое число, указывающее размер (в байтах) следующих данных. У вас есть 10 байт, так что это 0a. Затем пришли ваши фактические данные, и здесь, я думаю, вы ошиблись. В любом случае 0102030405060708090a(в вашем ручном примере) это не шестнадцатеричная кодировка строки "12345678910"или целого числа 12345678910. Посмотрите на эти фрагменты Python:

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

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

Поэтому я думаю, вам нужно уточнить, что представляют ваши данные и как вы хотите их закодировать...

Для всех здесь, кому тоже нужен этот ответ: мой друг создал простую программу на Python и C++, чтобы делать именно это. Вы можете скачать его здесь .