64: Non-Mandatory-Script-Verify-Flag beim Senden von P2WPKH Bech32 mit bestimmten Eingaben

Hinweis: Dies passiert bei bestimmten Eingaben, obwohl ich denselben Code für andere Eingaben verwendet habe und es funktioniert.

Ich habe eine Rohtransaktion mit dem folgenden nicht ausgegebenen erstellt:

Array
(
    [0] => Array
        (
            [txid] => 108544730bfaeccca0de66eda8546a33403899fb508bee582f1d9e1628ec0695
            [vout] => 1
            [scriptPubKey] => 0014194eef88d8428a4af66177779d0844d66d743e5d
            [amount] => 0.000560
            [address] => tb1qr98wlzxcg29y4anpwame6zzy6ekhg0jadfmrgr
            [redeemScript] => 
        ) // this i'm not able to spend.

    [1] => Array
        (
            [txid] => 5bda1b65ff7cb3c80f09f797debb2bf1749d22332e984ba6377a0c7cac30aed9
            [vout] => 0
            [scriptPubKey] => 00141f09edebd56ffadd0c1834d048c8a416d5418f68
            [amount] => 0.100000
            [address] => tb1qruy7m674dlad6rqcxngy3j9yzm25rrmgm9x3d5
            [redeemScript] => 
        )

)

https://testnet.blockchain.info/tx/108544730bfaeccca0de66eda8546a33403899fb508bee582f1d9e1628ec0695

Erstelltes Transaktions-Hex:

02000000029506ec28169e1d2f58ee8b50fb993840336a54a8ed66dea0ccecfa0b734485100100000000ffffffffd9ae30ac7c0c7a37a64b982e33229d74f12bbbde97f7090fc8b37cff651bda5b0000000000ffffffff02404b4c0000000000160014943a52d24537d96360fb533fdc7183a92963f9c7e8c54c0000000000160014f41ddffe9582cdf5841b332f8f3751f8c1514dd300000000

SignrawTransaction-Antwort:

Array
(
    [hex] => 020000000001029506ec28169e1d2f58ee8b50fb993840336a54a8ed66dea0ccecfa0b734485100100000000ffffffffd9ae30ac7c0c7a37a64b982e33229d74f12bbbde97f7090fc8b37cff651bda5b0000000000ffffffff02404b4c0000000000160014943a52d24537d96360fb533fdc7183a92963f9c7e8c54c0000000000160014f41ddffe9582cdf5841b332f8f3751f8c1514dd302473044022042cb0cd01181cb2ec915bd5d981dbb197d2febb8acfbeae3c653747c8cf2b4b8022001e4ee55c7daa7197b4cd0948f4fb49b7660ecedb96e08e2220422e6485a0591012102b4592cc61c94b91c866ea6201885ce41f0f9cbc4a762c614799dfb854b6e18d50247304402204b475a5a61184aa46d1db9e22797c3084d409fffe608ceedaf3b6af7e2a9c2a002206404b55c0ba8b902d4bd48db115dd7d10befdc3cab57fdb42e2631e31c35070801210387844ba61f400e181004900f1ec59a3b310e4afd9a22d51cc8bc1a6631c057f500000000
    [complete] => 1
)

Senddrawtransaction-Antwort:64: non-mandatory-script-verify-flag (Signature must be zero for failed CHECK(MULTI)SIG operation)

Ich habe den zweiten Eingang ausgegeben, aber nicht den ersten.

Antworten (1)

Zunächst einmal sind dies keine P2SH-P2WPKH, sondern normale P2WPKH-Ausgänge. Sie haben überhaupt nichts mit P2SH zu tun.

Das Problem hier ist wahrscheinlich, dass die Menge falsch ist. Wenn Sie die vorherigen Ausgabedaten selbst bereitstellen, sind die Beträge falsch. Sie haben es als 0,000560, aber der tatsächliche Betrag ist 0,00055999. Da sich Segwit auf den Betrag in der Signatur verpflichtet, bedeutet ein falscher Betrag, dass die signrawtransactionerstellte Signatur ungültig ist, was zu diesem Fehler führt.

Vielen Dank, dass Sie sich die Zeit genommen haben, das zu prüfen. Ich habe den Betrag festgelegt und es hat funktioniert.