aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile.test.include
diff options
context:
space:
mode:
authorRussell Yanofsky <russ@yanofsky.org>2021-02-16 22:36:26 -0500
committerRussell Yanofsky <russ@yanofsky.org>2021-11-15 09:11:44 -0500
commitd8ee8f3cd32bbfefec931724f5798cbb088ceb6f (patch)
tree09bea6475822b6b37ca0050d03a4394946af35a3 /src/Makefile.test.include
parent2efc8c0999a4b99cfe3076f7312806e83e778261 (diff)
downloadbitcoin-d8ee8f3cd32bbfefec931724f5798cbb088ceb6f.tar.xz
refactor: Make CWalletTx sync state type-safe
Current CWalletTx state representation makes it possible to set inconsistent states that won't be handled correctly by wallet sync code or serialized & deserialized back into the same form. For example, it is possible to call setConflicted without setting a conflicting block hash, or setConfirmed with no transaction index. And it's possible update individual m_confirm and fInMempool data fields without setting an overall consistent state that can be serialized and handled correctly. Fix this without changing behavior by using std::variant, instead of an enum and collection of fields, to represent sync state, so state tracking code is safer and more legible. This is a first step to fixing state tracking bugs https://github.com/bitcoin-core/bitcoin-devwiki/wiki/Wallet-Transaction-Conflict-Tracking, by adding an extra margin of safety that can prevent new bugs from being introduced as existing bugs are fixed.
Diffstat (limited to 'src/Makefile.test.include')
-rw-r--r--src/Makefile.test.include1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/Makefile.test.include b/src/Makefile.test.include
index da4b85665f..f5d5f07c25 100644
--- a/src/Makefile.test.include
+++ b/src/Makefile.test.include
@@ -159,6 +159,7 @@ BITCOIN_TESTS += \
wallet/test/wallet_tests.cpp \
wallet/test/walletdb_tests.cpp \
wallet/test/wallet_crypto_tests.cpp \
+ wallet/test/wallet_transaction_tests.cpp \
wallet/test/coinselector_tests.cpp \
wallet/test/init_tests.cpp \
wallet/test/ismine_tests.cpp \