when recovering an expired utxo (taproot, single primary key, single recovery key after(6)):
- can update w/krux's sign-to-sdcard and broadcast
- can update w/krux's sign-to-qr but cannot broadcast: complains "422: failed to finalize PSBT"
- can copy from liana after above error, delete psbt, import from clipboard and broadcast w/o error
Wallet Output Descriptor:
tr([d63dc4a7/48'/1'/0'/2']tpubDEXCvh2aPYzMz2xfgsh9ZM6dQZxioYfCafUgw16keqschYbED4VeS46Qhr7EoonDHNr9dSsKPEGeRP5WRzDGdY3aazneR7wKmtDVNTf6qic/<0;1>/*,and_v(v:pk([c98cbe58/48'/1'/0'/2']tpubDFXZ3rcRyvU6AvNrb4kRQFomJbtCTCyMX9jDJmfN5XfHLEAZq7a8h3CrYDZYtdexk6XWfT5DB8PYgySWA5GSdyWdzWwveQcbrzvVQw3u7bV/<0;1>/*),older(6)))#v4dwzex2
recovering 13915s utxo 2a69dc6a2cf35e93f79d10c375977b92248b848f2fe8ad567f0f21bd71e817dd via recovery key
Liana asks for this psbt to be signed
cHNidP8BAFICAAAAATKIBWZKuOzhh/ekjeT2YmeY3JfGQDTvFVBlfgDfmKLuAAAAAAAGAAAAAVs2AAAAAAAAFgAUR1DYWTGiHdR6Lj55ew0f0LkZtYEAAAAAAAEBK9c7AAAAAAAAIlEgmlVJt5oebuhHWeFudtFvRz4ni17HNzRtjR4Hmm8jmxgiFcFxlINtFBhpFG52fQLxs85doBCL59ipiAc8I4LRlPoDsiUgi9Pu3t/O9DTlV9pXdCamAMGhrZeoiXWpb09IBZGY2ZGtVrLAIRZxlINtFBhpFG52fQLxs85doBCL59ipiAc8I4LRlPoDsh0A1j3EpzAAAIABAACAAAAAgAIAAIAAAAAACwAAACEWi9Pu3t/O9DTlV9pXdCamAMGhrZeoiXWpb09IBZGY2ZE9AWdsRSNFWBrGvl1IPn3svdhowYa04MuqjmOdrxyYxaTJyYy+WDAAAIABAACAAAAAgAIAAIAAAAAACwAAAAEXIHGUg20UGGkUbnZ9AvGzzl2gEIvn2KmIBzwjgtGU+gOyARggZ2xFI0VYGsa+XUg+fey92GjBhrTgy6qOY52vHJjFpMkAAA==
# bitcoin-cli decodepsbt
{
"tx": {
"txid": "2a69dc6a2cf35e93f79d10c375977b92248b848f2fe8ad567f0f21bd71e817dd",
"hash": "2a69dc6a2cf35e93f79d10c375977b92248b848f2fe8ad567f0f21bd71e817dd",
"version": 2,
"size": 82,
"vsize": 82,
"weight": 328,
"locktime": 0,
"vin": [
{
"txid": "eea298df007e655015ef3440c697dc986762f6e48da4f787e1ecb84a66058832",
"vout": 0,
"scriptSig": {
"asm": "",
"hex": ""
},
"sequence": 6
}
],
"vout": [
{
"value": 0.00013915,
"n": 0,
"scriptPubKey": {
"asm": "0 4750d85931a21dd47a2e3e797b0d1fd0b919b581",
"desc": "addr(tb1qgagdskf35gwag73w8euhkrgl6zu3ndvp9ngt2u)#rfs844f3",
"hex": "00144750d85931a21dd47a2e3e797b0d1fd0b919b581",
"address": "tb1qgagdskf35gwag73w8euhkrgl6zu3ndvp9ngt2u",
"type": "witness_v0_keyhash"
}
}
]
},
"global_xpubs": [
],
"psbt_version": 0,
"proprietary": [
],
"unknown": {
},
"inputs": [
{
"witness_utxo": {
"amount": 0.00015319,
"scriptPubKey": {
"asm": "1 9a5549b79a1e6ee84759e16e76d16f473e278b5ec737346d8d1e079a6f239b18",
"desc": "rawtr(9a5549b79a1e6ee84759e16e76d16f473e278b5ec737346d8d1e079a6f239b18)#8g93t5kf",
"hex": "51209a5549b79a1e6ee84759e16e76d16f473e278b5ec737346d8d1e079a6f239b18",
"address": "tb1pnf25ndu6rehws36eu9h8d5t0gulz0z67cumngmvdrcre5mernvvqtu7xjq",
"type": "witness_v1_taproot"
}
},
"taproot_scripts": [
{
"script": "208bd3eededfcef434e557da577426a600c1a1ad97a88975a96f4f48059198d991ad56b2",
"leaf_ver": 192,
"control_blocks": [
"c17194836d141869146e767d02f1b3ce5da0108be7d8a988073c2382d194fa03b2"
]
}
],
"taproot_bip32_derivs": [
{
"pubkey": "7194836d141869146e767d02f1b3ce5da0108be7d8a988073c2382d194fa03b2",
"master_fingerprint": "d63dc4a7",
"path": "m/48h/1h/0h/2h/0/11",
"leaf_hashes": [
]
},
{
"pubkey": "8bd3eededfcef434e557da577426a600c1a1ad97a88975a96f4f48059198d991",
"master_fingerprint": "c98cbe58",
"path": "m/48h/1h/0h/2h/0/11",
"leaf_hashes": [
"676c452345581ac6be5d483e7decbdd868c186b4e0cbaa8e639daf1c98c5a4c9"
]
}
],
"taproot_internal_key": "7194836d141869146e767d02f1b3ce5da0108be7d8a988073c2382d194fa03b2",
"taproot_merkle_root": "676c452345581ac6be5d483e7decbdd868c186b4e0cbaa8e639daf1c98c5a4c9"
}
],
"outputs": [
{
}
],
"fee": 0.00001404
}
copied from liana, pasted into SeedQReader, scanned into krux, signed to qr with krux (adds sigs, trims other psbt fields)
cHNidP8BAFICAAAAATKIBWZKuOzhh/ekjeT2YmeY3JfGQDTvFVBlfgDfmKLuAAAAAAAGAAAAAVs2AAAAAAAAFgAUR1DYWTGiHdR6Lj55ew0f0LkZtYEAAAAAAAEBK9c7AAAAAAAAIlEgmlVJt5oebuhHWeFudtFvRz4ni17HNzRtjR4Hmm8jmxhBFIvT7t7fzvQ05VfaV3QmpgDBoa2XqIl1qW9PSAWRmNmRZ2xFI0VYGsa+XUg+fey92GjBhrTgy6qOY52vHJjFpMlAi37w6N6j4vo7YBY0Ieg2ISzdLvd6f43b5YlWq7RA6Pz6ntX/uWA0fAIoraTLvN5nNxklPPvyiQyBAKDQoHYx3AAA
# bitcoin-cli decodepsbt
{
"tx": {
"txid": "2a69dc6a2cf35e93f79d10c375977b92248b848f2fe8ad567f0f21bd71e817dd",
"hash": "2a69dc6a2cf35e93f79d10c375977b92248b848f2fe8ad567f0f21bd71e817dd",
"version": 2,
"size": 82,
"vsize": 82,
"weight": 328,
"locktime": 0,
"vin": [
{
"txid": "eea298df007e655015ef3440c697dc986762f6e48da4f787e1ecb84a66058832",
"vout": 0,
"scriptSig": {
"asm": "",
"hex": ""
},
"sequence": 6
}
],
"vout": [
{
"value": 0.00013915,
"n": 0,
"scriptPubKey": {
"asm": "0 4750d85931a21dd47a2e3e797b0d1fd0b919b581",
"desc": "addr(tb1qgagdskf35gwag73w8euhkrgl6zu3ndvp9ngt2u)#rfs844f3",
"hex": "00144750d85931a21dd47a2e3e797b0d1fd0b919b581",
"address": "tb1qgagdskf35gwag73w8euhkrgl6zu3ndvp9ngt2u",
"type": "witness_v0_keyhash"
}
}
]
},
"global_xpubs": [
],
"psbt_version": 0,
"proprietary": [
],
"unknown": {
},
"inputs": [
{
"witness_utxo": {
"amount": 0.00015319,
"scriptPubKey": {
"asm": "1 9a5549b79a1e6ee84759e16e76d16f473e278b5ec737346d8d1e079a6f239b18",
"desc": "rawtr(9a5549b79a1e6ee84759e16e76d16f473e278b5ec737346d8d1e079a6f239b18)#8g93t5kf",
"hex": "51209a5549b79a1e6ee84759e16e76d16f473e278b5ec737346d8d1e079a6f239b18",
"address": "tb1pnf25ndu6rehws36eu9h8d5t0gulz0z67cumngmvdrcre5mernvvqtu7xjq",
"type": "witness_v1_taproot"
}
},
"taproot_script_path_sigs": [
{
"pubkey": "8bd3eededfcef434e557da577426a600c1a1ad97a88975a96f4f48059198d991",
"leaf_hash": "676c452345581ac6be5d483e7decbdd868c186b4e0cbaa8e639daf1c98c5a4c9",
"sig": "8b7ef0e8dea3e2fa3b60163421e836212cdd2ef77a7f8ddbe58956abb440e8fcfa9ed5ffb960347c0228ada4cbbcde673719253cfbf2890c8100a0d0a07631dc"
}
]
}
],
"outputs": [
{
}
],
"fee": 0.00001404
}
scanned from krux into SeedQReader, copied and pasted into "update" at Liana.
Liana informs "Spend transaction is updated" and shows "Broadcast" button.
upon confirming "Broadcast", Liana shows error HTTP error 422: {"error":"Failed to finalize psbt"}
copy the updated psbt from Liana (to see why it's not finalizable):
cHNidP8BAFICAAAAATKIBWZKuOzhh/ekjeT2YmeY3JfGQDTvFVBlfgDfmKLuAAAAAAAGAAAAAVs2AAAAAAAAFgAUR1DYWTGiHdR6Lj55ew0f0LkZtYEAAAAAAAEBK9c7AAAAAAAAIlEgmlVJt5oebuhHWeFudtFvRz4ni17HNzRtjR4Hmm8jmxhBFIvT7t7fzvQ05VfaV3QmpgDBoa2XqIl1qW9PSAWRmNmRZ2xFI0VYGsa+XUg+fey92GjBhrTgy6qOY52vHJjFpMlAi37w6N6j4vo7YBY0Ieg2ISzdLvd6f43b5YlWq7RA6Pz6ntX/uWA0fAIoraTLvN5nNxklPPvyiQyBAKDQoHYx3CIVwXGUg20UGGkUbnZ9AvGzzl2gEIvn2KmIBzwjgtGU+gOyJSCL0+7e3870NOVX2ld0JqYAwaGtl6iJdalvT0gFkZjZka1WssAhFnGUg20UGGkUbnZ9AvGzzl2gEIvn2KmIBzwjgtGU+gOyHQDWPcSnMAAAgAEAAIAAAACAAgAAgAAAAAALAAAAIRaL0+7e3870NOVX2ld0JqYAwaGtl6iJdalvT0gFkZjZkT0BZ2xFI0VYGsa+XUg+fey92GjBhrTgy6qOY52vHJjFpMnJjL5YMAAAgAEAAIAAAACAAgAAgAAAAAALAAAAARcgcZSDbRQYaRRudn0C8bPOXaAQi+fYqYgHPCOC0ZT6A7IBGCBnbEUjRVgaxr5dSD597L3YaMGGtODLqo5jna8cmMWkyQAA
# bitcoin-cli decodepsbt
{
"tx": {
"txid": "2a69dc6a2cf35e93f79d10c375977b92248b848f2fe8ad567f0f21bd71e817dd",
"hash": "2a69dc6a2cf35e93f79d10c375977b92248b848f2fe8ad567f0f21bd71e817dd",
"version": 2,
"size": 82,
"vsize": 82,
"weight": 328,
"locktime": 0,
"vin": [
{
"txid": "eea298df007e655015ef3440c697dc986762f6e48da4f787e1ecb84a66058832",
"vout": 0,
"scriptSig": {
"asm": "",
"hex": ""
},
"sequence": 6
}
],
"vout": [
{
"value": 0.00013915,
"n": 0,
"scriptPubKey": {
"asm": "0 4750d85931a21dd47a2e3e797b0d1fd0b919b581",
"desc": "addr(tb1qgagdskf35gwag73w8euhkrgl6zu3ndvp9ngt2u)#rfs844f3",
"hex": "00144750d85931a21dd47a2e3e797b0d1fd0b919b581",
"address": "tb1qgagdskf35gwag73w8euhkrgl6zu3ndvp9ngt2u",
"type": "witness_v0_keyhash"
}
}
]
},
"global_xpubs": [
],
"psbt_version": 0,
"proprietary": [
],
"unknown": {
},
"inputs": [
{
"witness_utxo": {
"amount": 0.00015319,
"scriptPubKey": {
"asm": "1 9a5549b79a1e6ee84759e16e76d16f473e278b5ec737346d8d1e079a6f239b18",
"desc": "rawtr(9a5549b79a1e6ee84759e16e76d16f473e278b5ec737346d8d1e079a6f239b18)#8g93t5kf",
"hex": "51209a5549b79a1e6ee84759e16e76d16f473e278b5ec737346d8d1e079a6f239b18",
"address": "tb1pnf25ndu6rehws36eu9h8d5t0gulz0z67cumngmvdrcre5mernvvqtu7xjq",
"type": "witness_v1_taproot"
}
},
"taproot_script_path_sigs": [
{
"pubkey": "8bd3eededfcef434e557da577426a600c1a1ad97a88975a96f4f48059198d991",
"leaf_hash": "676c452345581ac6be5d483e7decbdd868c186b4e0cbaa8e639daf1c98c5a4c9",
"sig": "8b7ef0e8dea3e2fa3b60163421e836212cdd2ef77a7f8ddbe58956abb440e8fcfa9ed5ffb960347c0228ada4cbbcde673719253cfbf2890c8100a0d0a07631dc"
}
],
"taproot_scripts": [
{
"script": "208bd3eededfcef434e557da577426a600c1a1ad97a88975a96f4f48059198d991ad56b2",
"leaf_ver": 192,
"control_blocks": [
"c17194836d141869146e767d02f1b3ce5da0108be7d8a988073c2382d194fa03b2"
]
}
],
"taproot_bip32_derivs": [
{
"pubkey": "7194836d141869146e767d02f1b3ce5da0108be7d8a988073c2382d194fa03b2",
"master_fingerprint": "d63dc4a7",
"path": "m/48h/1h/0h/2h/0/11",
"leaf_hashes": [
]
},
{
"pubkey": "8bd3eededfcef434e557da577426a600c1a1ad97a88975a96f4f48059198d991",
"master_fingerprint": "c98cbe58",
"path": "m/48h/1h/0h/2h/0/11",
"leaf_hashes": [
"676c452345581ac6be5d483e7decbdd868c186b4e0cbaa8e639daf1c98c5a4c9"
]
}
],
"taproot_internal_key": "7194836d141869146e767d02f1b3ce5da0108be7d8a988073c2382d194fa03b2",
"taproot_merkle_root": "676c452345581ac6be5d483e7decbdd868c186b4e0cbaa8e639daf1c98c5a4c9"
}
],
"outputs": [
{
}
],
"fee": 0.00001404
}
It appears combined, ready for finalize/extract?
# bitcoin-cli analyzepsbt
{
"inputs": [
{
"has_utxo": true,
"is_final": false,
"next": "finalizer"
}
],
"fee": 0.00001404,
"next": "finalizer"
}
Does finalize and extract! ... and could be broadcasted
# bitcoin-cli finalizepsbt
{
"hex": "02000000000101328805664ab8ece187f7a48de4f6626798dc97c64034ef1550657e00df98a2ee000000000006000000015b360000000000001600144750d85931a21dd47a2e3e797b0d1fd0b919b58103408b7ef0e8dea3e2fa3b60163421e836212cdd2ef77a7f8ddbe58956abb440e8fcfa9ed5ffb960347c0228ada4cbbcde673719253cfbf2890c8100a0d0a07631dc24208bd3eededfcef434e557da577426a600c1a1ad97a88975a96f4f48059198d991ad56b221c17194836d141869146e767d02f1b3ce5da0108be7d8a988073c2382d194fa03b200000000",
"complete": true
}
sign to sdcard with Krux (binary .psbt file converted to b64)
cHNidP8BAFICAAAAATKIBWZKuOzhh/ekjeT2YmeY3JfGQDTvFVBlfgDfmKLuAAAAAAAGAAAAAVs2AAAAAAAAFgAUR1DYWTGiHdR6Lj55ew0f0LkZtYEAAAAAAAEBK9c7AAAAAAAAIlEgmlVJt5oebuhHWeFudtFvRz4ni17HNzRtjR4Hmm8jmxhBFIvT7t7fzvQ05VfaV3QmpgDBoa2XqIl1qW9PSAWRmNmRZ2xFI0VYGsa+XUg+fey92GjBhrTgy6qOY52vHJjFpMlAi37w6N6j4vo7YBY0Ieg2ISzdLvd6f43b5YlWq7RA6Pz6ntX/uWA0fAIoraTLvN5nNxklPPvyiQyBAKDQoHYx3CIVwXGUg20UGGkUbnZ9AvGzzl2gEIvn2KmIBzwjgtGU+gOyJSCL0+7e3870NOVX2ld0JqYAwaGtl6iJdalvT0gFkZjZka1WssAhFnGUg20UGGkUbnZ9AvGzzl2gEIvn2KmIBzwjgtGU+gOyHQDWPcSnMAAAgAEAAIAAAACAAgAAgAAAAAALAAAAIRaL0+7e3870NOVX2ld0JqYAwaGtl6iJdalvT0gFkZjZkT0BZ2xFI0VYGsa+XUg+fey92GjBhrTgy6qOY52vHJjFpMnJjL5YMAAAgAEAAIAAAACAAgAAgAAAAAALAAAAARcgcZSDbRQYaRRudn0C8bPOXaAQi+fYqYgHPCOC0ZT6A7IBGCBnbEUjRVgaxr5dSD597L3YaMGGtODLqo5jna8cmMWkyQAA
Direct from krux, it's already effectively combined, It's the same exact psbt as liana was able to give to clipboard via "copy" after updating the trimed krux-signed psbt. Both of these should be ready to finalize, extract and broadcast, whether combined by krux or liana.
In fact, we can simply import the combined PSBT from Liana (or krux) at the PSBT screen, and broadcast from there (even if its the psbt we copied from Liana after the "422: failed to finalize psbt".
Or we can delete the psbt, import the original from liana (cut/paste), update it with the combined version from krux's sign-to-sdcard (which is the same combined psbt that liana create when updated with krux's sign-to-qr), then liana can broadcast without the "422: failed to finalize psbt" error.