[Wallet] use constant for bip32 hardened key limit

c022e5b15d
This commit is contained in:
lateminer
2018-01-02 12:44:22 +03:00
parent 3ae2d2aacc
commit 854b826d8e

View File

@@ -41,6 +41,8 @@ unsigned int nTxConfirmTarget = DEFAULT_TX_CONFIRM_TARGET;
bool bSpendZeroConfChange = DEFAULT_SPEND_ZEROCONF_CHANGE;
bool fSendFreeTransactions = DEFAULT_SEND_FREE_TRANSACTIONS;
const uint32_t BIP32_HARDENED_KEY_LIMIT = 0x80000000;
static int64_t GetStakeCombineThreshold() { return 500 * COIN; }
static int64_t GetStakeSplitThreshold() { return 2 * GetStakeCombineThreshold(); }
@@ -115,16 +117,19 @@ CPubKey CWallet::GenerateNewKey()
masterKey.SetMaster(key.begin(), key.size());
// derive m/0'
// use hardened derivation (child keys > 0x80000000 are hardened after bip32)
masterKey.Derive(accountKey, 0 | 0x80000000);
// use hardened derivation (child keys >= 0x80000000 are hardened after bip32)
masterKey.Derive(accountKey, BIP32_HARDENED_KEY_LIMIT);
// derive m/0'/0'
accountKey.Derive(externalChainChildKey, 0 | 0x80000000);
accountKey.Derive(externalChainChildKey, BIP32_HARDENED_KEY_LIMIT);
// derive child key at next index, skip keys already known to the wallet
do
{
externalChainChildKey.Derive(childKey, hdChain.nExternalChainCounter | 0x80000000);
// always derive hardened keys
// childIndex | BIP32_HARDENED_KEY_LIMIT = derive childIndex in hardened child-index-range
// example: 1 | BIP32_HARDENED_KEY_LIMIT == 0x80000001 == 2147483649
externalChainChildKey.Derive(childKey, hdChain.nExternalChainCounter | BIP32_HARDENED_KEY_LIMIT);
// increment childkey index
hdChain.nExternalChainCounter++;
} while(HaveKey(childKey.key.GetPubKey().GetID()));