diff --git a/contrib/assets_tutorial/pset_swap_tutorial.py b/contrib/assets_tutorial/pset_swap_tutorial.py index 1506cfbe07..ff03ff63df 100755 --- a/contrib/assets_tutorial/pset_swap_tutorial.py +++ b/contrib/assets_tutorial/pset_swap_tutorial.py @@ -252,7 +252,7 @@ filled_pset = alice.combinepsbt([alice_pset, carol_pset]) # Use `analyzepsbt` to see what's happening analysis = alice.analyzepsbt(filled_pset) -#assert analysis["next"] == "blinder" ## FIXME: should be "blinder" but is actually "signer" +assert analysis["next"] == "blinder" assert all([x["has_utxo"] for x in analysis["inputs"]]) assert not any([x["is_final"] for x in analysis["inputs"]]) assert all([x["next"] == "signer" for x in analysis["inputs"]]) diff --git a/src/node/psbt.cpp b/src/node/psbt.cpp index dc0a5e87c8..a9e76c1493 100644 --- a/src/node/psbt.cpp +++ b/src/node/psbt.cpp @@ -22,6 +22,7 @@ PSBTAnalysis AnalyzePSBT(PartiallySignedTransaction psbtx) bool has_blinded_outputs = false; result.inputs.resize(psbtx.inputs.size()); + result.next = PSBTRole::EXTRACTOR; for (unsigned int i = 0; i < psbtx.inputs.size(); ++i) { PSBTInput& input = psbtx.inputs[i]; @@ -150,7 +151,6 @@ PSBTAnalysis AnalyzePSBT(PartiallySignedTransaction psbtx) } // Calculate next role for PSBT by grabbing "minimum" PSBTInput next role - result.next = PSBTRole::EXTRACTOR; for (unsigned int i = 0; i < psbtx.inputs.size(); ++i) { PSBTInputAnalysis& input_analysis = result.inputs[i]; result.next = std::min(result.next, input_analysis.next);