7bf6dfbb48wallet: Remove path checking code from bitcoin-wallet tool (Russell Yanofsky)77d5bb72b8wallet: Remove path checking code from createwallet RPC (Russell Yanofsky)a987438e9dwallet: Remove path checking code from loadwallet RPC (Russell Yanofsky)8b5e7297c0refactor: Pass wallet database into CWallet::Create (Russell Yanofsky)3c815cfe54wallet: Remove Verify and IsLoaded methods (Russell Yanofsky)0d94e60625refactor: Use DatabaseStatus and DatabaseOptions types (Russell Yanofsky)b5b414151awallet: Add MakeDatabase function (Russell Yanofsky)288b4ffb6bRemove WalletLocation class (Russell Yanofsky) Pull request description: Get rid of file path handling in wallet application code and move it down to database layer. There is no change in behavior except for some changed error messages. Motivation for this change is to make code more understandable, but also to prepare for adding SQLite support in #19077 so SQLite implementation can be contained at the database layer and wallet loading code does not need to become more complicated. ACKs for top commit: achow101: ACK7bf6dfbb48meshcollider: Code re-review and functional test run ACK7bf6dfbb48Tree-SHA512: 23ad18324c9e8947f0cf88a3734c2e9fb25536b2cb4d552cf5d1a4ade320fbffb73bb2d1b3a99585c11630aa7092e0fcfc2dd4fe65b91e3a54161433a5cd13cb
Internal c++ interfaces
The following interfaces are defined here:
-
Chain— used by wallet to access blockchain and mempool state. Added in #14437, #14711, #15288, and #10973. -
ChainClient— used by node to start & stopChainclients. Added in #14437. -
Node— used by GUI to start & stop bitcoin node. Added in #10244. -
Handler— returned byhandleEventmethods on interfaces above and used to manage lifetimes of event handlers. -
Init— used by multiprocess code to access interfaces above on startup. Added in #10102.
The interfaces above define boundaries between major components of bitcoin code (node, wallet, and gui), making it possible for them to run in different processes, and be tested, developed, and understood independently. These interfaces are not currently designed to be stable or to be used externally.