Envío de transacciones P2SH con script no estándar

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"
}

Respuestas (1)

Antes de que se ejecute el script de canje, la pila se ve así (de arriba a abajo): TRUE, Data3, Data2, Data1, Sig. La TRUEparte 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_CHECKSIGse ejecuta ahora, se usa Data1como Firma en lugar de Siglo que hace que falle. Al final la pila es FALSE, Sig. El elemento superior de la pila es FALSEel que hace que la transacción falle.

Gracias por su respuesta. Basado en esto, si cambio OP_DROPesto OP_2DROPdebería resolver mi problema pero no.
¿Hiciste una transacción completamente nueva? Porque si cambia OP_DROPel OP_2DROPhash del script de canje será diferente y, por lo tanto, OP_EQUALvolverá FALSEsi reutiliza su anterior scriptPubKeycon el script de canje actualizado.
Sí, lo actualicé, pero después de leer tu comentario =). Además, actualicé la publicación con una nueva transacción sin procesar.
Encontré un error más en mi transacción sin procesar. Había OP_PUSHDATA<PubKey>junto con OP_CHECKSIG. Usted ayudó a resolver mi problema, pero tengo nuevo. Cuando estoy enviando eso sin procesar, aparece un error mandatory-script-verify-flag-failed (Signature is found in scriptCode). ¿Quizás sabes lo que está mal?
Lo siento, tampoco sé lo que eso significa :( te sugiero que hagas una nueva pregunta con el nuevo problema, tal vez alguien más sepa cuál es el problema.