0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-03-09 15:37:00 -04:00
bitcoin-core/src/wallet
Glenn Willen 565500508a Refactor PSBTInput signing to enforce invariant
Refactor the process of PSBTInput signing to enforce the invariant that
a PSBTInput always has _either_ a witness_utxo or a non_witness_utxo,
never both.

This simplifies the logic of SignPSBTInput slightly, since it no longer
has to deal with the "both" case. When calling it, we now give it, in
order of preference: (1) whichever of the utxo fields was already
present in the PSBT we received, or (2) if neither, the
non_witness_utxo field, which is just a copy of the input transaction,
which we get from the wallet.

SignPSBTInput no longer has to remove one of the two fields; instead, it
will check if we have a witness signature, and if so, it will replace
the non_witness_utxo with the witness_utxo (which is smaller, as it is
just a copy of the output being spent.)

Add PSBTInput::IsSane checks in two more places, which checks for
both utxo fields being present; we will now give an RPC error early on
if we are supplied such a malformed PSBT to fill in.

Also add a check to FillPSBT, to avoid touching any input that is
already signed. (This is now redundant, since we should no longer
potentially harm an already-signed input, but it's harmless.)

fixes #14473
2018-11-01 12:14:21 -07:00
..
test Simplify arguments to SignPSBTInput 2018-11-01 12:11:24 -07:00
coincontrol.cpp Add -avoidpartialspends and m_avoid_partial_spends 2018-07-24 15:05:37 +09:00
coincontrol.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
coinselection.cpp util: Replace boost::signals2 with std::function 2018-08-24 08:34:38 -04:00
coinselection.h amount: Move CAmount CENT to unit test header 2018-09-17 14:34:56 -04:00
crypter.cpp Make objects in range declarations immutable by default. Avoid unnecessary copying of objects in range declarations. 2018-08-27 18:19:33 +02:00
crypter.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
db.cpp wallet: Fix duplicate fileid 2018-10-24 23:08:16 +08:00
db.h wallet: Fix duplicate fileid 2018-10-24 23:08:16 +08:00
feebumper.cpp [wallet] Kill accounts 2018-08-30 16:08:42 +02:00
feebumper.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
fees.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
fees.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
init.cpp wallet: Remove trailing separators from -walletdir arg 2018-09-12 21:05:53 -04:00
rpcdump.cpp Merge #14454: Add SegWit support to importmulti 2018-10-31 17:44:31 +01:00
rpcwallet.cpp Refactor PSBTInput signing to enforce invariant 2018-11-01 12:14:21 -07:00
rpcwallet.h Simplify arguments to SignPSBTInput 2018-11-01 12:11:24 -07:00
wallet.cpp wallet: Add missing locks 2018-10-09 11:58:32 +02:00
wallet.h Add GUARDED_BY(cs_wallet) for setExternalKeyPool, mapKeyMetadata, m_script_metadata and setLockedCoins 2018-10-09 15:04:26 +02:00
walletdb.cpp Merge #13249: Make objects in range declarations immutable by default. Avoid unnecessary copying of objects in range declarations. 2018-09-04 15:50:08 +02:00
walletdb.h [wallet] Kill accounts 2018-08-30 16:08:42 +02:00
walletutil.cpp Remove fs::relative call and fix listwalletdir tests 2018-10-25 15:33:56 +01:00
walletutil.h wallet: Add ListWalletDir utility 2018-10-18 23:26:06 +01:00