MCPcopy Create free account
hub / github.com/BTCGPU/BTCGPU / TestEquihashSolvers

Function TestEquihashSolvers

src/test/equihash_tests.cpp:48–85  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46}
47
48void TestEquihashSolvers(unsigned int n, unsigned int k, const std::string &I, const arith_uint256 &nonce, const std::set<std::vector<uint32_t>> &solns) {
49 size_t cBitLen { n/(k+1) };
50 blake2b_state state;
51 EhInitialiseState(n, k, state, false);
52 uint256 V = ArithToUint256(nonce);
53 BOOST_TEST_MESSAGE("Running solver: n = " << n << ", k = " << k << ", I = " << I << ", V = " << V.GetHex());
54 blake2b_update(&state, (unsigned char*)&I[0], I.size());
55 blake2b_update(&state, V.begin(), V.size());
56
57 // First test the basic solver
58 std::set<std::vector<uint32_t>> ret;
59 std::function<bool(std::vector<unsigned char>)> validBlock =
60 [&ret, cBitLen](std::vector<unsigned char> soln) {
61 ret.insert(GetIndicesFromMinimal(soln, cBitLen));
62 return false;
63 };
64 EhBasicSolveUncancellable(n, k, state, validBlock);
65 BOOST_TEST_MESSAGE("[Basic] Number of solutions: " << ret.size());
66 std::stringstream strm;
67 PrintSolutions(strm, ret);
68 BOOST_TEST_MESSAGE(strm.str());
69 BOOST_CHECK(ret == solns);
70
71 // The optimised solver should have the exact same result
72 std::set<std::vector<uint32_t>> retOpt;
73 std::function<bool(std::vector<unsigned char>)> validBlockOpt =
74 [&retOpt, cBitLen](std::vector<unsigned char> soln) {
75 retOpt.insert(GetIndicesFromMinimal(soln, cBitLen));
76 return false;
77 };
78 EhOptimisedSolveUncancellable(n, k, state, validBlockOpt);
79 BOOST_TEST_MESSAGE("[Optimised] Number of solutions: " << retOpt.size());
80 strm.str("");
81 PrintSolutions(strm, retOpt);
82 BOOST_TEST_MESSAGE(strm.str());
83 BOOST_CHECK(retOpt == solns);
84 BOOST_CHECK(retOpt == ret);
85}
86
87void TestEquihashValidator(unsigned int n, unsigned int k, const std::string &I, const arith_uint256 &nonce, std::vector<uint32_t> soln, bool expected) {
88 size_t cBitLen { n/(k+1) };

Callers 1

BOOST_AUTO_TEST_CASEFunction · 0.85

Calls 10

ArithToUint256Function · 0.85
GetIndicesFromMinimalFunction · 0.85
PrintSolutionsFunction · 0.85
strMethod · 0.80
GetHexMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected