diff options
author | John Newbery <john@johnnewbery.com> | 2017-08-03 11:03:40 -0400 |
---|---|---|
committer | John Newbery <john@johnnewbery.com> | 2017-08-04 16:42:53 -0400 |
commit | c25d90f125d69e33688288eff439eb7be75012e9 (patch) | |
tree | 12c42085eb6bfbe772c787e37427accb01e8edac /src/wallet | |
parent | f2123e3a7bf30545967b9ceb37961976cf7d64fb (diff) |
[wallet] Add HasUnusedKeys() helper
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/wallet.cpp | 5 | ||||
-rw-r--r-- | src/wallet/wallet.h | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index afe911ae9a..ce345804e1 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -3611,6 +3611,11 @@ void CReserveKey::ReturnKey() vchPubKey = CPubKey(); } +bool CWallet::HasUnusedKeys(int min_keys) const +{ + return setExternalKeyPool.size() >= min_keys && (setInternalKeyPool.size() >= min_keys || !CanSupportFeature(FEATURE_HD_SPLIT)); +} + void CWallet::GetScriptForMining(std::shared_ptr<CReserveScript> &script) { std::shared_ptr<CReserveKey> rKey = std::make_shared<CReserveKey>(this); diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index 0d2262cfe1..310300126d 100644 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -813,7 +813,7 @@ public: const CWalletTx* GetWalletTx(const uint256& hash) const; //! check whether we are allowed to upgrade (or already support) to the named feature - bool CanSupportFeature(enum WalletFeature wf) { AssertLockHeld(cs_wallet); return nWalletMaxVersion >= wf; } + bool CanSupportFeature(enum WalletFeature wf) const { AssertLockHeld(cs_wallet); return nWalletMaxVersion >= wf; } /** * populate vCoins with vector of available COutputs. @@ -978,6 +978,8 @@ public: bool GetKeyFromPool(CPubKey &key, bool internal = false); int64_t GetOldestKeyPoolTime(); const std::map<CKeyID, int64_t>& GetAllReserveKeys() const { return m_pool_key_to_index; } + /** Does the wallet have at least min_keys in the keypool? */ + bool HasUnusedKeys(int min_keys) const; std::set< std::set<CTxDestination> > GetAddressGroupings(); std::map<CTxDestination, CAmount> GetAddressBalances(); |