More tests, code cleanup
This commit is contained in:
@@ -23,6 +23,8 @@
|
|||||||
#include "merge_mining_client_tari.h"
|
#include "merge_mining_client_tari.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
LOG_CATEGORY(MergeMiningClient)
|
||||||
|
|
||||||
namespace p2pool {
|
namespace p2pool {
|
||||||
|
|
||||||
IMergeMiningClient* IMergeMiningClient::create(p2pool* pool, const std::string& host, const std::string& wallet) noexcept
|
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 (...) {
|
catch (...) {
|
||||||
|
LOGERR(1, "Failed to create merge mining client for " << host);
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -384,7 +384,7 @@ bool MergeMiningClientJSON_RPC::parse_merge_mining_submit_solution(const char* d
|
|||||||
const char* status = result["status"].GetString();
|
const char* status = result["status"].GetString();
|
||||||
|
|
||||||
// Empty string means no errors and the block was accepted
|
// Empty string means no errors and the block was accepted
|
||||||
if (strlen(status) == 0) {
|
if (status[0] == '\0') {
|
||||||
status = "accepted";
|
status = "accepted";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -259,7 +259,7 @@ root_hash get_root_from_proof(hash h, const std::vector<hash>& proof, size_t ind
|
|||||||
return root_hash(h);
|
return root_hash(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool verify_merkle_proof(hash h, const std::vector<hash>& proof, size_t index, size_t count, const root_hash& root)
|
bool verify_merkle_proof(const hash& h, const std::vector<hash>& proof, size_t index, size_t count, const root_hash& root)
|
||||||
{
|
{
|
||||||
return get_root_from_proof(h, proof, index, count) == root;
|
return get_root_from_proof(h, proof, index, count) == root;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -26,7 +26,7 @@ bool get_merkle_proof(const std::vector<std::vector<hash>>& tree, const hash& h,
|
|||||||
|
|
||||||
root_hash get_root_from_proof(hash h, const std::vector<hash>& proof, size_t index, size_t count);
|
root_hash get_root_from_proof(hash h, const std::vector<hash>& proof, size_t index, size_t count);
|
||||||
|
|
||||||
bool verify_merkle_proof(hash h, const std::vector<hash>& proof, size_t index, size_t count, const root_hash& root);
|
bool verify_merkle_proof(const hash& h, const std::vector<hash>& proof, size_t index, size_t count, const root_hash& root);
|
||||||
bool verify_merkle_proof(hash h, const std::vector<hash>& proof, uint32_t path, const root_hash& root);
|
bool verify_merkle_proof(hash h, const std::vector<hash>& proof, uint32_t path, const root_hash& root);
|
||||||
|
|
||||||
uint32_t get_aux_slot(const hash &id, uint32_t nonce, uint32_t n_aux_chains);
|
uint32_t get_aux_slot(const hash &id, uint32_t nonce, uint32_t n_aux_chains);
|
||||||
|
|||||||
+1
-1
@@ -564,7 +564,7 @@ void p2pool::update_aux_data(const hash& chain_id)
|
|||||||
data.aux_nonce = m_auxNonce;
|
data.aux_nonce = m_auxNonce;
|
||||||
}
|
}
|
||||||
else if (find_aux_nonce(aux_id, data.aux_nonce)) {
|
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;
|
m_auxNonce = data.aux_nonce;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -334,6 +334,8 @@ TEST(merkle, params)
|
|||||||
ASSERT_EQ(PoolBlock::encode_merkle_tree_data(1, 0xFFFFFFFFU), 0xFFFFFFFF0ULL);
|
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, 0), 0x3F6U);
|
||||||
ASSERT_EQ(PoolBlock::encode_merkle_tree_data(127, 0xFFFFFFFFU), 0x3FFFFFFFFF6ULL);
|
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;
|
PoolBlock b;
|
||||||
uint32_t n1, nonce1;
|
uint32_t n1, nonce1;
|
||||||
@@ -354,12 +356,22 @@ TEST(merkle, params)
|
|||||||
b.decode_merkle_tree_data(n1, nonce1);
|
b.decode_merkle_tree_data(n1, nonce1);
|
||||||
ASSERT_TRUE(n1 == 127 && nonce1 == 0xFFFFFFFFU);
|
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) {
|
for (uint32_t nonce = 1; nonce; nonce <<= 1) {
|
||||||
b.m_merkleTreeData = PoolBlock::encode_merkle_tree_data(n_aux_chains, 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);
|
b.decode_merkle_tree_data(n1, nonce1);
|
||||||
ASSERT_EQ(n1, n_aux_chains);
|
ASSERT_EQ(n1, n_aux_chains);
|
||||||
ASSERT_EQ(nonce1, nonce);
|
ASSERT_EQ(nonce1, nonce - i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user