From 02a0cb174ac9484f7342c604c0532a563b8f68ad Mon Sep 17 00:00:00 2001 From: SChernykh Date: Thu, 2 Mar 2023 13:19:25 +0100 Subject: [PATCH] StratumServer: show a warning for invalid shares --- src/stratum_server.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/stratum_server.cpp b/src/stratum_server.cpp index ead7068..b6e44d1 100644 --- a/src/stratum_server.cpp +++ b/src/stratum_server.cpp @@ -937,7 +937,23 @@ void StratumServer::on_after_share_found(uv_work_t* req, int /*status*/) if (share->m_highEnoughDifficulty) { const char* s = client->m_customUser; - LOGINFO(0, log::Green() << "SHARE FOUND: mainchain height " << share->m_mainchainHeight << ", sidechain height " << share->m_sidechainHeight << ", diff " << share->m_sidechainDifficulty << ", client " << static_cast(client->m_addrString) << (*s ? " user " : "") << s << ", effort " << share->m_effort << '%'); + 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(client->m_addrString) << (*s ? ", user " : "") << s << ", effort " << share->m_effort << '%'); + } + else { + static const char* reason_list[] = { + "stale share", + "couldn't check PoW", + "low difficulty", + "invalid PoW", + "worker banned", + }; + static_assert(array_size(reason_list) == static_cast(SubmittedShare::Result::OK), "Update reason_list to match SubmittedShare::Result enum"); + + const size_t k = static_cast(share->m_result); + const char* reason = (k < array_size(reason_list)) ? reason_list[k] : "unknown"; + LOGWARN(0, log::Green() << "INVALID SHARE: mainchain height " << share->m_mainchainHeight << ", sidechain height " << share->m_sidechainHeight << ", diff " << share->m_sidechainDifficulty << ", client " << static_cast(client->m_addrString) << (*s ? ", user " : "") << s << ", reason: " << reason); + } BACKGROUND_JOB_STOP(StratumServer::on_share_found); }