diff options
author | Andrew Chow <achow101-github@achow101.com> | 2018-09-11 00:11:00 -0400 |
---|---|---|
committer | Andrew Chow <achow101-github@achow101.com> | 2018-09-11 00:11:00 -0400 |
commit | fcefc6851a624b59bd1bb42d211ce69f85969880 (patch) | |
tree | bba1b914079964cb51a1dbbba653202910978917 /src/wallet | |
parent | fcdea8ad2ac1f4f55133fdf9047410631e9cc21f (diff) | |
download | bitcoin-fcefc6851a624b59bd1bb42d211ce69f85969880.tar.xz |
Convert non-witness UTXOs to witness if witness sig created
If a witness signature was created when a non-witness UTXO is used,
convert the non-witness UTXO to a witness one.
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/rpcwallet.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 96e63dac23..b268e9a877 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -4525,6 +4525,13 @@ bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, const C complete &= SignPSBTInput(PublicOnlySigningProvider(pwallet), *psbtx.tx, input, sigdata, i, sighash_type); } + if (sigdata.witness) { + // Convert the non-witness utxo to witness + if (input.witness_utxo.IsNull() && input.non_witness_utxo) { + input.witness_utxo = input.non_witness_utxo->vout[txin.prevout.n]; + } + } + // If both UTXO types are present, drop the unnecessary one. if (input.non_witness_utxo && !input.witness_utxo.IsNull()) { if (sigdata.witness) { |