From c01c7f068c5b67329794bac9354eb112111815ee Mon Sep 17 00:00:00 2001 From: Ava Chow Date: Mon, 16 Mar 2026 21:14:46 -0700 Subject: [PATCH] psbt: Remove default constructor Instead of allowing PSBTs to be default constructor, force usage of the deserialization constructor. CombinePSBTs, DecodeBase64PSBT, and DecodeRawPSBT are all changed to return std::optional or util::result rather than using an output parameter to avoid the need for a default constructor. --- src/external_signer.cpp | 9 ++-- src/psbt.cpp | 28 +++++----- src/psbt.h | 11 ++-- src/qt/test/wallettests.cpp | 5 +- src/qt/walletframe.cpp | 9 ++-- src/rpc/rawtransaction.cpp | 68 +++++++++++------------- src/test/fuzz/base_encode_decode.cpp | 5 +- src/test/fuzz/deserialize.cpp | 16 +++++- src/test/fuzz/psbt.cpp | 23 ++++---- src/test/fuzz/rpc.cpp | 2 +- src/test/fuzz/util.h | 13 +++++ src/wallet/rpc/spend.cpp | 8 +-- src/wallet/test/fuzz/scriptpubkeyman.cpp | 2 +- src/wallet/test/psbt_wallet_tests.cpp | 3 +- 14 files changed, 108 insertions(+), 94 deletions(-) diff --git a/src/external_signer.cpp b/src/external_signer.cpp index 3790f4d36f9..2da9502669a 100644 --- a/src/external_signer.cpp +++ b/src/external_signer.cpp @@ -112,14 +112,13 @@ bool ExternalSigner::SignTransaction(PartiallySignedTransaction& psbtx, std::str return false; } - PartiallySignedTransaction signer_psbtx; - std::string signer_psbt_error; - if (!DecodeBase64PSBT(signer_psbtx, signer_result.find_value("psbt").get_str(), signer_psbt_error)) { - error = strprintf("TX decode failed %s", signer_psbt_error); + util::Result signer_psbtx = DecodeBase64PSBT(signer_result.find_value("psbt").get_str()); + if (!signer_psbtx) { + error = strprintf("TX decode failed %s", util::ErrorString(signer_psbtx).original); return false; } - psbtx = signer_psbtx; + psbtx = *signer_psbtx; return true; } diff --git a/src/psbt.cpp b/src/psbt.cpp index 29f16e73c87..1a49d01afcf 100644 --- a/src/psbt.cpp +++ b/src/psbt.cpp @@ -9,6 +9,7 @@ #include #include