diff options
author | Andrew Chow <github@achow101.com> | 2023-09-23 11:48:05 -0400 |
---|---|---|
committer | Andrew Chow <github@achow101.com> | 2023-09-23 11:55:38 -0400 |
commit | 719cb301e69fa15ceed61d6f0fbaebc5eb5c04a9 (patch) | |
tree | a59b4070fc86155f7f8ceaf9b6213d6061e6d586 /test | |
parent | b000ed5ee54438efb72e190262faeb535489d35d (diff) | |
parent | a99e9e655a58b2364a74aec5cafb827a73c6b0c4 (diff) | |
download | bitcoin-719cb301e69fa15ceed61d6f0fbaebc5eb5c04a9.tar.xz |
Merge bitcoin/bitcoin#28492: RPC: `descriptorprocesspsbt` returns hex encoded tx if complete
a99e9e655a58b2364a74aec5cafb827a73c6b0c4 doc: add release note (ismaelsadeeq)
2b4edf889a4b555c8c7f6793fa5d820e5513ecac test: check `descriptorprocesspsbt` return hex encoded tx (ismaelsadeeq)
c405207a18fdee75a4dea470bb0d13e59e15ce45 rpc: `descriptorprocesspsbt` return hex encoded tx (ismaelsadeeq)
Pull request description:
Coming from [#28414 comment](https://github.com/bitcoin/bitcoin/pull/28414#pullrequestreview-1618684391) Same thing also for `descriptorprocesspsbt`.
Before this PR `descriptorprocesspsbt` returns a boolean `complete` which indicates that the psbt is final, users then have to call `finalizepsbt` to get the hex encoded network transaction.
In this PR if the psbt is complete the return object also has the hex encoded network transaction ready for broadcast with `sendrawtransaction`.
This save users calling `finalizepsbt` with the descriptor, if it is already complete.
ACKs for top commit:
achow101:
ACK a99e9e655a58b2364a74aec5cafb827a73c6b0c4
pinheadmz:
ACK a99e9e655a58b2364a74aec5cafb827a73c6b0c4
ishaanam:
ACK a99e9e655a58b2364a74aec5cafb827a73c6b0c4
Tree-SHA512: c3f1b1391d4df05216c463127cd593f8703840430a99febb54890bc66fadabf9d9530860605f347ec54c1694019173247a0e7a9eb879d3cbb420f9e8d9839b75
Diffstat (limited to 'test')
-rwxr-xr-x | test/functional/rpc_psbt.py | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py index c01dc64df0..60df48f025 100755 --- a/test/functional/rpc_psbt.py +++ b/test/functional/rpc_psbt.py @@ -978,17 +978,22 @@ class PSBTTest(BitcoinTestFramework): test_psbt_input_keys(decoded['inputs'][0], ['witness_utxo', 'non_witness_utxo']) # Test that the psbt is not finalized and does not have bip32_derivs unless specified - psbt = self.nodes[2].descriptorprocesspsbt(psbt=psbt, descriptors=[descriptor], sighashtype="ALL", bip32derivs=True, finalize=False)["psbt"] - decoded = self.nodes[2].decodepsbt(psbt) + processed_psbt = self.nodes[2].descriptorprocesspsbt(psbt=psbt, descriptors=[descriptor], sighashtype="ALL", bip32derivs=True, finalize=False) + decoded = self.nodes[2].decodepsbt(processed_psbt['psbt']) test_psbt_input_keys(decoded['inputs'][0], ['witness_utxo', 'non_witness_utxo', 'partial_signatures', 'bip32_derivs']) - psbt = self.nodes[2].descriptorprocesspsbt(psbt=psbt, descriptors=[descriptor], sighashtype="ALL", bip32derivs=False, finalize=True)["psbt"] - decoded = self.nodes[2].decodepsbt(psbt) + # If psbt not finalized, test that result does not have hex + assert "hex" not in processed_psbt + + processed_psbt = self.nodes[2].descriptorprocesspsbt(psbt=psbt, descriptors=[descriptor], sighashtype="ALL", bip32derivs=False, finalize=True) + decoded = self.nodes[2].decodepsbt(processed_psbt['psbt']) test_psbt_input_keys(decoded['inputs'][0], ['witness_utxo', 'non_witness_utxo', 'final_scriptwitness']) + # Test psbt is complete + assert_equal(processed_psbt['complete'], True) + # Broadcast transaction - rawtx = self.nodes[2].finalizepsbt(psbt)["hex"] - self.nodes[2].sendrawtransaction(rawtx) + self.nodes[2].sendrawtransaction(processed_psbt['hex']) self.log.info("Test descriptorprocesspsbt raises if an invalid sighashtype is passed") assert_raises_rpc_error(-8, "all is not a valid sighash parameter.", self.nodes[2].descriptorprocesspsbt, psbt, [descriptor], sighashtype="all") |