From d84bef8f141d7a6e532548d036570264a56d7a53 Mon Sep 17 00:00:00 2001 From: SChernykh Date: Thu, 26 May 2022 11:08:16 +0200 Subject: [PATCH] Added block reward share percent to miner api --- src/block_template.cpp | 1 - src/block_template.h | 1 + src/miner.cpp | 17 ++++++++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/block_template.cpp b/src/block_template.cpp index bc1e391..9dd0738 100644 --- a/src/block_template.cpp +++ b/src/block_template.cpp @@ -575,7 +575,6 @@ void BlockTemplate::update(const MinerData& data, const Mempool& mempool, Wallet m_rewards.clear(); m_mempoolTxs.clear(); m_mempoolTxsOrder.clear(); - m_shares.clear(); } #if TEST_MEMPOOL_PICKING_ALGORITHM diff --git a/src/block_template.h b/src/block_template.h index 7abb20f..1d02a2d 100644 --- a/src/block_template.h +++ b/src/block_template.h @@ -56,6 +56,7 @@ public: void submit_sidechain_block(uint32_t template_id, uint32_t nonce, uint32_t extra_nonce); FORCEINLINE uint64_t final_reward() const { return m_finalReward; } + FORCEINLINE const std::vector& shares() const { return m_shares; } private: p2pool* m_pool; diff --git a/src/miner.cpp b/src/miner.cpp index 1580a97..0f95636 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -24,6 +24,7 @@ #include "randomx.h" #include "params.h" #include "p2pool_api.h" +#include "side_chain.h" #include static constexpr char log_category_prefix[] = "Miner "; @@ -101,8 +102,21 @@ void Miner::on_block(const BlockTemplate& block) m_totalHashes += hash_count; if (m_pool->api() && m_pool->params().m_localStats) { + const hash& key = m_pool->params().m_wallet.spend_public_key(); + uint64_t w = 0; + uint64_t total = 0; + + for (const MinerShare& s : block.shares()) { + total += s.m_weight; + if (s.m_wallet->spend_public_key() == key) { + w = s.m_weight; + } + } + + const double block_reward_share_percent = total ? ((static_cast(w) * 100.0) / static_cast(total)) : 0.0; + m_pool->api()->set(p2pool_api::Category::LOCAL, "miner", - [cur_ts, hash_count, dt, this](log::Stream& s) + [cur_ts, hash_count, dt, block_reward_share_percent, this](log::Stream& s) { const uint64_t hr = (dt > 0.0) ? static_cast(hash_count / dt) : 0; const double time_running = static_cast(duration_cast(cur_ts - m_startTimestamp).count()) / 1e3; @@ -111,6 +125,7 @@ void Miner::on_block(const BlockTemplate& block) << ",\"total_hashes\":" << m_totalHashes << ",\"time_running\":" << time_running << ",\"shares_found\":" << m_sharesFound.load() + << ",\"block_reward_share_percent\":" << block_reward_share_percent << ",\"threads\":" << m_threads << "}"; });