aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2016-07-19 12:14:07 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2016-07-19 12:14:09 +0200
commit24f117ef05f5b227438c8ba4739b82cac21de809 (patch)
tree6bcb595b0ed7a74f165c880e45d5b015701de27a
parentfca1a415cec6b7655448ce8b30778784ab4c181e (diff)
parent3b38a6a96a955d7b0192ece6ddcc7d750e155d81 (diff)
downloadbitcoin-24f117ef05f5b227438c8ba4739b82cac21de809.tar.xz
Merge #8366: [0.13] [Wallet] Ensure <0.13 clients can't open HD wallets
3b38a6a [Wallet] Ensure <0.13 clients can't open HD wallets (Jonas Schnelli)
-rw-r--r--doc/release-notes.md2
-rw-r--r--src/wallet/wallet.cpp3
-rw-r--r--src/wallet/wallet.h3
3 files changed, 7 insertions, 1 deletions
diff --git a/doc/release-notes.md b/doc/release-notes.md
index 93c501e580..1d358cbfd5 100644
--- a/doc/release-notes.md
+++ b/doc/release-notes.md
@@ -142,6 +142,8 @@ You can't disable HD key generation once you have created a HD wallet.
There is no distinction between internal (change) and external keys.
+HD wallets are incompatible with older versions of Bitcoin Core.
+
[Pull request](https://github.com/bitcoin/bitcoin/pull/8035/files), [BIP 32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)
Low-level P2P changes
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
index 4b6d98025d..a76085de30 100644
--- a/src/wallet/wallet.cpp
+++ b/src/wallet/wallet.cpp
@@ -3299,6 +3299,9 @@ bool CWallet::InitLoadWallet()
key.MakeNewKey(true);
if (!walletInstance->SetHDMasterKey(key))
throw std::runtime_error("CWallet::GenerateNewKey(): Storing master key failed");
+
+ // ensure this wallet.dat can only be opened by clients supporting HD
+ walletInstance->SetMinVersion(FEATURE_HD);
}
CPubKey newDefaultKey;
if (walletInstance->GetKeyFromPool(newDefaultKey)) {
diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h
index e9d669a7d1..3a3cb6d851 100644
--- a/src/wallet/wallet.h
+++ b/src/wallet/wallet.h
@@ -78,7 +78,8 @@ enum WalletFeature
FEATURE_WALLETCRYPT = 40000, // wallet encryption
FEATURE_COMPRPUBKEY = 60000, // compressed public keys
- FEATURE_LATEST = 60000
+ FEATURE_HD = 130000, // Hierarchical key derivation after BIP32 (HD Wallet)
+ FEATURE_LATEST = FEATURE_COMPRPUBKEY // HD is optional, use FEATURE_COMPRPUBKEY as latest version
};