diff options
author | Andrew Chow <achow101-github@achow101.com> | 2022-07-11 14:21:46 -0400 |
---|---|---|
committer | Andrew Chow <achow101-github@achow101.com> | 2022-07-11 18:08:32 -0400 |
commit | d2ed97656bba050051cfc677f1fa7eb3fc633f7d (patch) | |
tree | ec3c8f696968f2f94315a315b17d45385369e125 /src | |
parent | 0817cc379f6b4c65311a682fdc7c6b204aa6a7df (diff) | |
download | bitcoin-d2ed97656bba050051cfc677f1fa7eb3fc633f7d.tar.xz |
wallet: Precompute Txdata after setting PSBT inputs' UTXOs
If we are given a PSBT that is missing one or more input UTXOs, our
PrecomputedTransactionData will be incorrect and missing information
that it should otherwise have, and therefore we may not produce a
signature when we should. To avoid this problem, we can do the
precomputation after we have set the UTXOs the wallet is able to set for
the PSBT.
Also adds a test for this behavior.
Diffstat (limited to 'src')
-rw-r--r-- | src/wallet/wallet.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 3349b119cc..2981797913 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -1969,7 +1969,6 @@ TransactionError CWallet::FillPSBT(PartiallySignedTransaction& psbtx, bool& comp if (n_signed) { *n_signed = 0; } - const PrecomputedTransactionData txdata = PrecomputePSBTData(psbtx); LOCK(cs_wallet); // Get all of the previous transactions for (unsigned int i = 0; i < psbtx.tx->vin.size(); ++i) { @@ -1993,6 +1992,8 @@ TransactionError CWallet::FillPSBT(PartiallySignedTransaction& psbtx, bool& comp } } + const PrecomputedTransactionData txdata = PrecomputePSBTData(psbtx); + // Fill in information from ScriptPubKeyMans for (ScriptPubKeyMan* spk_man : GetAllScriptPubKeyMans()) { int n_signed_this_spkm = 0; |