We've been quite successful in eliminating these lately (#7905, #7691).
It would be nice to disentangle the wallet and non-wallet initialization completely so that init.cpp no longer depends on the wallet (and thus, libbitcoin_server.a no longer depends on libbitcoin_wallet.a - the other way is fine, a circular dependency is not).
Ignoring the GUI for now (which still needs some work in this direction), the following are left:
The first phase would be to introduce the new (wallet-only) methods, then a release later remove wallet functionality from the core-only calls.
We've been quite successful in eliminating these lately (#7905, #7691).
It would be nice to disentangle the wallet and non-wallet initialization completely so that init.cpp no longer depends on the wallet (and thus,
libbitcoin_server.ano longer depends onlibbitcoin_wallet.a- the other way is fine, a circular dependency is not).Ignoring the GUI for now (which still needs some work in this direction), the following are left:
init.cpp: these are mostly self-contained and short. ([wallet] Remove Wallet dependencies from init.cpp #10762)CWallet::InitLoadWalletCWallet::Verify(fixed in init: Move berkeleydb version reporting to wallet #8036).-walletbroadcast,-prune+-rescan) should move to wallet module (possibly a new call that can be called in addition toInitParameterInteraction())CWallet::InitLoadWallet.-disablewalletcould result in the wallet not being registered at all, and that can all be handled from outside init.rpcmisc.cppgetinfo- this call is already on the list to be deprecated for a long time ((finally) remove getinfo #10838)validateaddress- should be split up into an utility-onlyvalidateaddressand a wallet-specific callgetaddressinfo(name open for discussion) ([RPC] Split part of validateaddress into getaddressinfo #10583)createmultisig- same.createmultisigandwalletcreatemultisigor so ([RPC] Disallow using addresses in createmultisig #11415)rpcblockchain.cppsignrawtransaction- should be split into an utility-onlysignrawtransactionand a wallet-specific callwalletsignrawtransaction([RPC] Split signrawtransaction into wallet and non-wallet RPC command #10579)validateaddressandsignrawtransactionwallet dependency completely ([Wallet] [RPC] Remove deprecated wallet rpc features from bitcoin_server #12490)ENABLE_WALLETbut an implicit assumption and a circuitous registration system. Thegeneratecall should be a wallet-specific call, whereasgeneratetoaddressis core. See discussion in [mining] allow other signal listeners to provide scripts for mining #6481. (done in rpc: Move thegenerateRPC call to rpcwallet #10683).httprpc.cpp, there are #ifdef ENABLE_WALLETs protecting registration/unregistration of the wallet endpoint. These can trivially be replaced with calls into the WalletInitInterface.interfaces/node.cpp, #ifdef ENABLE_WALLET protects the calls to getWallets(). This can easily be replaced by calls into a wallet manager/dummy wallet manager.The first phase would be to introduce the new (wallet-only) methods, then a release later remove wallet functionality from the core-only calls.