refactor: use PSBTFillOptions for filling and signing

Replace the sign, finalize , bip32derivs and sighash_type arguments which
are passed to FillPSBT() and SignPSBTInput() with a PSBTFillOptions struct.

This makes it easier to add additional options later without large code
churn, such as avoid_script_path proposed in #32857. It also makes the
use of default boolean options safer compared to positional arguments
that can easily get mixed up.
This commit is contained in:
Sjors Provoost
2025-07-04 15:09:24 +02:00
parent 8592152186
commit dc4a5d1270
20 changed files with 89 additions and 69 deletions

View File

@@ -337,8 +337,8 @@ bool SignTransaction(CWallet& wallet, CMutableTransaction& mtx) {
// First fill transaction with our data without signing,
// so external signers are not asked to sign more than once.
bool complete;
wallet.FillPSBT(psbtx, complete, std::nullopt, /*sign=*/false, /*bip32derivs=*/true);
auto err{wallet.FillPSBT(psbtx, complete, std::nullopt, /*sign=*/true, /*bip32derivs=*/false)};
wallet.FillPSBT(psbtx, {.sign = false, .bip32_derivs = true}, complete);
auto err{wallet.FillPSBT(psbtx, {.sign = true, .bip32_derivs = false}, complete)};
if (err) return false;
complete = FinalizeAndExtractPSBT(psbtx, mtx);
return complete;