Ich versuche, die Transaktion mit dem Skript zu senden:
ScriptSig :OP_PUSHDATA<Sig> OP_PUSHDATA<Data1> OP_PUSHDATA<Data2> OP_PUSHDATA<Data3>
OP_PUSHDATA<RedeemScript>
Da die Daten in der Rohtransaktion weniger als 75 Bytes betragen, werden direkte Pushs durchgeführt.
RedeemScript:2OP_DROP OP_2DROP OP_PUSHDATA<PubKey> OP_CHECKSIG
RedeemScriptHash160 von 6d6d2202ada9884dbd1e8bd90968ba66256f017cd77d83595027f7929ae3537f98c92d4aac
=738292fc46dd7af803bd56035d0988af96a31681
ScriptPubKey :OP_HASH160 <redeemScriptHash> OP_EQUAL
Aber ich erhalte eine Fehlermeldung beim Senden einer Rohtransaktion:
Code = -26, Nachricht = 16: Mandatory-Script-Verify-Flag-Failed (Skript ohne Fehler ausgewertet, aber mit einem falschen/leeren obersten Stack-Element beendet)
Könnte jemand helfen zu verstehen, was mit diesem Skript falsch ist? Dies ist meine Transaktion:
020000000001012f15356f4dfb7f48a91a72f5ff1071f72cb5fe4acc29e98ff5ae17a008a01dba000000007C160014ac09dd336a6fc10034fc44dcb706855668921ce7141f8b0800ffc1765400038d78055c545df3ff5d4a141f8b0800ffc1765400038d78055c545df3ff5d4a141f8b0800ffc1765400038d78055c545df3ff5d4a246d6d2202ada9884dbd1e8bd90968ba66246f017cd77d83595027f7929ae3537f98c92d4aacffffffff01c005d9010000000017a914738292fc46dd7af803bd56035d0988af96a3168187024830450221009108d4e65a34fb50cd3283b6386a679f0dfc2b5fe97e3b3c3f6b8320814b3a2902204631daf2bb93605c9e079750092f304966b69fe28ce7701f4bc677714bca23af012102ada9884dbd1e8bd90968ba66256f017cd77d83595027f7929ae3537f98c92d4a00000000
{
"result": {
"txid": "441cf52028ee0acc8b4076681c7fd46dad03501be62c6b0050ca59090fa52973",
"hash": "dad2b4c56556b74d87243149ca3384ce04584d3bd8d21d80e291c4f9eed7e3f8",
"version": 2,
"size": 317,
"vsize": 235,
"locktime": 0,
"vin": [
{
"txid": "ba1da008a017aef58fe929cc4afeb52cf77110fff5721aa9487ffb4d6f35152f",
"vout": 0,
"scriptSig": {
"asm": "0014ac09dd336a6fc10034fc44dcb706855668921ce7 1f8b0800ffc1765400038d78055c545df3ff5d4a 1f8b0800ffc1765400038d78055c545df3ff5d4a 1f8b0800ffc1765400038d78055c545df3ff5d4a 6d6d2202ada9884dbd1e8bd90968ba66246f017cd77d83595027f7929ae3537f98c92d4a OP_CHECKSIG",
"hex": "160014ac09dd336a6fc10034fc44dcb706855668921ce7141f8b0800ffc1765400038d78055c545df3ff5d4a141f8b0800ffc1765400038d78055c545df3ff5d4a141f8b0800ffc1765400038d78055c545df3ff5d4a246d6d2202ada9884dbd1e8bd90968ba66246f017cd77d83595027f7929ae3537f98c92d4aac"
},
"txinwitness": [
"30450221009108d4e65a34fb50cd3283b6386a679f0dfc2b5fe97e3b3c3f6b8320814b3a2902204631daf2bb93605c9e079750092f304966b69fe28ce7701f4bc677714bca23af01",
"02ada9884dbd1e8bd90968ba66256f017cd77d83595027f7929ae3537f98c92d4a"
],
"sequence": 4294967295
}
],
"vout": [
{
"value": 0.31,
"n": 0,
"scriptPubKey": {
"asm": "OP_HASH160 738292fc46dd7af803bd56035d0988af96a31681 OP_EQUAL",
"hex": "a914738292fc46dd7af803bd56035d0988af96a3168187",
"reqSigs": 1,
"type": "scripthash",
"addresses": [
"2N3mz7o8v3YT4arXdQ5p8So6q3FUGjhUpEE"
]
}
}
]
},
"error": null,
"id": "curltext"
}
Bevor das Einlöseskript ausgeführt wird, sieht der Stack so aus (von oben nach unten): TRUE, Data3, Data2, Data1, Sig
. Das TRUE
oben auf dem Stapel kommt von OP_EQUAL
.
Jetzt wird das Einlöseskript ausgeführt und Sie lassen die obersten drei Elemente aus dem Stapel fallen und fügen dann hinzu PubKey
, sodass Sie übrig bleiben PubKey, Data1, Sig
. Wenn OP_CHECKSIG
es jetzt läuft, wird es Data1
als Signatur verwendet, anstatt Sig
dass es fehlschlägt. Am Ende ist der Stapel FALSE, Sig
. Das oberste Element des Stacks FALSE
lässt die Transaktion fehlschlagen.
Andr1i
OP_DROP
sollteOP_2DROP
dies mein Problem lösen, aber nicht.Bobface
OP_DROP
wirdOP_2DROP
es anders sein undOP_EQUAL
wird daher zurückkehrenFALSE
, wenn Sie Ihr altesscriptPubKey
mit dem aktualisierten Einlöseskript wiederverwenden.Andr1i
Andr1i
OP_PUSHDATA<PubKey>
zusammen mitOP_CHECKSIG
. Sie haben mir geholfen, mein Problem zu lösen, aber ich habe neue. Wenn ich das Raw sende, bekomme ich eine Fehlermeldungmandatory-script-verify-flag-failed (Signature is found in scriptCode)
. Vielleicht weißt du, was los ist?Bobface