signrawtransaction de un gasto P2SH-P2WPKH parece estar roto?

Estoy tratando de gastar una salida de SegWit en testnet usando los comandos RPC del núcleo de Bitcoin. Sin importar la clave privada a mi billetera (es decir, sin agregar una dirección de testigo). Me pregunto si alguien tuvo suerte gastando las salidas de SegWit de esta manera. ¿ Quizás la transacción signraw está rota en este caso? Aquí están los comandos y mis resultados. Lo que es extraño es que, aunque signrawtransaction en sí es exitosa, la transacción no es válida (rechazada por sendrawtransaction y rechazada por los exploradores de bloques porque también estoy tratando de impulsarla).

(Tenga en cuenta: cada vez que importo la clave en la billetera y hago un "addwitnessaddress" todo funciona bien).

./bitcoin-cli -testnet createrawtransaction '[{"txid":"03a4ffcc792525b4ddaecc05054114f2ad8aff8b7563cd41cdb496e2177d0117","vout":0}]' '{"mwCwTceJvYV27KXBc3NJZys6CjsgsoeHmf":0.8}'

020000000117017d17e296b4cd41cd63758bff8aadf214410505ccaeddb4252579ccffa4030000000000ffffffff0100b4c404000000001976a914ac19d3fd17710e6b9a331022fe92c693fdf6659588ac00000000

./bitcoin-cli -testnet signrawtransaction 020000000117017d17e296b4cd41cd63758bff8aadf214410505ccaeddb4252579ccffa4030000000000ffffffff0100b4c404000000001976a914ac19d3fd17710e6b9a331022fe92c693fdf6659588ac00000000 '[{"txid":"03a4ffcc792525b4ddaecc05054114f2ad8aff8b7563cd41cdb496e2177d0117","vout":0,"scriptPubKey":"a91421ce1507d06ed2742be0bf18a018bbcdd812a26487","redeemScript":"00149835f2e0dff9d7f6a4060140696bc7e00b12edd5"}]' '["cMahea7zqjxryy6NWaKxmhDyb1JzuNKCZAg8sxaJoXSBkRXjnib9"] '

{ "hex": "0200000000010117017d17e296b4cd41cd63758bff8aadf214410505ccaeddb4252579ccffa40300000000171600149835f2e0dff9d7f6a4060140696bc7e00b12edd5ffffffff0100b4c404000000001976a914ac19d3fd17710e6b9a331022fe92c693fdf6659588ac024730440220452a58cf56c45edaffb952acccd2f6f2cea523cf82e73b82f8eb5e3b3b1b17c4022011de26884cf693b12f16fdd8fa6c1d96dacb97050907353852895d9b80b3fae101210206f4bad90006f70112129815b25ba585484f1bb4f8b88f8ebaec2c76f543794300000000", "complete": true }

./bitcoin-cli -testnet sendrawtransaction 0200000000010117017d17e296b4cd41cd63758bff8aadf214410505ccaeddb4252579ccffa40300000000171600149835f2e0dff9d7f6a4060140696bc7e00b12edd5ffffffff0100b4c404000000001976a914ac19d3fd17710e6b9a331022fe92c693fdf6659588ac024730440220452a58cf56c45edaffb952acccd2f6f2cea523cf82e73b82f8eb5e3b3b1b17c4022011de26884cf693b12f16fdd8fa6c1d96dacb97050907353852895d9b80b3fae101210206f4bad90006f70112129815b25ba585484f1bb4f8b88f8ebaec2c76f543794300000000

código de error: -26 mensaje de error: 64: non-mandatory-script-verify-flag (La firma debe ser cero para la operación fallida CHECK(MULTI)SIG)

Respuestas (2)

La billetera no sabe cómo firmar para cosas de segwit hasta que usas addwitnessaddress. Esto se debe a que solo rastrea las salidas P2PKH para esa tecla. Debe indicarle explícitamente que realice un seguimiento de las salidas testigo de la clave mediante el uso de addwitnessaddress.

Gracias. De hecho, estaba buscando ejecutar el nodo con la billetera deshabilitada. ¿Alguna idea rápida sobre cómo se podría hacer eso (en el futuro)? Todavía estoy investigando el código, esta parece ser la pieza clave: pwalletMain->AddCScript(witscript);
Existe un plan para implementar soporte segwit en la billetera para Bitcoin Core 0.15.1. El plan actual es simplemente hacer que addwitnessaddressfuncione para todas las direcciones nuevas y dar esas direcciones segwit.
Nota actualizada: el soporte de billetera segwit está destinado a 0.16.0 porque el drama S2X retrasó ligeramente el cronograma
¿Es necesario especificar 'addwitnessaddress' y, de ser así, cómo?
@Peter addwitnessaddresses un comando, no algo que se especifica.

Faltaba el amountproblema en el utxo dado a signrawtransaction. Adjunté el campo al final:

signrawtransaction  
020000000117017d17e296b4cd41cd63758bff8aadf214410505ccaeddb4252579ccffa4030000000000ffffffff0100b4c404000000001976a914ac19d3fd17710e6b9a331022fe92c693fdf6659588ac00000000  
'[{"txid":"03a4ffcc792525b4ddaecc05054114f2ad8aff8b7563cd41cdb496e2177d0117","vout":0,"scriptPubKey":"a91421ce1507d06ed2742be0bf18a018bbcdd812a26487","redeemScript":"00149835f2e0dff9d7f6a4060140696bc7e00b12edd5","amount":0.85}]' 
'["cMahea7zqjxryy6NWaKxmhDyb1JzuNKCZAg8sxaJoXSBkRXjnib9"]'

Gastar en59fdf1c39236498debdab39302e57b370e0e4d94d856d52d923868cfe5ef4f1b