mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-14 12:43:40 +02:00
Merge 719cb301e6 into merged_master (Bitcoin PR bitcoin/bitcoin#28492)
This commit is contained in:
commit
c6356154e2
3 changed files with 23 additions and 9 deletions
|
|
@ -1,5 +1,6 @@
|
|||
RPC Wallet
|
||||
----------
|
||||
|
||||
- RPC `walletprocesspsbt` return object now includes field `hex` (if the transaction
|
||||
is complete) containing the serialized transaction suitable for RPC `sendrawtransaction`. (#28414)
|
||||
- RPC `walletprocesspsbt`, and `descriptorprocesspsbt` return object now includes field `hex` (if the transaction
|
||||
is complete) containing the serialized transaction suitable for RPC `sendrawtransaction`.
|
||||
|
||||
|
|
|
|||
|
|
@ -3219,6 +3219,7 @@ RPCHelpMan descriptorprocesspsbt()
|
|||
{
|
||||
{RPCResult::Type::STR, "psbt", "The base64-encoded partially signed transaction"},
|
||||
{RPCResult::Type::BOOL, "complete", "If the transaction has a complete set of signatures"},
|
||||
{RPCResult::Type::STR_HEX, "hex", /*optional=*/true, "The hex-encoded network transaction if complete"},
|
||||
}
|
||||
},
|
||||
RPCExamples{
|
||||
|
|
@ -3259,7 +3260,14 @@ RPCHelpMan descriptorprocesspsbt()
|
|||
|
||||
result.pushKV("psbt", EncodeBase64(ssTx));
|
||||
result.pushKV("complete", complete);
|
||||
|
||||
if (complete) {
|
||||
CMutableTransaction mtx;
|
||||
PartiallySignedTransaction psbtx_copy = psbtx;
|
||||
CHECK_NONFATAL(FinalizeAndExtractPSBT(psbtx_copy, mtx));
|
||||
CDataStream ssTx_final(SER_NETWORK, PROTOCOL_VERSION);
|
||||
ssTx_final << mtx;
|
||||
result.pushKV("hex", HexStr(ssTx_final));
|
||||
}
|
||||
return result;
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1493,17 +1493,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")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue