diff --git a/src/merge_mining_client.cpp b/src/merge_mining_client.cpp index 828436c..4485972 100644 --- a/src/merge_mining_client.cpp +++ b/src/merge_mining_client.cpp @@ -23,6 +23,8 @@ #include "merge_mining_client_tari.h" #endif +LOG_CATEGORY(MergeMiningClient) + namespace p2pool { IMergeMiningClient* IMergeMiningClient::create(p2pool* pool, const std::string& host, const std::string& wallet) noexcept @@ -39,6 +41,7 @@ IMergeMiningClient* IMergeMiningClient::create(p2pool* pool, const std::string& } } catch (...) { + LOGERR(1, "Failed to create merge mining client for " << host); } return nullptr; } diff --git a/src/merge_mining_client_json_rpc.cpp b/src/merge_mining_client_json_rpc.cpp index a9822ad..b1d4017 100644 --- a/src/merge_mining_client_json_rpc.cpp +++ b/src/merge_mining_client_json_rpc.cpp @@ -384,7 +384,7 @@ bool MergeMiningClientJSON_RPC::parse_merge_mining_submit_solution(const char* d const char* status = result["status"].GetString(); // Empty string means no errors and the block was accepted - if (strlen(status) == 0) { + if (status[0] == '\0') { status = "accepted"; } diff --git a/src/merkle.cpp b/src/merkle.cpp index 0be9008..8aaf941 100644 --- a/src/merkle.cpp +++ b/src/merkle.cpp @@ -259,7 +259,7 @@ root_hash get_root_from_proof(hash h, const std::vector& proof, size_t ind return root_hash(h); } -bool verify_merkle_proof(hash h, const std::vector& proof, size_t index, size_t count, const root_hash& root) +bool verify_merkle_proof(const hash& h, const std::vector& proof, size_t index, size_t count, const root_hash& root) { return get_root_from_proof(h, proof, index, count) == root; } diff --git a/src/merkle.h b/src/merkle.h index 77b1027..fb48b4e 100644 --- a/src/merkle.h +++ b/src/merkle.h @@ -26,7 +26,7 @@ bool get_merkle_proof(const std::vector>& tree, const hash& h, root_hash get_root_from_proof(hash h, const std::vector& proof, size_t index, size_t count); -bool verify_merkle_proof(hash h, const std::vector& proof, size_t index, size_t count, const root_hash& root); +bool verify_merkle_proof(const hash& h, const std::vector& proof, size_t index, size_t count, const root_hash& root); bool verify_merkle_proof(hash h, const std::vector& proof, uint32_t path, const root_hash& root); uint32_t get_aux_slot(const hash &id, uint32_t nonce, uint32_t n_aux_chains); diff --git a/src/p2pool.cpp b/src/p2pool.cpp index 5eb0742..1acf1b2 100644 --- a/src/p2pool.cpp +++ b/src/p2pool.cpp @@ -564,7 +564,7 @@ void p2pool::update_aux_data(const hash& chain_id) data.aux_nonce = m_auxNonce; } else if (find_aux_nonce(aux_id, data.aux_nonce)) { - m_auxId = aux_id; + m_auxId = std::move(aux_id); m_auxNonce = data.aux_nonce; } else { diff --git a/tests/src/merkle_tests.cpp b/tests/src/merkle_tests.cpp index 53d04c8..a41e8d7 100644 --- a/tests/src/merkle_tests.cpp +++ b/tests/src/merkle_tests.cpp @@ -334,6 +334,8 @@ TEST(merkle, params) ASSERT_EQ(PoolBlock::encode_merkle_tree_data(1, 0xFFFFFFFFU), 0xFFFFFFFF0ULL); ASSERT_EQ(PoolBlock::encode_merkle_tree_data(127, 0), 0x3F6U); ASSERT_EQ(PoolBlock::encode_merkle_tree_data(127, 0xFFFFFFFFU), 0x3FFFFFFFFF6ULL); + ASSERT_EQ(PoolBlock::encode_merkle_tree_data(256, 0), 0x7FFU); + ASSERT_EQ(PoolBlock::encode_merkle_tree_data(256, 0xFFFFFFFFU), 0x7FFFFFFFFFFULL); PoolBlock b; uint32_t n1, nonce1; @@ -354,12 +356,22 @@ TEST(merkle, params) b.decode_merkle_tree_data(n1, nonce1); ASSERT_TRUE(n1 == 127 && nonce1 == 0xFFFFFFFFU); - for (uint32_t n_aux_chains = 1; n_aux_chains < 128; ++n_aux_chains) { + b.m_merkleTreeData = 0x7FFU; + b.decode_merkle_tree_data(n1, nonce1); + ASSERT_TRUE(n1 == 256 && nonce1 == 0); + + b.m_merkleTreeData = 0x7FFFFFFFFFFULL; + b.decode_merkle_tree_data(n1, nonce1); + ASSERT_TRUE(n1 == 256 && nonce1 == 0xFFFFFFFFU); + + for (uint32_t n_aux_chains = 1; n_aux_chains <= 256; ++n_aux_chains) { for (uint32_t nonce = 1; nonce; nonce <<= 1) { - b.m_merkleTreeData = PoolBlock::encode_merkle_tree_data(n_aux_chains, nonce); - b.decode_merkle_tree_data(n1, nonce1); - ASSERT_EQ(n1, n_aux_chains); - ASSERT_EQ(nonce1, nonce); + for (uint32_t i = 0; i <= 1; ++i) { + b.m_merkleTreeData = PoolBlock::encode_merkle_tree_data(n_aux_chains, nonce - i); + b.decode_merkle_tree_data(n1, nonce1); + ASSERT_EQ(n1, n_aux_chains); + ASSERT_EQ(nonce1, nonce - i); + } } } }