diff --git a/src/init.cpp b/src/init.cpp --- a/src/init.cpp +++ b/src/init.cpp @@ -2281,7 +2281,7 @@ // Step 5: verify wallet database integrity for (const auto &client : node.chain_clients) { - if (!client->verify(chainparams)) { + if (!client->verify()) { return false; } } @@ -2833,7 +2833,7 @@ // Step 9: load wallet for (const auto &client : node.chain_clients) { - if (!client->load(chainparams)) { + if (!client->load()) { return false; } } diff --git a/src/interfaces/chain.h b/src/interfaces/chain.h --- a/src/interfaces/chain.h +++ b/src/interfaces/chain.h @@ -329,10 +329,10 @@ virtual void registerRpcs() = 0; //! Check for errors before loading. - virtual bool verify(const CChainParams &chainParams) = 0; + virtual bool verify() = 0; //! Load saved state. - virtual bool load(const CChainParams &chainParams) = 0; + virtual bool load() = 0; //! Start client execution and provide a scheduler. virtual void start(CScheduler &scheduler) = 0; diff --git a/src/interfaces/wallet.h b/src/interfaces/wallet.h --- a/src/interfaces/wallet.h +++ b/src/interfaces/wallet.h @@ -310,15 +310,15 @@ public: //! Create new wallet. virtual std::unique_ptr - createWallet(const CChainParams ¶ms, const std::string &name, - const SecureString &passphrase, uint64_t wallet_creation_flags, - WalletCreationStatus &status, bilingual_str &error, + createWallet(const std::string &name, const SecureString &passphrase, + uint64_t wallet_creation_flags, WalletCreationStatus &status, + bilingual_str &error, std::vector &warnings) = 0; //! Load existing wallet. virtual std::unique_ptr - loadWallet(const CChainParams ¶ms, const std::string &name, - bilingual_str &error, std::vector &warnings) = 0; + loadWallet(const std::string &name, bilingual_str &error, + std::vector &warnings) = 0; //! Return default wallet directory. virtual std::string getWalletDir() = 0; diff --git a/src/interfaces/wallet.cpp b/src/interfaces/wallet.cpp --- a/src/interfaces/wallet.cpp +++ b/src/interfaces/wallet.cpp @@ -491,13 +491,11 @@ registerRpcs(GetWalletRPCCommands()); registerRpcs(GetWalletDumpRPCCommands()); } - bool verify(const CChainParams &chainParams) override { - return VerifyWallets(chainParams, *m_context.chain, - m_wallet_filenames); + bool verify() override { + return VerifyWallets(*m_context.chain, m_wallet_filenames); } - bool load(const CChainParams &chainParams) override { - return LoadWallets(chainParams, *m_context.chain, - m_wallet_filenames); + bool load() override { + return LoadWallets(*m_context.chain, m_wallet_filenames); } void start(CScheduler &scheduler) override { return StartWallets(scheduler, *Assert(m_context.args)); @@ -508,24 +506,21 @@ //! WalletClient methods std::unique_ptr - createWallet(const CChainParams ¶ms, const std::string &name, - const SecureString &passphrase, + createWallet(const std::string &name, const SecureString &passphrase, uint64_t wallet_creation_flags, WalletCreationStatus &status, bilingual_str &error, std::vector &warnings) override { std::shared_ptr wallet; - status = CreateWallet(params, *m_context.chain, passphrase, + status = CreateWallet(*m_context.chain, passphrase, wallet_creation_flags, name, error, warnings, wallet); return MakeWallet(std::move(wallet)); } std::unique_ptr - loadWallet(const CChainParams ¶ms, const std::string &name, - bilingual_str &error, + loadWallet(const std::string &name, bilingual_str &error, std::vector &warnings) override { - return MakeWallet(LoadWallet(params, *m_context.chain, - WalletLocation(name), error, - warnings)); + return MakeWallet(LoadWallet(*m_context.chain, WalletLocation(name), + error, warnings)); } std::string getWalletDir() override { return GetWalletDir().string(); } std::vector listWalletDir() override { diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -474,8 +474,7 @@ connect(action, &QAction::triggered, [this, path] { auto activity = - new OpenWalletActivity(m_wallet_controller, this, - this->config->GetChainParams()); + new OpenWalletActivity(m_wallet_controller, this); connect(activity, &OpenWalletActivity::opened, this, &BitcoinGUI::setCurrentWallet); connect(activity, &OpenWalletActivity::finished, activity, @@ -494,8 +493,7 @@ this); }); connect(m_create_wallet_action, &QAction::triggered, [this] { - auto activity = new CreateWalletActivity( - m_wallet_controller, this, this->config->GetChainParams()); + auto activity = new CreateWalletActivity(m_wallet_controller, this); connect(activity, &CreateWalletActivity::created, this, &BitcoinGUI::setCurrentWallet); connect(activity, &CreateWalletActivity::finished, activity, diff --git a/src/qt/walletcontroller.h b/src/qt/walletcontroller.h --- a/src/qt/walletcontroller.h +++ b/src/qt/walletcontroller.h @@ -93,8 +93,7 @@ public: WalletControllerActivity(WalletController *wallet_controller, - QWidget *parent_widget, - const CChainParams &chainparams); + QWidget *parent_widget); virtual ~WalletControllerActivity(); Q_SIGNALS: @@ -113,8 +112,6 @@ WalletModel *m_wallet_model{nullptr}; bilingual_str m_error_message; std::vector m_warning_message; - - const CChainParams &m_chainparams; }; class CreateWalletActivity : public WalletControllerActivity { @@ -122,8 +119,7 @@ public: CreateWalletActivity(WalletController *wallet_controller, - QWidget *parent_widget, - const CChainParams &chainparams); + QWidget *parent_widget); virtual ~CreateWalletActivity(); void create(); @@ -146,7 +142,7 @@ public: OpenWalletActivity(WalletController *wallet_controller, - QWidget *parent_widget, const CChainParams &chainparams); + QWidget *parent_widget); void open(const std::string &path); diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp --- a/src/qt/walletcontroller.cpp +++ b/src/qt/walletcontroller.cpp @@ -184,10 +184,9 @@ } WalletControllerActivity::WalletControllerActivity( - WalletController *wallet_controller, QWidget *parent_widget, - const CChainParams &chainparams) + WalletController *wallet_controller, QWidget *parent_widget) : QObject(wallet_controller), m_wallet_controller(wallet_controller), - m_parent_widget(parent_widget), m_chainparams(chainparams) {} + m_parent_widget(parent_widget) {} WalletControllerActivity::~WalletControllerActivity() { delete m_progress_dialog; @@ -211,9 +210,8 @@ } CreateWalletActivity::CreateWalletActivity(WalletController *wallet_controller, - QWidget *parent_widget, - const CChainParams &chainparams) - : WalletControllerActivity(wallet_controller, parent_widget, chainparams) { + QWidget *parent_widget) + : WalletControllerActivity(wallet_controller, parent_widget) { m_passphrase.reserve(MAX_PASSPHRASE_SIZE); } @@ -256,9 +254,9 @@ QTimer::singleShot(500, worker(), [this, name, flags] { WalletCreationStatus status; std::unique_ptr wallet = - node().walletClient().createWallet( - m_chainparams, name, m_passphrase, flags, status, - m_error_message, m_warning_message); + node().walletClient().createWallet(name, m_passphrase, flags, + status, m_error_message, + m_warning_message); if (status == WalletCreationStatus::SUCCESS) { m_wallet_model = @@ -309,9 +307,8 @@ } OpenWalletActivity::OpenWalletActivity(WalletController *wallet_controller, - QWidget *parent_widget, - const CChainParams &chainparams) - : WalletControllerActivity(wallet_controller, parent_widget, chainparams) {} + QWidget *parent_widget) + : WalletControllerActivity(wallet_controller, parent_widget) {} void OpenWalletActivity::finish() { destroyProgressDialog(); @@ -343,8 +340,8 @@ QTimer::singleShot(0, worker(), [this, path] { std::unique_ptr wallet = - node().walletClient().loadWallet( - this->m_chainparams, path, m_error_message, m_warning_message); + node().walletClient().loadWallet(path, m_error_message, + m_warning_message); if (wallet) { m_wallet_model = diff --git a/src/wallet/load.h b/src/wallet/load.h --- a/src/wallet/load.h +++ b/src/wallet/load.h @@ -10,7 +10,6 @@ #include class ArgsManager; -class CChainParams; class CScheduler; namespace interfaces { @@ -19,11 +18,11 @@ //! Responsible for reading and validating the -wallet arguments and verifying //! the wallet database. -bool VerifyWallets(const CChainParams &chainParams, interfaces::Chain &chain, +bool VerifyWallets(interfaces::Chain &chain, const std::vector &wallet_files); //! Load wallet databases. -bool LoadWallets(const CChainParams &chainParams, interfaces::Chain &chain, +bool LoadWallets(interfaces::Chain &chain, const std::vector &wallet_files); //! Complete startup of wallets. diff --git a/src/wallet/load.cpp b/src/wallet/load.cpp --- a/src/wallet/load.cpp +++ b/src/wallet/load.cpp @@ -13,7 +13,7 @@ #include #include -bool VerifyWallets(const CChainParams &chainParams, interfaces::Chain &chain, +bool VerifyWallets(interfaces::Chain &chain, const std::vector &wallet_files) { if (gArgs.IsArgSet("-walletdir")) { fs::path wallet_dir = gArgs.GetArg("-walletdir", ""); @@ -61,8 +61,8 @@ bilingual_str error_string; std::vector warnings; - bool verify_success = CWallet::Verify(chainParams, chain, location, - error_string, warnings); + bool verify_success = + CWallet::Verify(chain, location, error_string, warnings); if (!warnings.empty()) { chain.initWarning(Join(warnings, Untranslated("\n"))); } @@ -75,15 +75,14 @@ return true; } -bool LoadWallets(const CChainParams &chainParams, interfaces::Chain &chain, +bool LoadWallets(interfaces::Chain &chain, const std::vector &wallet_files) { try { for (const std::string &walletFile : wallet_files) { bilingual_str error; std::vector warnings; std::shared_ptr pwallet = CWallet::CreateWalletFromFile( - chainParams, chain, WalletLocation(walletFile), error, - warnings); + chain, WalletLocation(walletFile), error, warnings); if (!warnings.empty()) { chain.initWarning(Join(warnings, Untranslated("\n"))); } diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -3121,8 +3121,6 @@ } .Check(request); - const CChainParams &chainParams = config.GetChainParams(); - WalletContext &context = EnsureWalletContext(request.context); WalletLocation location(request.params[0].get_str()); @@ -3143,7 +3141,7 @@ bilingual_str error; std::vector warnings; std::shared_ptr const wallet = - LoadWallet(chainParams, *context.chain, location, error, warnings); + LoadWallet(*context.chain, location, error, warnings); if (!wallet) { throw JSONRPCError(RPC_WALLET_ERROR, error.original); } @@ -3309,7 +3307,7 @@ bilingual_str error; std::shared_ptr wallet; WalletCreationStatus status = - CreateWallet(config.GetChainParams(), *context.chain, passphrase, flags, + CreateWallet(*context.chain, passphrase, flags, request.params[0].get_str(), error, warnings, wallet); switch (status) { case WalletCreationStatus::CREATION_FAILED: diff --git a/src/wallet/test/init_tests.cpp b/src/wallet/test/init_tests.cpp --- a/src/wallet/test/init_tests.cpp +++ b/src/wallet/test/init_tests.cpp @@ -2,7 +2,6 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include #include #include #include @@ -16,7 +15,7 @@ BOOST_AUTO_TEST_CASE(walletinit_verify_walletdir_default) { SetWalletDir(m_walletdir_path_cases["default"]); - bool result = m_wallet_client->verify(Params()); + bool result = m_wallet_client->verify(); BOOST_CHECK(result == true); fs::path walletdir = gArgs.GetArg("-walletdir", ""); fs::path expected_path = fs::canonical(m_walletdir_path_cases["default"]); @@ -25,7 +24,7 @@ BOOST_AUTO_TEST_CASE(walletinit_verify_walletdir_custom) { SetWalletDir(m_walletdir_path_cases["custom"]); - bool result = m_wallet_client->verify(Params()); + bool result = m_wallet_client->verify(); BOOST_CHECK(result == true); fs::path walletdir = gArgs.GetArg("-walletdir", ""); fs::path expected_path = fs::canonical(m_walletdir_path_cases["custom"]); @@ -36,7 +35,7 @@ SetWalletDir(m_walletdir_path_cases["nonexistent"]); { ASSERT_DEBUG_LOG("does not exist"); - bool result = m_wallet_client->verify(Params()); + bool result = m_wallet_client->verify(); BOOST_CHECK(result == false); } } @@ -45,7 +44,7 @@ SetWalletDir(m_walletdir_path_cases["file"]); { ASSERT_DEBUG_LOG("is not a directory"); - bool result = m_wallet_client->verify(Params()); + bool result = m_wallet_client->verify(); BOOST_CHECK(result == false); } } @@ -54,14 +53,14 @@ SetWalletDir(m_walletdir_path_cases["relative"]); { ASSERT_DEBUG_LOG("is a relative path"); - bool result = m_wallet_client->verify(Params()); + bool result = m_wallet_client->verify(); BOOST_CHECK(result == false); } } BOOST_AUTO_TEST_CASE(walletinit_verify_walletdir_no_trailing) { SetWalletDir(m_walletdir_path_cases["trailing"]); - bool result = m_wallet_client->verify(Params()); + bool result = m_wallet_client->verify(); BOOST_CHECK(result == true); fs::path walletdir = gArgs.GetArg("-walletdir", ""); fs::path expected_path = fs::canonical(m_walletdir_path_cases["default"]); @@ -70,7 +69,7 @@ BOOST_AUTO_TEST_CASE(walletinit_verify_walletdir_no_trailing2) { SetWalletDir(m_walletdir_path_cases["trailing2"]); - bool result = m_wallet_client->verify(Params()); + bool result = m_wallet_client->verify(); BOOST_CHECK(result == true); fs::path walletdir = gArgs.GetArg("-walletdir", ""); fs::path expected_path = fs::canonical(m_walletdir_path_cases["default"]); diff --git a/src/wallet/test/wallet_tests.cpp b/src/wallet/test/wallet_tests.cpp --- a/src/wallet/test/wallet_tests.cpp +++ b/src/wallet/test/wallet_tests.cpp @@ -34,8 +34,8 @@ static std::shared_ptr TestLoadWallet(interfaces::Chain &chain) { bilingual_str error; std::vector warnings; - auto wallet = CWallet::CreateWalletFromFile( - chain.params(), chain, WalletLocation(""), error, warnings); + auto wallet = CWallet::CreateWalletFromFile(chain, WalletLocation(""), + error, warnings); wallet->postInitProcess(); return wallet; } diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -58,8 +58,7 @@ bool RemoveWallet(const std::shared_ptr &wallet); std::vector> GetWallets(); std::shared_ptr GetWallet(const std::string &name); -std::shared_ptr LoadWallet(const CChainParams &chainParams, - interfaces::Chain &chain, +std::shared_ptr LoadWallet(interfaces::Chain &chain, const WalletLocation &location, bilingual_str &error, std::vector &warnings); @@ -67,8 +66,7 @@ enum class WalletCreationStatus { SUCCESS, CREATION_FAILED, ENCRYPTION_FAILED }; -WalletCreationStatus CreateWallet(const CChainParams ¶ms, - interfaces::Chain &chain, +WalletCreationStatus CreateWallet(interfaces::Chain &chain, const SecureString &passphrase, uint64_t wallet_creation_flags, const std::string &name, bilingual_str &error, @@ -1384,8 +1382,7 @@ bool AbandonTransaction(const TxId &txid); //! Verify wallet naming and perform salvage on the wallet if required - static bool Verify(const CChainParams &chainParams, - interfaces::Chain &chain, const WalletLocation &location, + static bool Verify(interfaces::Chain &chain, const WalletLocation &location, bilingual_str &error_string, std::vector &warnings); @@ -1394,8 +1391,7 @@ * in case of an error. */ static std::shared_ptr - CreateWalletFromFile(const CChainParams &chainParams, - interfaces::Chain &chain, + CreateWalletFromFile(interfaces::Chain &chain, const WalletLocation &location, bilingual_str &error, std::vector &warnings, uint64_t wallet_creation_flags = 0); diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -153,18 +153,17 @@ namespace { std::shared_ptr -LoadWalletInternal(const CChainParams &chainParams, interfaces::Chain &chain, - const WalletLocation &location, bilingual_str &error, - std::vector &warnings) { +LoadWalletInternal(interfaces::Chain &chain, const WalletLocation &location, + bilingual_str &error, std::vector &warnings) { try { - if (!CWallet::Verify(chainParams, chain, location, error, warnings)) { + if (!CWallet::Verify(chain, location, error, warnings)) { error = Untranslated("Wallet file verification failed.") + Untranslated(" ") + error; return nullptr; } - std::shared_ptr wallet = CWallet::CreateWalletFromFile( - chainParams, chain, location, error, warnings); + std::shared_ptr wallet = + CWallet::CreateWalletFromFile(chain, location, error, warnings); if (!wallet) { error = Untranslated("Wallet loading failed.") + Untranslated(" ") + error; @@ -180,8 +179,7 @@ } } // namespace -std::shared_ptr LoadWallet(const CChainParams &chainParams, - interfaces::Chain &chain, +std::shared_ptr LoadWallet(interfaces::Chain &chain, const WalletLocation &location, bilingual_str &error, std::vector &warnings) { @@ -192,14 +190,12 @@ error = Untranslated("Wallet already being loading."); return nullptr; } - auto wallet = - LoadWalletInternal(chainParams, chain, location, error, warnings); + auto wallet = LoadWalletInternal(chain, location, error, warnings); WITH_LOCK(g_loading_wallet_mutex, g_loading_wallet_set.erase(result.first)); return wallet; } -WalletCreationStatus CreateWallet(const CChainParams ¶ms, - interfaces::Chain &chain, +WalletCreationStatus CreateWallet(interfaces::Chain &chain, const SecureString &passphrase, uint64_t wallet_creation_flags, const std::string &name, bilingual_str &error, @@ -224,7 +220,7 @@ // Wallet::Verify will check if we're trying to create a wallet with a // duplicate name. - if (!CWallet::Verify(params, chain, location, error, warnings)) { + if (!CWallet::Verify(chain, location, error, warnings)) { error = Untranslated("Wallet file verification failed.") + Untranslated(" ") + error; return WalletCreationStatus::CREATION_FAILED; @@ -242,7 +238,7 @@ // Make the wallet std::shared_ptr wallet = CWallet::CreateWalletFromFile( - params, chain, location, error, warnings, wallet_creation_flags); + chain, location, error, warnings, wallet_creation_flags); if (!wallet) { error = Untranslated("Wallet creation failed.") + Untranslated(" ") + error; @@ -4121,8 +4117,7 @@ return values; } -bool CWallet::Verify(const CChainParams &chainParams, interfaces::Chain &chain, - const WalletLocation &location, +bool CWallet::Verify(interfaces::Chain &chain, const WalletLocation &location, bilingual_str &error_string, std::vector &warnings) { // Do some checking on wallet path. It should be either a: @@ -4173,9 +4168,9 @@ } std::shared_ptr CWallet::CreateWalletFromFile( - const CChainParams &chainParams, interfaces::Chain &chain, - const WalletLocation &location, bilingual_str &error, - std::vector &warnings, uint64_t wallet_creation_flags) { + interfaces::Chain &chain, const WalletLocation &location, + bilingual_str &error, std::vector &warnings, + uint64_t wallet_creation_flags) { const std::string walletFile = WalletDataFilePath(location.GetPath()).string();