From 7923f842333f761c6568f034ea343d6843a168cc Mon Sep 17 00:00:00 2001 From: SChernykh <15806605+SChernykh@users.noreply.github.com> Date: Wed, 25 Feb 2026 19:39:34 +0100 Subject: [PATCH] Stratum: added sidechain/stratum shares display to `workers` command --- src/stratum_server.cpp | 20 ++++++++++++++++++++ src/stratum_server.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/src/stratum_server.cpp b/src/stratum_server.cpp index c8414d1..3743de5 100644 --- a/src/stratum_server.cpp +++ b/src/stratum_server.cpp @@ -480,6 +480,8 @@ bool StratumServer::on_submit(StratumClient* client, uint32_t id, const char* jo update_auto_diff(client, share.m_timestamp, share.m_hashes); + ++client->m_stratumShares; + // If this share is below sidechain difficulty, process it in this thread because it'll be quick if (!share.m_highEnoughDifficulty && !m_enableFullValidation) { on_share_found(&share.m_req); @@ -565,6 +567,7 @@ void StratumServer::show_workers() << log::pad_right("uptime", 20) << log::pad_right("difficulty", 20) << log::pad_right("hashrate", 15) + << log::pad_right("shares", 12) << "name" ); @@ -585,11 +588,16 @@ void StratumServer::show_workers() constexpr bool is_tls = false; #endif + char shares_buf[16] = {}; + log::Stream s(shares_buf); + s << c->m_sidechainShares << '/' << c->m_stratumShares << '\0'; + LOGINFO(0, log::pad_right(static_cast(c->m_addrString), addr_len + 8) << (is_tls ? "yes " : "no ") << log::pad_right(log::Duration(cur_time - c->m_connectedTime), 20) << log::pad_right(diff, 20) << log::pad_right(log::Hashrate(c->m_autoDiff.lo / AUTO_DIFF_TARGET_TIME, m_autoDiff && (c->m_autoDiff != 0)), 15) + << log::pad_right(static_cast(shares_buf), 12) << (c->m_rpcId ? c->m_customUser : "not logged in") ); ++n; @@ -1058,10 +1066,13 @@ void StratumServer::on_after_share_found(uv_work_t* req, int /*status*/) server->check_event_loop_thread(__func__); + bool share_found = false; + if (share->m_highEnoughDifficulty) { const char* s = share->m_clientCustomUser; if (share->m_result == SubmittedShare::Result::OK) { LOGINFO(0, log::Green() << "SHARE FOUND: mainchain height " << share->m_mainchainHeight << ", sidechain height " << share->m_sidechainHeight << ", diff " << share->m_sidechainDifficulty << ", client " << static_cast(share->m_clientAddrString) << (*s ? ", user " : "") << s << ", effort " << share->m_effort << '%'); + share_found = true; } else { static const char* reason_list[] = { @@ -1117,6 +1128,10 @@ void StratumServer::on_after_share_found(uv_work_t* req, int /*status*/) client->m_score += share->m_score; + if (share_found) { + ++client->m_sidechainShares; + } + if (bad_share && (client->m_score <= BAN_THRESHOLD_POINTS)) { client->ban(server->m_banTime); client->close(); @@ -1181,6 +1196,8 @@ StratumServer::StratumClient::StratumClient() , m_customUser{} , m_lastJobTarget(0) , m_score(0) + , m_stratumShares(0) + , m_sidechainShares(0) { m_rawReadBuf[0] = '\0'; m_stratumReadBuf[0] = '\0'; @@ -1210,6 +1227,9 @@ void StratumServer::StratumClient::reset() m_lastJobTarget = 0; m_score = 0; + + m_stratumShares = 0; + m_sidechainShares = 0; } bool StratumServer::StratumClient::on_connect() diff --git a/src/stratum_server.h b/src/stratum_server.h index d29ef82..5c5dcd8 100644 --- a/src/stratum_server.h +++ b/src/stratum_server.h @@ -91,6 +91,9 @@ public: uint64_t m_lastJobTarget; int32_t m_score; + + uint32_t m_stratumShares; + uint32_t m_sidechainShares; }; [[nodiscard]] bool on_login(StratumClient* client, uint32_t id, const char* login);