FEATURE_LATEST = 60000
};
+/** Stake weight calculation mode */
+enum StakeWeightMode
+{
+ STAKE_NORMAL = 0, // all 30+ days old inputs
+ STAKE_MAXWEIGHT = 1, // only 90+ days old inputs
+ STAKE_MINWEIGHT = 3, // only [30-90] days old inputs
+ STAKE_BELOWMIN = 4 // only less than 30 days old inputs
+};
/** A key pool entry */
class CKeyPool
std::string strWalletFile;
std::set<int64> setKeyPool;
+ std::map<CKeyID, CKeyMetadata> mapKeyMetadata;
typedef std::map<unsigned int, CMasterKey> MasterKeyMap;
std::map<CTxDestination, std::string> mapAddressBook;
CPubKey vchDefaultKey;
+ int64 nTimeFirstKey;
// check whether we are allowed to upgrade (or already support) to the named feature
bool CanSupportFeature(enum WalletFeature wf) { return nWalletMaxVersion >= wf; }
bool AddKey(const CKey& key);
// Adds a key to the store, without saving it to disk (used by LoadWallet)
bool LoadKey(const CKey& key) { return CCryptoKeyStore::AddKey(key); }
+ // Load metadata (used by LoadWallet)
+ bool LoadKeyMetadata(const CPubKey &pubkey, const CKeyMetadata &metadata);
bool LoadMinVersion(int nVersion) { nWalletVersion = nVersion; nWalletMaxVersion = std::max(nWalletMaxVersion, nVersion); return true; }
bool ChangeWalletPassphrase(const SecureString& strOldWalletPassphrase, const SecureString& strNewWalletPassphrase);
bool EncryptWallet(const SecureString& strWalletPassphrase);
+ void GetKeyBirthTimes(std::map<CKeyID, int64> &mapKeyBirth) const;
+
+
/** Increment the next transaction order id
@return next transaction order id
*/
bool CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet);
bool CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey);
- uint64 GetStakeMintPower(const CKeyStore& keystore);
+ uint64 GetStakeMintPower(const CKeyStore& keystore, enum StakeWeightMode mode=STAKE_NORMAL);
bool CreateCoinStake(const CKeyStore& keystore, unsigned int nBits, int64 nSearchInterval, CTransaction& txNew);
std::string SendMoney(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, bool fAskFee=false);
void ReturnKey(int64 nIndex);
bool GetKeyFromPool(CPubKey &key, bool fAllowReuse=true);
int64 GetOldestKeyPoolTime();
- void GetAllReserveKeys(std::set<CKeyID>& setAddress);
+ void GetAllReserveKeys(std::set<CKeyID>& setAddress) const;
std::set< std::set<CTxDestination> > GetAddressGroupings();
std::map<CTxDestination, int64> GetAddressBalances();