Transaktion mit Python + Raw-Protokoll senden

Vor zwei Tagen habe ich ein paar Artikel über die Verwendung des Raw-Bitcoin-Protokolls gefunden, und jetzt versuche ich immer noch, eine Transaktion zu senden.

Mein Code basiert auf dieser Klasse , und wenn ich all diese Bitcoin-Magie richtig verstehe, muss ich meine rohe Eingabetransaktion mit dem privaten Schlüssel für die Adresse signieren 1LwPhYQi4BRBuuyWSGVeb6kPrTqpSVmoYzund meinen öffentlichen Schlüssel direkt danach hinzufügen - und es wird ein gültiges Entsperrskript sein ?

Hier ist ein Teil meines Codes, den ich vollständig aus dem vorherigen Link kopiert habe:

tx_in_count = struct.pack("<B", 1)
tx_in = {}                                                                                                                                                                                                     tx_in["outpoint_hash"] = flip_byte_order(previous_output_hash).decode("hex")
tx_in["outpoint_index"] = struct.pack("<L", 1)
tx_in["script"] = ("76a914%s88ac" % private_key).decode("hex")
tx_in["script_bytes"] = struct.pack("<B", (len(tx_in["script"])))
tx_in["sequence"] = "ffffffff".decode("hex")

Ich bin mir bei tx_in["script"]der Leitung nicht sicher, da es nichts über das Signieren von Transaktionen oder öffentlichen Schlüsseln gibt, also ist dies wahrscheinlich der Grund für meine Fehler.

Danke für alle Antworten :)

Dieser Code sieht nicht richtig aus.

Antworten (1)

Wenn Sie lernen möchten, wie man eine Rohtransaktion erstellt, sollten Sie sich zunächst diese Frage ansehen: Einlösen einer Rohtransaktion Schritt-für-Schritt-Beispiel erforderlich

Zweitens benötigt tx_in ein outpoint_hash, das der Hash der vorherigen Transaktion ist, für die Sie Ausgaben tätigen.

Drittens sollten Sie niemals Ihren privaten Schlüssel für einen Teil der Transaktion codieren, wie Sie es in getan haben tx_in["script"]. Das sollte auf einem sicheren Gerät bleiben und Sie benötigen das, um die Signatur zu generieren.

Viertens tx_in["script"]sollte das gleiche Skript vom Ausgangspunkt (Hash, Index) sein. Die Besonderheiten der Skriptsprache, die in Hex (76a914...88ac) codiert ist, sind OP-Codes, die Sie studieren sollten (siehe Link oben).

Fünftens übernimmt diese Bibliothek das Signieren an anderer Stelle, da script_byteses sich um den tatsächlichen öffentlichen Schlüssel und die Signatur handeln muss.

Ich denke, Sie würden es einfacher finden, eine etwas standardmäßigere Python-Bibliothek wie pycoin ( https://github.com/richardkiss/pycoin ) oder pybitcoin ( https://github.com/blockstack/pybitcoin ) zu verwenden.