refactor: Remove CAddressBookData::destdata
This is cleanup that doesn't change external behavior. - Removes awkward `StringMap` intermediate representation - Simplifies CWallet code, deals with used address and received request serialization in walletdb.cpp - Adds test coverage and documentation - Reduces memory usage This PR doesn't change externally observable behavior. Internally, only change in behavior is that EraseDestData deletes directly from database because the `StringMap` is gone. This is more direct and efficient because it uses a single btree lookup and scan instead of multiple lookups Motivation for this cleanup is making changes like #18550, #18192, #13756 easier to reason about and less likely to result in unintended behavior and bugs Co-authored-by: furszy <matiasfurszyfer@protonmail.com>
This commit is contained in:
1 parent
5938ad0bdb
commit
a5986e82dd
6 files changed
+164
-86
No files matched your search
@@ -228,9 +228,22 @@ public:
|
||||
return m_wallet->GetAddressReceiveRequests();
|
||||
}
|
||||
bool setAddressReceiveRequest(const CTxDestination& dest, const std::string& id, const std::string& value) override {
|
||||
// Note: The setAddressReceiveRequest interface used by the GUI to store
|
||||
// receive requests is a little awkward and could be improved in the
|
||||
// future:
|
||||
//
|
||||
// - The same method is used to save requests and erase them, but
|
||||
// having separate methods could be clearer and prevent bugs.
|
||||
//
|
||||
// - Request ids are passed as strings even though they are generated as
|
||||
// integers.
|
||||
//
|
||||
// - Multiple requests can be stored for the same address, but it might
|
||||
// be better to only allow one request or only keep the current one.
|
||||
LOCK(m_wallet->cs_wallet);
|
||||
WalletBatch batch{m_wallet->GetDatabase()};
|
||||
return m_wallet->SetAddressReceiveRequest(batch, dest, id, value);
|
||||
return value.empty() ? m_wallet->EraseAddressReceiveRequest(batch, dest, id)
|
||||
: m_wallet->SetAddressReceiveRequest(batch, dest, id, value);
|
||||
}
|
||||
bool displayAddress(const CTxDestination& dest) override
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user