Los mineros no aceptan la transacción de la dirección hash de pago a la secuencia de comandos

He arreglado mis transacciones iniciales y he podido enviar monedas a una dirección p2sh

Ahora quiero gastar esas monedas, pero cuando trato de transmitir mis transacciones, el sitio web (blockcypher) las acepta y luego los mineros no las aceptan o las rechazan (blockstream) con:

Sendrawtransaction Error de RPC: {"código":-26,"mensaje":"bandera de verificación de secuencia de comandos no obligatoria (elementos adicionales que quedan en la pila después de la ejecución)"}

Creo que hice el ScriptSig correcto para el 2 de 2 multisig (OP_0, sig1, sig2, redimirscript), así que no estoy seguro de mi error:

OP_0 3045022100e91708339615eb38326a5c513b5dcc040bf59a1b97faef2c1f59a7b16426519a02200a4ca9d8c9f05ec824c70d1564ae2952650bc0ddc8bce92f081dd7d29d33d7ea01 3045022100ca0e751242a6d33ab2e895a9b1d9e5dce18426f2d11e69009e794ebc1004ba1a0220022a95a3f335fd84b380d6482948c24817a9f021f0dea75689eccf59e1540ae901 2d5214a175b609a7c37011420585f1fcf392fdda9a025414b1e9f0fa01914ff497607f99bf90dbd8a41bd8bb52ae

Y aquí está mi tx completo:

0100000001f51f20dce174d1a894151bdbdf397317b97ec342c4068a6b96d95babb34baa7400000000c200483045022100e91708339615eb38326a5c513b5dcc040bf59a1b97faef2c1f59a7b16426519a02200a4ca9d8c9f05ec824c70d1564ae2952650bc0ddc8bce92f081dd7d29d33d7ea01483045022100ca0e751242a6d33ab2e895a9b1d9e5dce18426f2d11e69009e794ebc1004ba1a0220022a95a3f335fd84b380d6482948c24817a9f021f0dea75689eccf59e1540ae9012e2d5214a175b609a7c37011420585f1fcf392fdda9a025414b1e9f0fa01914ff497607f99bf90dbd8a41bd8bb52aeffffffff01401f0000000000001976a914a175b609a7c37011420585f1fcf392fdda9a025488ac00000000

y el código que uso para crearlo:

https://pastebin.com/c0EvKjPH

Creo que podría haber antepuesto la longitud del script de canje. El script de canje debe comenzar con "52" y no con "2d". Dado que esto cambia el tx, las firmas ya no son válidas. Intente firmar el tx nuevamente sin el "2d".

Respuestas (1)

Su secuencia de comandos de canje tiene la longitud de la secuencia de comandos antepuesta ( 2d), lo que hace que la ejecución de la pila finalice con la secuencia de comandos de redención en la pila como datos en lugar de interpretarla como otra secuencia de comandos.

El script interpreta 2dcomo si tuviera la intención de colocar datos en la pila con una longitud de 45 bytes, en lugar de interpretar realmente su script de canje como un script. Por lo tanto, su secuencia de comandos de canje debe comenzar con 52y no la longitud de la secuencia de comandos, que es 0x2d.

Después de eliminar el tx 2ddel script de canje, vuelva a firmar el tx, ya que este byte adicional también cambia todo el tx para firmar.

Además, si utilizó ese script de canje para calcular su dirección p2sh, es posible que haya enviado el dinero a la dirección incorrecta.

Es divertido mientras buscaba ayuda en línea. Me topé con una de sus preguntas desde aquí. Voy a cambiar mi código y luego haré todo el proceso nuevamente como me aconseja, afortunadamente no son bitcoins reales.
jajaja agradable. Déjame saber como va.