Estoy tratando de enviar transacciones con script:
GuiónSig :OP_PUSHDATA<Sig> OP_PUSHDATA<Data1> OP_PUSHDATA<Data2> OP_PUSHDATA<Data3>
OP_PUSHDATA<RedeemScript>
Dado que los datos tienen menos de 75 bytes en la transacción sin procesar, se realizaron inserciones directas.
Canjear guión:2OP_DROP OP_2DROP OP_PUSHDATA<PubKey> OP_CHECKSIG
RedimirScriptHash160 de 6d6d2202ada9884dbd1e8bd90968ba66256f017cd77d83595027f7929ae3537f98c92d4aac
=738292fc46dd7af803bd56035d0988af96a31681
ScriptPubKey :OP_HASH160 <redeemScriptHash> OP_EQUAL
Pero recibo un error al enviar una transacción sin procesar:
código = -26, mensaje = 16: mandato-script-verify-flag-failed (Script evaluado sin error pero terminado con un elemento de pila superior falso/vacío)
¿Alguien podría ayudar a entender qué está mal con ese script? Esta es mi transacción:
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"
}
Antes de que se ejecute el script de canje, la pila se ve así (de arriba a abajo): TRUE, Data3, Data2, Data1, Sig
. La TRUE
parte superior de la pila proviene de OP_EQUAL
.
Ahora se ejecuta el script de canje y usted suelta los tres elementos principales de la pila y luego los agrega PubKey
, dejándolo con PubKey, Data1, Sig
. Cuando OP_CHECKSIG
se ejecuta ahora, se usa Data1
como Firma en lugar de Sig
lo que hace que falle. Al final la pila es FALSE, Sig
. El elemento superior de la pila es FALSE
el que hace que la transacción falle.
Andr1i
OP_DROP
estoOP_2DROP
debería resolver mi problema pero no.bobface
OP_DROP
elOP_2DROP
hash del script de canje será diferente y, por lo tanto,OP_EQUAL
volveráFALSE
si reutiliza su anteriorscriptPubKey
con el script de canje actualizado.Andr1i
Andr1i
OP_PUSHDATA<PubKey>
junto conOP_CHECKSIG
. Usted ayudó a resolver mi problema, pero tengo nuevo. Cuando estoy enviando eso sin procesar, aparece un errormandatory-script-verify-flag-failed (Signature is found in scriptCode)
. ¿Quizás sabes lo que está mal?bobface