Fixed merge mining with multiple chains

This commit is contained in:
SChernykh
2024-06-11 18:40:30 +02:00
parent 8fc5e5013c
commit 5e8da4e672
6 changed files with 49 additions and 17 deletions
+11 -2
View File
@@ -403,13 +403,22 @@ bool StratumServer::on_submit(StratumClient* client, uint32_t id, const char* jo
}
if (aux_diff.check_pow(resultHash)) {
for (const AuxChainData& aux_data : block.get_aux_chains(template_id)) {
const std::vector<AuxChainData> aux_chains = block.get_aux_chains(template_id);
std::vector<p2pool::SubmitAuxBlockData> aux_blocks;
aux_blocks.reserve(aux_chains.size());
for (const AuxChainData& aux_data : aux_chains) {
if (aux_data.difficulty.check_pow(resultHash)) {
const char* s = client->m_customUser;
LOGINFO(0, log::Green() << "client " << static_cast<char*>(client->m_addrString) << (*s ? " user " : "") << s << " found an aux block for chain_id " << aux_data.unique_id << ", diff " << aux_data.difficulty << ", submitting it");
m_pool->submit_aux_block_async(aux_data.unique_id, template_id, nonce, extra_nonce);
aux_blocks.emplace_back(p2pool::SubmitAuxBlockData{ aux_data.unique_id, template_id, nonce, extra_nonce });
}
}
if (!aux_blocks.empty()) {
m_pool->submit_aux_block_async(aux_blocks);
}
}
SubmittedShare* share;