mirror of
https://github.com/SChernykh/p2pool.git
synced 2024-12-22 19:39:22 +00:00
Count all miners that were active in last 24 hours
This commit is contained in:
parent
e1b4649c2a
commit
fbdef7d058
2 changed files with 20 additions and 3 deletions
|
@ -484,6 +484,8 @@ void SideChain::add_block(const PoolBlock& block)
|
||||||
else {
|
else {
|
||||||
verify_loop(new_block);
|
verify_loop(new_block);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_seenWallets[new_block->m_minerWallet.spend_public_key()] = new_block->m_localTimestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SideChain::has_block(const hash& id)
|
bool SideChain::has_block(const hash& id)
|
||||||
|
@ -668,9 +670,23 @@ difficulty_type SideChain::total_hashes() const
|
||||||
return m_chainTip ? m_chainTip->m_cumulativeDifficulty : difficulty_type();
|
return m_chainTip ? m_chainTip->m_cumulativeDifficulty : difficulty_type();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t SideChain::miner_count() const
|
uint64_t SideChain::miner_count()
|
||||||
{
|
{
|
||||||
return m_chainTip ? m_chainTip->m_outputs.size() : 0;
|
const time_t cur_time = time(nullptr);
|
||||||
|
|
||||||
|
MutexLock lock(m_sidechainLock);
|
||||||
|
|
||||||
|
// Delete wallets that weren't seen for more than 24 hours and return how many remain
|
||||||
|
for (auto it = m_seenWallets.begin(); it != m_seenWallets.end();) {
|
||||||
|
if (it->second + 24 * 60 * 60 <= cur_time) {
|
||||||
|
it = m_seenWallets.erase(it);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_seenWallets.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SideChain::split_reward(uint64_t reward, const std::vector<MinerShare>& shares, std::vector<uint64_t>& rewards)
|
bool SideChain::split_reward(uint64_t reward, const std::vector<MinerShare>& shares, std::vector<uint64_t>& rewards)
|
||||||
|
|
|
@ -66,7 +66,7 @@ public:
|
||||||
const difficulty_type& difficulty() const { return m_curDifficulty; }
|
const difficulty_type& difficulty() const { return m_curDifficulty; }
|
||||||
difficulty_type total_hashes() const;
|
difficulty_type total_hashes() const;
|
||||||
uint64_t block_time() const { return m_targetBlockTime; }
|
uint64_t block_time() const { return m_targetBlockTime; }
|
||||||
uint64_t miner_count() const;
|
uint64_t miner_count();
|
||||||
|
|
||||||
static bool split_reward(uint64_t reward, const std::vector<MinerShare>& shares, std::vector<uint64_t>& rewards);
|
static bool split_reward(uint64_t reward, const std::vector<MinerShare>& shares, std::vector<uint64_t>& rewards);
|
||||||
|
|
||||||
|
@ -95,6 +95,7 @@ private:
|
||||||
std::map<uint64_t, std::vector<PoolBlock*>> m_blocksByHeight;
|
std::map<uint64_t, std::vector<PoolBlock*>> m_blocksByHeight;
|
||||||
std::unordered_map<hash, PoolBlock*> m_blocksById;
|
std::unordered_map<hash, PoolBlock*> m_blocksById;
|
||||||
std::unordered_set<hash> m_seenBlocks;
|
std::unordered_set<hash> m_seenBlocks;
|
||||||
|
std::unordered_map<hash, time_t> m_seenWallets;
|
||||||
|
|
||||||
std::vector<DifficultyData> m_difficultyData;
|
std::vector<DifficultyData> m_difficultyData;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue