From a3bdd74811bbd343bcfefe01ab6427e8702d6f66 Mon Sep 17 00:00:00 2001 From: Matt Hess Date: Sat, 3 Jan 2026 17:13:56 +0000 Subject: [PATCH] Fixed donation mode logging, fixed sidechain banner messaging/timing --- src/block_template.cpp | 4 +++- src/p2pool.cpp | 18 +++++++++++++----- src/side_chain.cpp | 8 +------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/block_template.cpp b/src/block_template.cpp index c25dae4..ab26d45 100644 --- a/src/block_template.cpp +++ b/src/block_template.cpp @@ -301,7 +301,9 @@ void BlockTemplate::update(const MinerData& data, const Mempool& mempool, const } m_shares.clear(); m_shares.emplace_back(total_weight, ¶ms->m_devWallet); - LOGINFO(3, "Entering donation mode at height " << data.height << ": share reward is donated to developer"); + if (!m_lastWasDonation) { + LOGINFO(3, "Entering donation mode at height " << data.height << ": share reward is donated to developer"); + } m_lastWasDonation = true; } else if (m_lastWasDonation) { diff --git a/src/p2pool.cpp b/src/p2pool.cpp index 0d666dc..90bf32f 100644 --- a/src/p2pool.cpp +++ b/src/p2pool.cpp @@ -1442,29 +1442,37 @@ void p2pool::download_block_headers4(uint64_t start_height, uint64_t current_hei if (parse_block_headers_range(data, size) == current_height - start_height) { update_median_timestamp(); if (m_serversStarted.exchange(1) == 0) { - m_p2pServer = new P2PServer(this); - - // Display loading banner + // Display loading banner before starting P2P (which triggers cache bootstrap) LOGINFO(0, log::LightCyan() << "########################################################"); LOGINFO(0, log::LightCyan() << "LOADING SIDECHAIN - MINING MAY NOT OCCUR UNTIL COMPLETE"); LOGINFO(0, log::LightCyan() << "########################################################"); - + + m_p2pServer = new P2PServer(this); + // Wait for sidechain to be ready before starting stratum/mining int genesis_wait_count = 0; + bool genesis_escape = false; while (!m_sideChain->is_ready_to_mine()) { std::this_thread::sleep_for(std::chrono::seconds(5)); genesis_wait_count++; - + // Genesis node escape: if we created genesis and have no peers, proceed if (m_p2pServer && m_p2pServer->num_connections() == 0 && genesis_wait_count >= 6) { LOGINFO(0, log::LightGreen() << "########################################"); LOGINFO(0, log::LightGreen() << "GENESIS NODE - MINING IS NOW ENABLED"); LOGINFO(0, log::LightGreen() << "########################################"); m_sideChain->set_ready_to_mine(true); + genesis_escape = true; break; } } + if (!genesis_escape) { + LOGINFO(0, log::LightGreen() << "########################################"); + LOGINFO(0, log::LightGreen() << "SIDECHAIN LOADED - MINING IS NOW ENABLED"); + LOGINFO(0, log::LightGreen() << "########################################"); + } + m_stratumServer = new StratumServer(this); #if defined(WITH_RANDOMX) && !defined(P2POOL_UNIT_TESTS) if (m_params->m_minerThreads) { diff --git a/src/side_chain.cpp b/src/side_chain.cpp index ae3e14e..3e44996 100644 --- a/src/side_chain.cpp +++ b/src/side_chain.cpp @@ -2224,10 +2224,7 @@ void SideChain::update_chain_tip(PoolBlock* block) } // Only enable mining when tip is verified at low depth (real-time, not catch-up) if (current_tip && current_tip->m_verified && have_checkpoint && current_tip->m_depth < 10) { - m_readyToMine.store(true); - LOGINFO(0, log::LightGreen() << "########################################"); - LOGINFO(0, log::LightGreen() << "SIDECHAIN LOADED - MINING IS NOW ENABLED"); - LOGINFO(0, log::LightGreen() << "########################################"); + m_readyToMine.store(true); } } @@ -2664,9 +2661,6 @@ void SideChain::prune_old_blocks() const PoolBlock* current_tip = m_chainTip.load(); if (current_tip && current_tip->m_verified) { m_readyToMine.store(true); - LOGINFO(0, log::LightGreen() << "########################################"); - LOGINFO(0, log::LightGreen() << "SIDECHAIN LOADED - MINING IS NOW ENABLED"); - LOGINFO(0, log::LightGreen() << "########################################"); } } }