¿Cómo se gasta una transacción P2SH?

He tenido muchos problemas para obtener una transacción para gastar monedas en una dirección multisig.

Creo la transacción sin procesar. Cuando voy a firmar, aparece "Operación no válida con el tamaño de pila correcto".

Estoy usando core, y los códigos están aquí.

Primero, comprueba si está bien.

bitcoin-cli decoderawtransaction 0100000001d2aba456546be8f5223802112637e484c5d94118dfe560fa23de06fb37e621dd0000000000ffffffff01107a0700000000001976a914a4f29e1c8f592021fd79eda1be85c96a9a8d349a88ac00000000
{
    "txid" : "e71006c60dbfa2793710d5cf866d1b6b89ba80bc41634031d927738c40ae8228",
    "version" : 1,
    "locktime" : 0,
    "vin" : [
        {
            "txid" : "dd21e637fb06de23fa60e5df1841d9c584e4372611023822f5e86b5456a4abd2",
            "vout" : 0,
            "scriptSig" : {
                "asm" : "",
                "hex" : ""
            },
            "sequence" : 4294967295
        }
    ],
    "vout" : [
        {
            "value" : 0.00490000,
            "n" : 0,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 a4f29e1c8f592021fd79eda1be85c96a9a8d349a OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a914a4f29e1c8f592021fd79eda1be85c96a9a8d349a88ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "1G3ATq31k5SrGdqucXKqA9dHbzS3wJHzbc"
                ]
            }
        }
    ]
}

Y luego vamos a firmar.

bitcoin-cli signrawtransaction 0100000001d2aba456546be8f5223802112637e484c5d94118dfe560fa23de06fb37e621dd0000000000ffffffff01107a0700000000001976a914a4f29e1c8f592021fd79eda1be85c96a9a8d349a88ac00000000
{
    "hex" : "0100000001d2aba456546be8f5223802112637e484c5d94118dfe560fa23de06fb37e621dd000000009200483045022100eaae5737ab000f614ce73da11ba456b4467cf640ed881fd1fa90183d1d28c2e8022066c78bf750ae0a175f6ef116ecc3e4a0c18eda1aff9c951952f8f6e45a3521ad0147522102908921b30aa37fe6e522c528cca0ebcda9f0df4019301fa45bc3b3c7df60245a2103559dc92d6e44a98080d487e585b93278106249a166795584ae554a4275f059b752aeffffffff01107a0700000000001976a914a4f29e1c8f592021fd79eda1be85c96a9a8d349a88ac00000000",
    "complete" : false,
    "errors" : [
        {
            "txid" : "dd21e637fb06de23fa60e5df1841d9c584e4372611023822f5e86b5456a4abd2",
            "vout" : 0,
            "scriptSig" : "00483045022100eaae5737ab000f614ce73da11ba456b4467cf640ed881fd1fa90183d1d28c2e8022066c78bf750ae0a175f6ef116ecc3e4a0c18eda1aff9c951952f8f6e45a3521ad0147522102908921b30aa37fe6e522c528cca0ebcda9f0df4019301fa45bc3b3c7df60245a2103559dc92d6e44a98080d487e585b93278106249a166795584ae554a4275f059b752ae",
            "sequence" : 4294967295,
            "error" : "Operation not valid with the current stack size"
        }
    ]
}

Estoy usando https://gist.githubusercontent.com/gavinandresen/3966071/raw/ca21870c190ba0e90c1a30673e790ef5acd207d2/TwoOfThree.sh como referencia.

¿Tienes todas las claves necesarias para gastar esta salida? Esto parece firmado con algunas de las claves, pero necesita otra.
¿Eso es lo que significa? Ni siquiera pensé que firmaba parte, parece que no da señales de éxito parcial. sí, solo tengo una de las claves requeridas, pero ¿qué parte de eso muestra que está parcialmente firmada?
Bueno, es más largo.
¡Muchas gracias! Por favor, escribe una respuesta y la aceptaré. ¿Qué genio decidió codificar un "éxito" tan hostil para el usuario?

Respuestas (1)

Obtiene este error porque Bitcoin intentó validar el script y falló porque no se agregaron todas las firmas necesarias en el archivo signrawtransaction. También puedes decir esto porque completees falso.

Debe llevarlo a los clientes que tienen las otras claves necesarias y ejecutar signrawtransactionla transacción allí también.

Para aclarar aún más, para los futuros espectadores, puede decir que el tx está parcialmente firmado ejecutando el hash devuelto decoderawtransactiony observando que ahora tiene contenido en el campo vin scriptsig. Realmente debería tener un mensaje que diga que fue firmado en parte, pero no es así.
@Drazisil ¿Por qué obtengo contenido en el scriptsig de vin?