Konvertieren Sie Klartext-Skript in hexadezimal codiertes Skript in Python

Ich erstelle ein Programm (für einen Altcoin, den ich entwickle), das es einfach machen soll, OP_RETURN-Transaktionen zu erstellen. Derzeit habe ich einige Probleme damit, das Skript tatsächlich pythonisch zu erstellen (ich kann es von Hand machen, aber keine Ahnung, wie ich es programmieren soll).

Als Beispiel nimmt das Programm ein OP_RETURN-Skript (z. B. 6a4c0a0102030405060708090a) und erstellt selbst eine Transaktion mit diesem Skript. Derzeit müssen Sie jedoch das eigentliche Hex-Skript anstelle der Zeichenfolge eingeben, die Sie an die Blockchain senden möchten.

Meine Frage ist: Was ist der beste Weg, um eine Zeichenfolge/Int zu nehmen und sie in ein transaktionsfreundliches Hex-codiertes Skript zu konvertieren? Zum Beispiel:

String: OP_RETURN 12345678910
Output: 6a4c0a0102030405060708090a

Vielen Dank an alle, die helfen. Ich gebe euch allen etwas Bitcoin, wenn ihr eine gute Lösung findet.

Dies ist eher eine Programmierfrage als eine Bitcoin-spezifische Frage
Alle Bitcoin-bezogenen Informationen, die Sie benötigen, finden Sie in der Spezifikation: en.bitcoin.it/wiki/Script . Abgesehen davon müssen Sie lernen, Werte in Binär/Hex in Python umzuwandeln, was eher auf einer allgemeinen Programmierfrage basiert gefragt auf der Hauptseite von Stack Overflow.

Antworten (2)

Ich lese die Spezifikation . Ihr Hex-String muss mit 6a[OP_RETURN opcode] beginnen, gefolgt von 4c[OP_PUSHDATA1], gefolgt von einer Ein-Byte-Zahl, die die Größe (in Byte) der folgenden Daten angibt. Sie haben 10 Bytes, also diese 0a. Dann kommen Ihre tatsächlichen Daten, und hier haben Sie meiner Meinung nach einen Fehler gemacht. In jedem Fall 0102030405060708090aist (in Ihrem Beispiel von Hand) weder die Hex-Codierung der Zeichenfolge "12345678910"noch der Integer 12345678910. Sehen Sie sich diese Python-Snippets an:

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

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

Ich denke, Sie müssen klären, was Ihre Daten darstellen und wie sie codiert werden sollen ...

Für alle hier, die auch diese Antwort brauchen: Mein Freund hat ein einfaches Programm in Python und C++ erstellt, um genau das zu tun. Sie können es hier herunterladen .