diff --git a/src/wallet/init.cpp b/src/wallet/init.cpp --- a/src/wallet/init.cpp +++ b/src/wallet/init.cpp @@ -97,11 +97,6 @@ "-rescan", "Rescan the block chain for missing wallet transactions on startup", ArgsManager::ALLOW_ANY, OptionsCategory::WALLET); - gArgs.AddArg( - "-salvagewallet", - "Attempt to recover private keys from a corrupt wallet on startup", - ArgsManager::ALLOW_ANY, OptionsCategory::WALLET); - gArgs.AddArg( "-spendzeroconfchange", strprintf( @@ -189,20 +184,6 @@ __func__); } - if (gArgs.GetBoolArg("-salvagewallet", false)) { - if (is_multiwallet) { - return InitError(strprintf( - Untranslated("%s is only allowed with a single wallet file"), - "-salvagewallet")); - } - // Rewrite just private keys: rescan to find transactions - if (gArgs.SoftSetBoolArg("-rescan", true)) { - LogPrintf("%s: parameter interaction: -salvagewallet=1 -> setting " - "-rescan=1\n", - __func__); - } - } - bool zapwallettxes = gArgs.GetBoolArg("-zapwallettxes", false); // -zapwallettxes implies dropping the mempool on startup if (zapwallettxes && gArgs.SoftSetBoolArg("-persistmempool", false)) { diff --git a/src/wallet/load.h b/src/wallet/load.h --- a/src/wallet/load.h +++ b/src/wallet/load.h @@ -18,9 +18,6 @@ //! Responsible for reading and validating the -wallet arguments and verifying //! the wallet database. -// This function will perform salvage on the wallet if requested, as long as -// only one wallet is being loaded (WalletInit::ParameterInteraction() forbids -// -salvagewallet, -zapwallettxes or -upgradewallet with multiwallet). bool VerifyWallets(const CChainParams &chainParams, interfaces::Chain &chain, const std::vector &wallet_files); diff --git a/src/wallet/load.cpp b/src/wallet/load.cpp --- a/src/wallet/load.cpp +++ b/src/wallet/load.cpp @@ -45,12 +45,6 @@ chain.initMessage(_("Verifying wallet(s)...").translated); - // Parameter interaction code should have thrown an error if -salvagewallet - // was enabled with more than wallet file, so the wallet_files size check - // here should have no effect. - bool salvage_wallet = - gArgs.GetBoolArg("-salvagewallet", false) && wallet_files.size() <= 1; - // Keep track of each wallet absolute path to detect duplicates. std::set wallet_paths; @@ -66,9 +60,8 @@ bilingual_str error_string; std::vector warnings; - bool verify_success = - CWallet::Verify(chainParams, chain, location, salvage_wallet, - error_string, warnings); + bool verify_success = CWallet::Verify(chainParams, chain, location, + error_string, warnings); if (!warnings.empty()) { chain.initWarning(Join(warnings, "\n", OpTranslated)); } diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -1356,7 +1356,7 @@ //! Verify wallet naming and perform salvage on the wallet if required static bool Verify(const CChainParams &chainParams, interfaces::Chain &chain, const WalletLocation &location, - bool salvage_wallet, bilingual_str &error_string, + bilingual_str &error_string, std::vector &warnings); /** diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -156,8 +156,7 @@ const WalletLocation &location, bilingual_str &error, std::vector &warnings) { - if (!CWallet::Verify(chainParams, chain, location, false, error, - warnings)) { + if (!CWallet::Verify(chainParams, chain, location, error, warnings)) { error = Untranslated("Wallet file verification failed.") + Untranslated(" ") + error; return nullptr; @@ -210,7 +209,7 @@ // Wallet::Verify will check if we're trying to create a wallet with a // duplicate name. - if (!CWallet::Verify(params, chain, location, false, error, warnings)) { + if (!CWallet::Verify(params, chain, location, error, warnings)) { error = Untranslated("Wallet file verification failed.") + Untranslated(" ") + error; return WalletCreationStatus::CREATION_FAILED; @@ -4104,7 +4103,7 @@ } bool CWallet::Verify(const CChainParams &chainParams, interfaces::Chain &chain, - const WalletLocation &location, bool salvage_wallet, + const WalletLocation &location, bilingual_str &error_string, std::vector &warnings) { // Do some checking on wallet path. It should be either a: @@ -4155,18 +4154,6 @@ return false; } - if (salvage_wallet) { - // Recover readable keypairs: - CWallet dummyWallet(chainParams, &chain, WalletLocation(), - WalletDatabase::CreateDummy()); - std::string backup_filename; - if (!WalletBatch::Recover( - wallet_path, static_cast(&dummyWallet), - WalletBatch::RecoverKeysOnlyFilter, backup_filename)) { - return false; - } - } - return WalletBatch::VerifyDatabaseFile(wallet_path, warnings, error_string); } diff --git a/test/functional/wallet_basic.py b/test/functional/wallet_basic.py --- a/test/functional/wallet_basic.py +++ b/test/functional/wallet_basic.py @@ -474,8 +474,6 @@ '-reindex', '-zapwallettxes=1', '-zapwallettxes=2', - # disabled until issue is fixed: https://github.com/bitcoin/bitcoin/issues/7463 - # '-salvagewallet', ] chainlimit = 6 for m in maintenance: diff --git a/test/functional/wallet_multiwallet.py b/test/functional/wallet_multiwallet.py --- a/test/functional/wallet_multiwallet.py +++ b/test/functional/wallet_multiwallet.py @@ -156,20 +156,6 @@ '-wallet=w2'], "Error: -zapwallettxes is only allowed with a single wallet file") - self.log.info("Do not allow -salvagewallet with multiwallet") - self.nodes[0].assert_start_raises_init_error( - [ - '-salvagewallet', - '-wallet=w1', - '-wallet=w2'], - "Error: -salvagewallet is only allowed with a single wallet file") - self.nodes[0].assert_start_raises_init_error( - [ - '-salvagewallet=1', - '-wallet=w1', - '-wallet=w2'], - "Error: -salvagewallet is only allowed with a single wallet file") - # if wallets/ doesn't exist, datadir should be the default wallet dir wallet_dir2 = data_dir('walletdir') os.rename(wallet_dir(), wallet_dir2)