aboutsummaryrefslogtreecommitdiff
path: root/src/rpc
diff options
context:
space:
mode:
authorAndrew Chow <github@achow101.com>2023-09-23 11:48:05 -0400
committerAndrew Chow <github@achow101.com>2023-09-23 11:55:38 -0400
commit719cb301e69fa15ceed61d6f0fbaebc5eb5c04a9 (patch)
treea59b4070fc86155f7f8ceaf9b6213d6061e6d586 /src/rpc
parentb000ed5ee54438efb72e190262faeb535489d35d (diff)
parenta99e9e655a58b2364a74aec5cafb827a73c6b0c4 (diff)
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 'src/rpc')
-rw-r--r--src/rpc/rawtransaction.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp
index fa5dd281a1..31ca126862 100644
--- a/src/rpc/rawtransaction.cpp
+++ b/src/rpc/rawtransaction.cpp
@@ -1949,6 +1949,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{
@@ -1989,7 +1990,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;
},
};