diff --git a/src/stratum_server.cpp b/src/stratum_server.cpp index e71c6b1..d312750 100644 --- a/src/stratum_server.cpp +++ b/src/stratum_server.cpp @@ -46,6 +46,8 @@ StratumServer::StratumServer(p2pool* pool) , m_hashrateDataTail_15m(0) , m_hashrateDataTail_1h(0) , m_hashrateDataTail_24h(0) + , m_cumulativeFoundSharesDiff(0.0) + , m_totalFoundShares(0) { m_hashrateData[0] = { time(nullptr), 0 }; @@ -379,11 +381,18 @@ void StratumServer::print_stratum_status() const const uint64_t hashrate_1h = (dt_1h > 0) ? (hashes_1h / dt_1h ) : 0; const uint64_t hashrate_24h = (dt_24h > 0) ? (hashes_24h / dt_24h) : 0; + double average_effort = 0.0; + if (m_cumulativeHashesAtLastShare > 0) { + average_effort = m_cumulativeFoundSharesDiff * 100.0 / static_cast(m_cumulativeHashesAtLastShare); + } + LOGINFO(0, "status" << "\nHashrate (15m est) = " << log::Hashrate(hashrate_15m) << "\nHashrate (1h est) = " << log::Hashrate(hashrate_1h) << "\nHashrate (24h est) = " << log::Hashrate(hashrate_24h) << "\nTotal hashes = " << total_hashes << + "\nShares found = " << m_totalFoundShares << + "\nAverage effort = " << average_effort << '%' << "\nCurrent effort = " << static_cast(hashes_since_last_share) * 100.0 / m_pool->side_chain().difficulty().to_double() << '%' << "\nConnections = " << m_numConnections << " (" << m_numIncomingConnections << " incoming)" ); @@ -572,8 +581,15 @@ void StratumServer::on_share_found(uv_work_t* req) return; } - LOGINFO(0, log::Green() << "SHARE FOUND at mainchain height " << height); - server->m_cumulativeHashesAtLastShare = server->m_cumulativeHashes; + const uint64_t n = server->m_cumulativeHashes; + const double diff = sidechain_difficulty.to_double(); + const double effort = static_cast(n - server->m_cumulativeHashesAtLastShare) * 100.0 / diff; + server->m_cumulativeHashesAtLastShare = n; + + server->m_cumulativeFoundSharesDiff += diff; + ++server->m_totalFoundShares; + + LOGINFO(0, log::Green() << "SHARE FOUND at mainchain height " << height << " with effort " << effort << '%'); if (mainchain_solution) { pool->submit_block_async(share->m_templateId, share->m_nonce, share->m_extraNonce); diff --git a/src/stratum_server.h b/src/stratum_server.h index dc654e2..0e38523 100644 --- a/src/stratum_server.h +++ b/src/stratum_server.h @@ -148,6 +148,9 @@ private: uint64_t m_hashrateDataTail_1h; uint64_t m_hashrateDataTail_24h; + double m_cumulativeFoundSharesDiff; + uint32_t m_totalFoundShares; + void update_hashrate_data(uint64_t target); };