Beim Versuch, bcc mit bitcoin-qt zu senden, wird jedoch „16: Mandatory-Script-Verify-Flag-Failed“ angezeigt – Fehler

Ich versuche, die Methode von diesem Reddit-Link zu verwenden, um eine Rohtransaktion an das bcc-Netzwerk zu senden, erhalte aber immer wieder den Fehler: "16: Mandatory-Script-Verify-Flag-Failed (Skript ohne Fehler ausgewertet, aber mit a falsches/leeres oberstes Stapelelement) (Code -26)"

Gibt es Unterschiede zu dieser Methode beim Senden einer Transaktion an das bcc-Netzwerk? Alles funktioniert gut, bis ich versuche, die Senddrawtransaktion durchzuführen.

Um aus dem obigen Link zu zitieren, sind dies die Schritte, die ich mache:

Rohtransaktion erstellen:

createrawtransaction '[{"txid":"0cb0c97c206bf2229fac8800fe05410d23bbc5afe2b243ff921ef2065b210b34","vout":1,"scriptPubKey":"76a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac"}]' '{"mtRWdkBpAyz8pUoCYobABvnEe1xFPqvkJN":0.36972432}'

Ergebnis:

0100000001340b215b06f21e92ff43b2e2afc5bb230d4105fe0088ac9f22f26b207cc9b00c0100000000ffffffff0280969800000000001976a9148d9222948aff2a22c6c0fe7a05f7edd3c1b0ab9f88ac10919b01000000001976a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac00000000

dann signrawtransaction:

signrawtransaction '0100000001340b215b06f21e92ff43b2e2afc5bb230d4105fe0088ac9f22f26b207cc9b00c0100000000ffffffff0280969800000000001976a9148d9222948aff2a22c6c0fe7a05f7edd3c1b0ab9f88ac10919b01000000001976a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac00000000' '[{"txid":"0cb0c97c206bf2229fac8800fe05410d23bbc5afe2b243ff921ef2065b210b34","vout":1,"scriptPubKey":"76a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac"}]' '["cUhHXQLPaNSPNh2rRiWSarn5jEoJ26HvrAYjLCfxnDsAYZenTthe"]'

Ergebnis:

{ "hex" : "0100000001340b215b06f21e92ff43b2e2afc5bb230d4105fe0088ac9f22f26b207cc9b00c010000006a47304402200d3f8a6430f952199d7f4550328ae980f9926b13f7c78f8a5640ecd445aa20bf022074a7e1ec5d27d83da6bb19a8fe9ef9757e40fa86a9b1437c27031be015d82db40121032effa843ad1052540de3ae323a165101bc2e980c76b69bdc69444e3ef599054effffffff0280969800000000001976a9148d9222948aff2a22c6c0fe7a05f7edd3c1b0ab9f88ac10919b01000000001976a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac00000000", "complete" : true }

dann senddrawtransaction:

sendrawtransaction '0100000001340b215b06f21e92ff43b2e2afc5bb230d4105fe0088ac9f22f26b207cc9b00c010000006a47304402200d3f8a6430f952199d7f4550328ae980f9926b13f7c78f8a5640ecd445aa20bf022074a7e1ec5d27d83da6bb19a8fe9ef9757e40fa86a9b1437c27031be015d82db40121032effa843ad1052540de3ae323a165101bc2e980c76b69bdc69444e3ef599054effffffff0280969800000000001976a9148d9222948aff2a22c6c0fe7a05f7edd3c1b0ab9f88ac10919b01000000001976a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac00000000'

Ergebnis:

16: mandatory-script-verify-flag-failed (Script evaluated without error but finished with a false/empty top stack element) (code -26)

Antworten (3)

Da ich sicher bin, dass andere auf das gleiche Problem stoßen werden, besteht die Lösung darin, dass Sie bei BCC beim Signieren einer Transaktion das Betragskennzeichen eingeben müssen. Sie müssen jedoch den vollen Betrag eingeben, der auf dem listunspent-Befehl angezeigt wird, sonst können Sie die Transaktion nicht senden.

Ich hatte den gleichen Fehler, aber vielleicht ein anderes Problem. Siehe: Rohtransaktion BCC/BCH mit fehlgeschlagenem CHECK(MULTI)SIG versuchen. Was ist falsch?

Es ist wichtig, dass der zum Signieren verwendete Hash auf denselben Daten basiert, die tatsächlich gesendet werden + Sigscript. Jeder Unterschied führt zu einer anderen Signatur. Auch für die Signatur müssen die Beträge der Outpoints verwendet werden und einige Unterschiede zu BTC wie die UND-Verknüpfung des Sighashs mit 0x40 und Bip143SignatureHash verwendet werden.

Eine kurze Überprüfung Ihrer Schritte zeigt mir, dass Sie es richtig machen. Aber die Eingaben, die Sie auszugeben versuchen, sind bereits ausgegeben (Testnet / https://www.blocktrail.com/tBTC/tx/0cb0c97c206bf2229fac8800fe05410d23bbc5afe2b243ff921ef2065b210b34 ).

Der Fehler, auf den Sie stoßen, ist nicht sehr genau, wird aber letztendlich bedeuten, dass Sie versuchen, eine bereits ausgegebene Münze auszugeben.

Probieren Sie Regtest (Ihr eigenes lokales Bitcoin-Netzwerk) aus, indem Sie Bitcoin-Core im -regtestModus starten. Dort können Sie einige Münzen zum Spielen erhalten, indem generate 101Sie in Ihrer Konsole (oder per RPC) anrufen (100 Blöcke abbauen == 50 BTC verfügbares Guthaben erhalten).

Diese Eingaben dort sind nur ein Beispiel aus dem reddit-Link, nicht meine eigentliche Transaktion. Ich wollte nicht riskieren, Informationen über den von mir verwendeten privaten Schlüssel preiszugeben, deshalb habe ich die Schritte nur mit einer Beispieltransaktion gezeigt. Muss es dann mit regtest versuchen. Könnte der Fehler daran liegen, dass ich die Adresse importiert habe, von der ich versuche, sie als Nur-Uhr-Adresse zu senden? Oder wäre das egal?
Ok, also habe ich Bitcoin abc jetzt heruntergeladen und im -regtest-Modus gestartet. Alle Schritte zum Erstellen und Senden einer Transaktion durchgeführt und nach senddrawtransaction den gleichen Fehler erhalten: 16: Mandatory-Script-Verify-Flag-failed (Signature must be zero for failed CHECK(MULTI)SIG operation) (code -26) . Was vermisse ich?