Bump wallet version for pre split keypool
Bump the wallet version to indicate support for the pre split keypool. Also prevents any wallets from upgrading to versions between HD_SPLIT and PRE_SPLIT_KEYPOOL.
This commit is contained in:
parent
dfcd9f3e6a
commit
a8da482a8b
2 changed files with 12 additions and 2 deletions
|
@ -4060,6 +4060,14 @@ CWallet* CWallet::CreateWalletFromFile(const std::string& name, const fs::path&
|
||||||
// Upgrade to HD if explicit upgrade
|
// Upgrade to HD if explicit upgrade
|
||||||
if (gArgs.GetBoolArg("-upgradewallet", false)) {
|
if (gArgs.GetBoolArg("-upgradewallet", false)) {
|
||||||
LOCK(walletInstance->cs_wallet);
|
LOCK(walletInstance->cs_wallet);
|
||||||
|
|
||||||
|
// Do not upgrade versions to any version between HD_SPLIT and FEATURE_PRE_SPLIT_KEYPOOL unless already supporting HD_SPLIT
|
||||||
|
int max_version = walletInstance->nWalletVersion;
|
||||||
|
if (!walletInstance->CanSupportFeature(FEATURE_HD_SPLIT) && max_version >=FEATURE_HD_SPLIT && max_version < FEATURE_PRE_SPLIT_KEYPOOL) {
|
||||||
|
InitError(_("Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use -upgradewallet=169900 or -upgradewallet with no version specified."));
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
bool hd_upgrade = false;
|
bool hd_upgrade = false;
|
||||||
bool split_upgrade = false;
|
bool split_upgrade = false;
|
||||||
if (walletInstance->CanSupportFeature(FEATURE_HD) && !walletInstance->IsHDEnabled()) {
|
if (walletInstance->CanSupportFeature(FEATURE_HD) && !walletInstance->IsHDEnabled()) {
|
||||||
|
@ -4076,7 +4084,7 @@ CWallet* CWallet::CreateWalletFromFile(const std::string& name, const fs::path&
|
||||||
// Upgrade to HD chain split if necessary
|
// Upgrade to HD chain split if necessary
|
||||||
if (walletInstance->CanSupportFeature(FEATURE_HD_SPLIT)) {
|
if (walletInstance->CanSupportFeature(FEATURE_HD_SPLIT)) {
|
||||||
LogPrintf("Upgrading wallet to use HD chain split\n");
|
LogPrintf("Upgrading wallet to use HD chain split\n");
|
||||||
walletInstance->SetMinVersion(FEATURE_HD_SPLIT);
|
walletInstance->SetMinVersion(FEATURE_PRE_SPLIT_KEYPOOL);
|
||||||
split_upgrade = FEATURE_HD_SPLIT > prev_version;
|
split_upgrade = FEATURE_HD_SPLIT > prev_version;
|
||||||
}
|
}
|
||||||
// Mark all keys currently in the keypool as pre-split
|
// Mark all keys currently in the keypool as pre-split
|
||||||
|
|
|
@ -89,7 +89,9 @@ enum WalletFeature
|
||||||
|
|
||||||
FEATURE_NO_DEFAULT_KEY = 159900, // Wallet without a default key written
|
FEATURE_NO_DEFAULT_KEY = 159900, // Wallet without a default key written
|
||||||
|
|
||||||
FEATURE_LATEST = FEATURE_NO_DEFAULT_KEY
|
FEATURE_PRE_SPLIT_KEYPOOL = 169900, // Upgraded to HD SPLIT and can have a pre-split keypool
|
||||||
|
|
||||||
|
FEATURE_LATEST = FEATURE_PRE_SPLIT_KEYPOOL
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class OutputType {
|
enum class OutputType {
|
||||||
|
|
Loading…
Reference in a new issue