Ich habe in der vergangenen Woche mit dem Senden von Bitcoin-Transaktionen mit Python experimentiert. Ich konnte erfolgreich p2wpkh->ALL Adresstypen, p2sh-p2wpkh->ALL Adresstypen senden.
Womit ich zu kämpfen habe, ist das Senden einer Legacy-p2pkh-Transaktion. Ich bekomme immer:
SIGNATURE MUST BE ZERO FOR FAILED CHECK(MULTI)SIG OPERATION
wenn ich versuche, die signierte Transaktion mit https://testnet.smartbit.com.au/txs/pushtx zu übertragen
Es scheint mir ein Signaturfehler zu sein. Aber ich kann nicht verstehen, warum ich in der Lage bin, gute Signaturen für andere Zahlungsarten zu generieren, aber dann schlechte Signaturen für p2pkh.
Mein RawTX:
01000000 01 4f8fe5092e16ad3da3327c36a6c5209c9aede34fc68615cfdf3049945e91ca61 00000000 00 ffffffff 02 4c4f000000000000 1976a9143f7ff5e4d9b36cbce77199043d5cf51b5fb4e8d188ac 546f4b0000000000 1976a9143f7ff5e4d9b36cbce77199043d5cf51b5fb4e8d188ac 00000000
Meine signierte TX:
01000000014f8fe5092e16ad3da3327c36a6c5209c9aede34fc68615cfdf3049945e91ca61000000006a47304402205881bb01ff20100233d6c1284eb6fe1857fb25a8cee52f5fe48ef8bbf61e42fe02201b00187031f299283b60b214d801c5ca0db8342a8e68c8020caf96e9a064b471012102a7b51771f972f4d2de85129886415af3e13efe943c12f149ab7c43c318f45ae9ffffffff024c4f0000000000001976a9143f7ff5e4d9b36cbce77199043d5cf51b5fb4e8d188ac546f4b00000000001976a9143f7ff5e4d9b36cbce77199043d5cf51b5fb4e8d188ac00000000
Signiertes TX, das mit meinem Python-Parser analysiert wurde:
Segwit: False
txn version: 1
Flag: 00
------------------------------------------------------------
Inputs: 1
------------------------------------------------------------
(1)
Previous txn hash: 61ca915e944930dfcf1586c64fe3ed9a9c20c5a6367c32a33dad162e09e58f4f
Index: 0
sigScript: 47304402205881bb01ff20100233d6c1284eb6fe1857fb25a8cee52f5fe48ef8bbf61e42fe02201b00187031f299283b60b214d801c5ca0db8342a8e68c8020caf96e9a064b471012102a7b51771f972f4d2de85129886415af3e13efe943c12f149ab7c43c318f45ae9
Sequence: ffffffff
------------------------------------------------------------
Outputs: 2
------------------------------------------------------------
(1)
Value (satoshis): 20300
pubKeyScript: 76a9143f7ff5e4d9b36cbce77199043d5cf51b5fb4e8d188ac
(2)
Value (satoshis): 4943700
pubKeyScript: 76a9143f7ff5e4d9b36cbce77199043d5cf51b5fb4e8d188ac
--------------------
Locktime: 0
Kann ich komprimierte öffentliche Schlüssel in normalen p2pkh-Transaktionen verwenden oder muss es normal unkomprimiert sein?
In meinem Skript erstelle ich das preImage auf die gleiche Weise wie meine anderen Segwit-Ein-/Ausgaben, aber offensichtlich verwende ich keine Flag-, Marker-Witness-Felder. Ich bin auch einem anderen Post hier gefolgt und habe versucht, nur eine einzige Eingabe zu signieren, und ich habe andere Fehler als den oben in diesem Post erhalten.
Wie unterscheidet sich der Segwit-Signaturprozess von Legacy?
Egal.
Ich habe die beiden Antworten aus diesen Beiträgen kombiniert und es geschafft, etwas zum Laufen zu bringen:
Schritt-für-Schritt-Beispiel zum Einlösen einer Rohtransaktion erforderlich
https://bitcoin.stackexchange.com/a/41226/89247
Ja. Sie können komprimierte öffentliche Schlüssel mit p2pkh verwenden. Es gibt keine Einschränkungen.
Mike D
Kryptodeskriptor