Ich habe meine anfänglichen Transaktionen repariert und konnte Coins an eine p2sh-Adresse senden
Jetzt möchte ich diese Coins ausgeben, aber wenn ich versuche, meine Transaktionen zu übertragen, akzeptiert entweder die Website (Blockcypher) sie und sie wird dann später von Minern nicht akzeptiert oder abgelehnt (Blockstream) mit:
senddrawtransaction RPC-Fehler: {"code":-26,"message":"non-mandatory-script-verify-flag (Extra items left on stack after execute)"}
Ich glaube, ich habe das richtige ScriptSig für das 2 von 2 Multisig (OP_0, sig1, sig2, Einlöseskript) erstellt, daher bin ich mir meines Fehlers nicht sicher:
OP_0 3045022100e91708339615eb38326a5c513b5dcc040bf59a1b97faef2c1f59a7b16426519a02200a4ca9d8c9f05ec824c70d1564ae2952650bc0ddc8bce92f081dd7d29d33d7ea01 3045022100ca0e751242a6d33ab2e895a9b1d9e5dce18426f2d11e69009e794ebc1004ba1a0220022a95a3f335fd84b380d6482948c24817a9f021f0dea75689eccf59e1540ae901 2d5214a175b609a7c37011420585f1fcf392fdda9a025414b1e9f0fa01914ff497607f99bf90dbd8a41bd8bb52ae
Und hier ist mein vollständiger TX:
0100000001f51f20dce174d1a894151bdbdf397317b97ec342c4068a6b96d95babb34baa7400000000c200483045022100e91708339615eb38326a5c513b5dcc040bf59a1b97faef2c1f59a7b16426519a02200a4ca9d8c9f05ec824c70d1564ae2952650bc0ddc8bce92f081dd7d29d33d7ea01483045022100ca0e751242a6d33ab2e895a9b1d9e5dce18426f2d11e69009e794ebc1004ba1a0220022a95a3f335fd84b380d6482948c24817a9f021f0dea75689eccf59e1540ae9012e2d5214a175b609a7c37011420585f1fcf392fdda9a025414b1e9f0fa01914ff497607f99bf90dbd8a41bd8bb52aeffffffff01401f0000000000001976a914a175b609a7c37011420585f1fcf392fdda9a025488ac00000000
und der Code, den ich verwende, um es zu erstellen:
Ihrem Einlösungsskript wird die Länge des Skripts vorangestellt ( 2d
), was dazu führt, dass die Stack-Ausführung mit dem Einlösungsskript im Stack als Daten abgeschlossen wird, anstatt es als ein anderes Skript zu interpretieren.
Das Skript interpretiert das 2d
so, als ob Sie beabsichtigten, Daten mit einer Länge von 45 Bytes in den Stack zu legen, anstatt Ihr Einlöseskript tatsächlich als Skript zu interpretieren. Daher muss Ihr Einlösungsskript mit 52
und nicht mit der Länge des Skripts beginnen, die 0x2d ist.
Nachdem Sie das 2d
aus dem Einlösungsskript gelöscht haben, signieren Sie das TX erneut, da dieses zusätzliche Byte auch das gesamte TX in Sign ändert.
Wenn Sie dieses Einlösungsskript zur Berechnung Ihrer p2sh-Adresse verwendet haben, ist es außerdem möglich, dass Sie das Geld an die falsche Adresse gesendet haben.
Oskar Serna