mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-05 03:18:50 +02:00
Merge #10973: Refactor: separate wallet from node
d358466deRemove remaining wallet accesses to node globals (Russell Yanofsky)b1b2b2389Remove use of CCoinsViewMemPool::GetCoin in wallet code (Russell Yanofsky)4e4d9e9f8Remove use of CRPCTable::appendCommand in wallet code (Russell Yanofsky)91868e628Remove use CValidationInterface in wallet code (Russell Yanofsky) Pull request description: This PR is the last in a chain of PRs (#14437, #14711, and #15288) that make the wallet code access node state through an abstract [`Chain`](https://github.com/ryanofsky/bitcoin/blob/pr/wipc-sep/src/interfaces/chain.h) class in [`src/interfaces/`](https://github.com/ryanofsky/bitcoin/tree/pr/wipc-sep/src/interfaces) instead of using global variables like `cs_main`, `chainActive`, and `g_connman`. After this PR, wallet code no longer accesses global variables declared outside the wallet directory, and no longer calls functions accessing those globals (as verified by the `hide-globals` script in #10244). This PR and the previous PRs have been refactoring changes that do not affect behavior. Previous PRs have consisted of lots of mechanical changes like: ```diff - wtx.nTimeReceived = GetAdjustedTime(); + wtx.nTimeReceived = m_chain->getAdjustedTime(); ``` This PR is smaller, but less mechanical. It replaces last few bits of wallet code that access node state directly (through `CValidationInterface`, `CRPCTable`, and `CCoinsViewMemPool` interfaces) with code that uses the `Chain` interface. These changes allow followup PR #10102 (multiprocess gui & wallet PR) to work without any significant updates to wallet code. Additionally they: * Provide a single place to describe the interface between wallet and node code. * Can make better wallet testing possible, because the `Chain` object consists of virtual methods that can be overloaded for mocking. (This could be used to test edge cases in the rescan code, for example). Tree-SHA512: e6291d8a3c50bdff18a9c8ad11e729beb30b5b7040d7aaf31ba678800b4a97b2dd2be76340b1e5c01fe2827d67d37ed1bb4c8380cf8ed653aadfea003e9b22e7
This commit is contained in:
@@ -31,10 +31,9 @@ UniValue CallRPC(std::string args)
|
||||
request.strMethod = strMethod;
|
||||
request.params = RPCConvertValues(strMethod, vArgs);
|
||||
request.fHelp = false;
|
||||
BOOST_CHECK(tableRPC[strMethod]);
|
||||
rpcfn_type method = tableRPC[strMethod]->actor;
|
||||
if (RPCIsInWarmup(nullptr)) SetRPCWarmupFinished();
|
||||
try {
|
||||
UniValue result = (*method)(request);
|
||||
UniValue result = tableRPC.execute(request);
|
||||
return result;
|
||||
}
|
||||
catch (const UniValue& objError) {
|
||||
|
||||
Reference in New Issue
Block a user