0
I'm trying to spend a 2/2 P2WSH input.
I don't understand how the "next" field can be "updater" if the "missing" field is empty:
$ bitcoin-cli -testnet analyzepsbt cHNidP8BAH0CAAAAAXz0qBDXO+uQOsNVaUcorfJafZYydCv5kGUTLaFs/r2HAAAAAAD+////AugDAAAAAAAAFgAUlBEbC0zwnx3lVjBHQ8j/OSY8D00DggEAAAAAACIAIIwfpAXvuuV+RHcUKJQhamBeY2kX8NQjEHnXq7nAxI0kAAAAAAABASughgEAAAAAACIAIF7irfIOj9QsEsbGg+4bmfHAIfxHGagcdw2PSeqZV1i9IgICykuckuH/D6RW3lBdbEqbEqHDxjQObhF8l5eQRDa64ftIMEUCIQD81o45GQb5Sl957dP64X4xj0QXzoMA8JTSBjbFRC3nrAIgCi1Ku1pSArpmyap0ZiZmAq8LRqis+cBdVeHJE9Da7WcBIgIC/NzEeTxfWJoNRzy7vS+dJSjAlu71hTAThp31g1LONFdHMEQCIBymHkm6ugBcdmllS0XhFHlGYglnrhtJOYk6ET865tYcAiAaBi9klfVfRnTP2KmHb7ZumIWEPzYRsXv2yUWn17Z3NAEBBUdSIQL83MR5PF9Ymg1HPLu9L50lKMCW7vWFMBOGnfWDUs40VyECykuckuH/D6RW3lBdbEqbEqHDxjQObhF8l5eQRDa64ftSriIGAspLnJLh/w+kVt5QXWxKmxKhw8Y0Dm4RfJeXkEQ2uuH7GGuz1AMsAACAAQAAgAAAAIAAAAAAAAAAACIGAvzcxHk8X1iaDUc8u70vnSUowJbu9YUwE4ad9YNSzjRXGHd0/yAsAACAAQAAgAAAAIAAAAAAAAAAAAAAAQFHUiEDLB2e+6+bTRK5ciRgj64xzggam4YgzswByu9oxg3wZ3UhA/jRhjYGYlDGSAoiCvs6tlL6CEU/gcH8yAq4NOqm8SEXUq4iAgMsHZ77r5tNErlyJGCPrjHOCBqbhiDOzAHK72jGDfBndRh3dP8gLAAAgAEAAIAAAACAAAAAAAIAAAAiAgP40YY2BmJQxkgKIgr7OrZS+ghFP4HB/MgKuDTqpvEhFxhrs9QDLAAAgAEAAIAAAACAAAAAAAIAAAAA
{
"inputs": [
{
"has_utxo": true,
"is_final": false,
"missing": {
},
"next": "updater"
}
],
"estimated_vsize": 181,
"estimated_feerate": 0.00001000,
"fee": 0.00000181,
"next": "updater"
}
I've used HWI to add partial_signatures for each of the 2 pubkeys specified in the inputs[0]['bip32_derivs'] field.
$ bitcoin-cli -testnet decodepsbt cHNidP8BAH0CAAAAAXz0qBDXO+uQOsNVaUcorfJafZYydCv5kGUTLaFs/r2HAAAAAAD+////AugDAAAAAAAAFgAUlBEbC0zwnx3lVjBHQ8j/OSY8D00DggEAAAAAACIAIIwfpAXvuuV+RHcUKJQhamBeY2kX8NQjEHnXq7nAxI0kAAAAAAABASughgEAAAAAACIAIF7irfIOj9QsEsbGg+4bmfHAIfxHGagcdw2PSeqZV1i9IgICykuckuH/D6RW3lBdbEqbEqHDxjQObhF8l5eQRDa64ftIMEUCIQD81o45GQb5Sl957dP64X4xj0QXzoMA8JTSBjbFRC3nrAIgCi1Ku1pSArpmyap0ZiZmAq8LRqis+cBdVeHJE9Da7WcBIgIC/NzEeTxfWJoNRzy7vS+dJSjAlu71hTAThp31g1LONFdHMEQCIBymHkm6ugBcdmllS0XhFHlGYglnrhtJOYk6ET865tYcAiAaBi9klfVfRnTP2KmHb7ZumIWEPzYRsXv2yUWn17Z3NAEBBUdSIQL83MR5PF9Ymg1HPLu9L50lKMCW7vWFMBOGnfWDUs40VyECykuckuH/D6RW3lBdbEqbEqHDxjQObhF8l5eQRDa64ftSriIGAspLnJLh/w+kVt5QXWxKmxKhw8Y0Dm4RfJeXkEQ2uuH7GGuz1AMsAACAAQAAgAAAAIAAAAAAAAAAACIGAvzcxHk8X1iaDUc8u70vnSUowJbu9YUwE4ad9YNSzjRXGHd0/yAsAACAAQAAgAAAAIAAAAAAAAAAAAAAAQFHUiEDLB2e+6+bTRK5ciRgj64xzggam4YgzswByu9oxg3wZ3UhA/jRhjYGYlDGSAoiCvs6tlL6CEU/gcH8yAq4NOqm8SEXUq4iAgMsHZ77r5tNErlyJGCPrjHOCBqbhiDOzAHK72jGDfBndRh3dP8gLAAAgAEAAIAAAACAAAAAAAIAAAAiAgP40YY2BmJQxkgKIgr7OrZS+ghFP4HB/MgKuDTqpvEhFxhrs9QDLAAAgAEAAIAAAACAAAAAAAIAAAAA
{
"tx": {
"txid": "65cf8989e70e1112e8022043bd3a91a7f1d4074d9d7b004f0be05b327f819ff8",
"hash": "65cf8989e70e1112e8022043bd3a91a7f1d4074d9d7b004f0be05b327f819ff8",
"version": 2,
"size": 125,
"vsize": 125,
"weight": 500,
"locktime": 0,
"vin": [
{
"txid": "87bdfe6ca12d136590f92b7432967d5af2ad28476955c33a90eb3bd710a8f47c",
"vout": 0,
"scriptSig": {
"asm": "",
"hex": ""
},
"sequence": 4294967294
}
],
"vout": [
{
"value": 0.00001000,
"n": 0,
"scriptPubKey": {
"asm": "0 94111b0b4cf09f1de556304743c8ff39263c0f4d",
"hex": "001494111b0b4cf09f1de556304743c8ff39263c0f4d",
"reqSigs": 1,
"type": "witness_v0_keyhash",
"addresses": [
"tb1qjsg3kz6v7z03me2kxpr58j8l8ynrcr6d6qvfsu"
]
}
},
{
"value": 0.00098819,
"n": 1,
"scriptPubKey": {
"asm": "0 8c1fa405efbae57e4477142894216a605e636917f0d4231079d7abb9c0c48d24",
"hex": "00208c1fa405efbae57e4477142894216a605e636917f0d4231079d7abb9c0c48d24",
"reqSigs": 1,
"type": "witness_v0_scripthash",
"addresses": [
"tb1q3s06gp00htjhu3rhzs5fggt2vp0xx6gh7r2zxyre674mnsxy35jq4s8uxx"
]
}
}
]
},
"unknown": {
},
"inputs": [
{
"witness_utxo": {
"amount": 0.00100000,
"scriptPubKey": {
"asm": "0 5ee2adf20e8fd42c12c6c683ee1b99f1c021fc4719a81c770d8f49ea995758bd",
"hex": "00205ee2adf20e8fd42c12c6c683ee1b99f1c021fc4719a81c770d8f49ea995758bd",
"type": "witness_v0_scripthash",
"address": "tb1qtm32musw3l2zcykxc6p7uxue78qzrlz8rx5pcacd3ay74x2htz7s89n5j4"
}
},
"partial_signatures": {
"02ca4b9c92e1ff0fa456de505d6c4a9b12a1c3c6340e6e117c9797904436bae1fb": "3045022100fcd68e391906f94a5f79edd3fae17e318f4417ce8300f094d20636c5442de7ac02200a2d4abb5a5202ba66c9aa7466266602af0b46a8acf9c05d55e1c913d0daed6701",
"02fcdcc4793c5f589a0d473cbbbd2f9d2528c096eef5853013869df58352ce3457": "304402201ca61e49baba005c7669654b45e1147946620967ae1b4939893a113f3ae6d61c02201a062f6495f55f4674cfd8a9876fb66e9885843f3611b17bf6c945a7d7b6773401"
},
"witness_script": {
"asm": "2 02fcdcc4793c5f589a0d473cbbbd2f9d2528c096eef5853013869df58352ce3457 02ca4b9c92e1ff0fa456de505d6c4a9b12a1c3c6340e6e117c9797904436bae1fb 2 OP_CHECKMULTISIG",
"hex": "522102fcdcc4793c5f589a0d473cbbbd2f9d2528c096eef5853013869df58352ce34572102ca4b9c92e1ff0fa456de505d6c4a9b12a1c3c6340e6e117c9797904436bae1fb52ae",
"type": "multisig"
},
"bip32_derivs": [
{
"pubkey": "02ca4b9c92e1ff0fa456de505d6c4a9b12a1c3c6340e6e117c9797904436bae1fb",
"master_fingerprint": "6bb3d403",
"path": "m/44'/1'/0'/0/0"
},
{
"pubkey": "02fcdcc4793c5f589a0d473cbbbd2f9d2528c096eef5853013869df58352ce3457",
"master_fingerprint": "7774ff20",
"path": "m/44'/1'/0'/0/0"
}
]
}
],
"outputs": [
{
},
{
"witness_script": {
"asm": "2 032c1d9efbaf9b4d12b97224608fae31ce081a9b8620cecc01caef68c60df06775 03f8d18636066250c6480a220afb3ab652fa08453f81c1fcc80ab834eaa6f12117 2 OP_CHECKMULTISIG",
"hex": "5221032c1d9efbaf9b4d12b97224608fae31ce081a9b8620cecc01caef68c60df067752103f8d18636066250c6480a220afb3ab652fa08453f81c1fcc80ab834eaa6f1211752ae",
"type": "multisig"
},
"bip32_derivs": [
{
"pubkey": "032c1d9efbaf9b4d12b97224608fae31ce081a9b8620cecc01caef68c60df06775",
"master_fingerprint": "7774ff20",
"path": "m/44'/1'/0'/0/2"
},
{
"pubkey": "03f8d18636066250c6480a220afb3ab652fa08453f81c1fcc80ab834eaa6f12117",
"master_fingerprint": "6bb3d403",
"path": "m/44'/1'/0'/0/2"
}
]
}
],
"fee": 0.00000181
}
I dug around in psbt.cpp for a while but still can't figure out what's missing ...
Are you able to finalize the psbt using
finalizepsbt? AFAICT, the only thing that can cause this is an invalid signature. – Andrew Chow – 2019-07-18T02:39:27.773finalizepsbtreturns{ "psbt": <unchanged>, "complete": false }. Is there any straightforward way to check the signatures in a PSBT? And I got the signatures straight from HWI so could be a bug over there ... – justinmoon – 2019-07-18T02:44:38.267What hardware wallet did you use? Some don't entirely support multisig (or previous versions of firmware didn't) but will still give a signature which is invalid. – Andrew Chow – 2019-07-18T02:58:06.087
Bitbox 7.0.0 & Ledger 1.5.5 (up-to-date according to their GUI apps). I also have a trezor and coldcard. Guess I'll try those, too. – justinmoon – 2019-07-18T03:14:25.113
can you open an issue in the HWI repo and we can continue there? Also, it would be good if you could share the PSBT you gave to HWI to be signed. – Andrew Chow – 2019-07-18T03:27:04.740
I noticed this with ColdCard simulator too, single signature, without HWI, while working on: https://github.com/bitcoin/bitcoin/pull/17509
– Sjors Provoost – 2019-11-20T10:10:47.507finalizepsbtwas happy though and I could broadcast the testnet transaction. I assumed did something wrong. Will file a Github issue if I see it again.