Browse Source

Auto merge of #1008 - str4d:850-platform-independent-equihash, r=str4d

Implement Equihash in a platform-independent manner

Closes #850.
pull/145/head
zkbot 8 years ago
parent
commit
1a30d65859
  1. 14
      src/chainparams.cpp
  2. 40
      src/crypto/equihash.cpp
  3. 2
      src/crypto/equihash.h
  4. 69
      src/test/equihash_tests.cpp
  5. 220
      src/test/miner_tests.cpp

14
src/chainparams.cpp

@ -86,10 +86,10 @@ public:
//genesis.nBits = 0x1d00ffff;
genesis.nBits = 0x207fffff;
genesis.nNonce = uint256S("0x0000000000000000000000000000000000000000000000000000000000000001");
genesis.nSolution = {587569, 8525894, 21341434, 29850428, 1031007, 14893603, 13508924, 18130124};
genesis.nSolution = {400496, 12965800, 7933378, 26516310, 3573504, 12897574, 9332739, 12534918};
consensus.hashGenesisBlock = genesis.GetHash();
assert(consensus.hashGenesisBlock == uint256S("0x684925e346301a043b8f00ff81e2f96b0aab01ca177c72a29684cb682fb4f91e"));
assert(consensus.hashGenesisBlock == uint256S("0x5ff8e250c158c0694814582883343e8a0de5b7e7a5236324d4bf3293a56b6bc5"));
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
vSeeds.push_back(CDNSSeedData("bitcoin.sipa.be", "seed.bitcoin.sipa.be")); // Pieter Wuille
@ -164,9 +164,9 @@ public:
genesis.nTime = 1296688602;
genesis.nBits = 0x207fffff;
genesis.nNonce = uint256S("0x0000000000000000000000000000000000000000000000000000000000000000");
genesis.nSolution = {580051, 20198535, 25959899, 26476684, 6432082, 23053925, 18828144, 32724963};
genesis.nSolution = {830051, 14471730, 2076450, 21556280, 12194645, 22042975, 16221394, 24048626};
consensus.hashGenesisBlock = genesis.GetHash();
assert(consensus.hashGenesisBlock == uint256S("0x260cf174620023182937d89aa5fa5f08df2193e9f775bab7de02f3d1f6eba4c2"));
assert(consensus.hashGenesisBlock == uint256S("0x69675325ac7fb1f5a6bebb7fc8581f9160cbf970817f50b5199df7ff7b2833bd"));
vFixedSeeds.clear();
vSeeds.clear();
@ -226,11 +226,11 @@ public:
nEquihashK = 5;
genesis.nTime = 1296688602;
genesis.nBits = 0x207fffff;
genesis.nNonce = uint256S("0x0000000000000000000000000000000000000000000000000000000000000001");
genesis.nSolution = {8, 270, 275, 467, 26, 145, 150, 245, 37, 143, 88, 377, 47, 95, 246, 295, 101, 276, 241, 435, 148, 167, 305, 445, 126, 479, 186, 238, 182, 402, 250, 430};
genesis.nNonce = uint256S("0x0000000000000000000000000000000000000000000000000000000000000003");
genesis.nSolution = {21, 374, 135, 192, 103, 221, 198, 303, 87, 330, 306, 464, 98, 239, 146, 471, 35, 137, 53, 387, 97, 454, 412, 434, 75, 352, 180, 367, 121, 480, 158, 482};
consensus.hashGenesisBlock = genesis.GetHash();
nDefaultPort = 18444;
assert(consensus.hashGenesisBlock == uint256S("0x0b7bc4232f724c23954fb4e0fae9512755061217a736eb7d465f9bef614f8b7a"));
assert(consensus.hashGenesisBlock == uint256S("0x37e57b7047e1a59918a8f98b9bbebc0b6e16e246211ad1f5c664d7e8f7d8d709"));
nPruneAfterHeight = 1000;
vFixedSeeds.clear(); //! Regtest mode doesn't have any fixed seeds.

40
src/crypto/equihash.cpp

@ -24,12 +24,12 @@
template<unsigned int N, unsigned int K>
int Equihash<N,K>::InitialiseState(eh_HashState& base_state)
{
unsigned int n = N;
unsigned int k = K;
uint32_t le_N = htole32(N);
uint32_t le_K = htole32(K);
unsigned char personalization[crypto_generichash_blake2b_PERSONALBYTES] = {};
memcpy(personalization, "ZcashPOW", 8);
memcpy(personalization+8, &n, 4);
memcpy(personalization+12, &k, 4);
memcpy(personalization, "ZcashPoW", 8);
memcpy(personalization+8, &le_N, 4);
memcpy(personalization+12, &le_K, 4);
return crypto_generichash_blake2b_init_salt_personal(&base_state,
NULL, 0, // No key.
N/8,
@ -37,26 +37,23 @@ int Equihash<N,K>::InitialiseState(eh_HashState& base_state)
personalization);
}
// Big-endian so that lexicographic array comparison is equivalent to integer
// comparison
void EhIndexToArray(const eh_index i, unsigned char* array)
{
assert(sizeof(eh_index) == 4);
array[0] = (i >> 24) & 0xFF;
array[1] = (i >> 16) & 0xFF;
array[2] = (i >> 8) & 0xFF;
array[3] = i & 0xFF;
eh_index bei = htobe32(i);
memcpy(array, &bei, sizeof(eh_index));
}
// Big-endian so that lexicographic array comparison is equivalent to integer
// comparison
eh_index ArrayToEhIndex(const unsigned char* array)
{
assert(sizeof(eh_index) == 4);
eh_index ret {array[0]};
ret <<= 8;
ret |= array[1];
ret <<= 8;
ret |= array[2];
ret <<= 8;
ret |= array[3];
return ret;
eh_index bei;
memcpy(&bei, array, sizeof(eh_index));
return be32toh(bei);
}
eh_trunc TruncateIndex(const eh_index i, const unsigned int ilen)
@ -77,7 +74,10 @@ StepRow<WIDTH>::StepRow(unsigned int n, const eh_HashState& base_state, eh_index
{
eh_HashState state;
state = base_state;
crypto_generichash_blake2b_update(&state, (unsigned char*) &i, sizeof(eh_index));
unsigned char array[sizeof(eh_index)];
eh_index lei = htole32(i);
memcpy(array, &lei, sizeof(eh_index));
crypto_generichash_blake2b_update(&state, array, sizeof(eh_index));
crypto_generichash_blake2b_final(&state, hash, n/8);
}
@ -103,7 +103,7 @@ FullStepRow<WIDTH>::FullStepRow(const FullStepRow<W>& a, const FullStepRow<W>& b
assert(len-trim+(2*lenIndices) <= WIDTH);
for (int i = trim; i < len; i++)
hash[i-trim] = a.hash[i] ^ b.hash[i];
if (a.IndicesBefore(b, len)) {
if (a.IndicesBefore(b, len, lenIndices)) {
std::copy(a.hash+len, a.hash+len+lenIndices, hash+len-trim);
std::copy(b.hash+len, b.hash+len+lenIndices, hash+len-trim+lenIndices);
} else {
@ -532,7 +532,7 @@ bool Equihash<N,K>::IsValidSolution(const eh_HashState& base_state, std::vector<
LogPrint("pow", "X[i+1] = %s\n", X[i+1].GetHex(hashLen));
return false;
}
if (X[i+1].IndicesBefore(X[i], hashLen)) {
if (X[i+1].IndicesBefore(X[i], hashLen, lenIndices)) {
return false;
LogPrint("pow", "Invalid solution: Index tree incorrectly ordered\n");
}

2
src/crypto/equihash.h

@ -80,7 +80,7 @@ public:
FullStepRow(const FullStepRow<W>& a, const FullStepRow<W>& b, size_t len, size_t lenIndices, int trim);
FullStepRow& operator=(const FullStepRow<WIDTH>& a);
inline bool IndicesBefore(const FullStepRow<WIDTH>& a, size_t len) const { return ArrayToEhIndex(hash+len) < ArrayToEhIndex(a.hash+len); }
inline bool IndicesBefore(const FullStepRow<WIDTH>& a, size_t len, size_t lenIndices) const { return memcmp(hash+len, a.hash+len, lenIndices) < 0; }
std::vector<eh_index> GetIndices(size_t len, size_t lenIndices) const;
template<size_t W>

69
src/test/equihash_tests.cpp

@ -85,75 +85,82 @@ void TestEquihashValidator(unsigned int n, unsigned int k, const std::string &I,
BOOST_AUTO_TEST_CASE(solver_testvectors) {
TestEquihashSolvers(96, 5, "block header", 0, {
{182, 100500, 71010, 81262, 11318, 81082, 84339, 106327, 25622, 123074, 50681, 128728, 27919, 122921, 33794, 39634, 3948, 33776, 39058, 39177, 35372, 67678, 81195, 120032, 5452, 128944, 110158, 118138, 37893, 65666, 49222, 126229}
});
TestEquihashSolvers(96, 5, "block header", 1, {
{1510, 43307, 63800, 74710, 37892, 71424, 63310, 110898, 2260, 70172, 12353, 35063, 13433, 71777, 35871, 80964, 14030, 50499, 35055, 77037, 41990, 79370, 72784, 99843, 16721, 125719, 127888, 131048, 85492, 126861, 89702, 129167},
{1623, 18648, 8014, 121335, 5288, 33890, 35968, 74704, 2909, 53346, 41954, 48211, 68872, 110549, 110905, 113986, 20660, 119394, 30054, 37492, 23025, 110409, 55861, 65351, 45769, 128708, 82357, 124990, 76854, 130060, 99713, 119536}
});
TestEquihashSolvers(96, 5, "block header", 2, {
{17611, 81207, 44397, 50188, 43411, 119224, 90094, 99790, 21704, 122576, 34295, 98391, 22200, 82614, 108526, 114425, 20019, 69354, 28160, 34999, 31902, 103318, 49332, 65015, 60702, 107535, 76891, 81801, 69559, 83079, 125721, 129893}
{3389, 110764, 37520, 58346, 4112, 61459, 47776, 84587, 11643, 34988, 36560, 98422, 36242, 47864, 76737, 80053, 3422, 74285, 77922, 101376, 58602, 104312, 64513, 89638, 10240, 76326, 27584, 36949, 43637, 75295, 56666, 91601}
});
TestEquihashSolvers(96, 5, "block header", 10, {
{787, 20674, 53516, 73404, 4022, 110690, 35427, 58606, 22749, 129878, 34185, 112292, 56949, 100033, 100182, 115894, 13225, 23627, 94405, 114446, 14243, 118738, 36358, 79934, 49517, 78196, 85137, 85376, 57430, 77040, 102235, 114826},
{2656, 33964, 2683, 87167, 19223, 113046, 67505, 101388, 12585, 77102, 18807, 117333, 70932, 106281, 85381, 118430, 6664, 12926, 6868, 33372, 15227, 128690, 89250, 96792, 14322, 23199, 32286, 57355, 54637, 130050, 70335, 99067},
{4207, 21880, 85981, 113070, 16301, 41187, 88537, 103201, 6295, 86241, 21605, 56786, 28030, 80680, 52120, 79774, 7875, 56055, 25882, 112870, 9719, 40271, 35223, 50883, 27959, 92599, 70158, 106739, 31838, 117463, 69735, 83367},
{9637, 51478, 44285, 93559, 76796, 108515, 123998, 124708, 17379, 29371, 21401, 48583, 62725, 80279, 109465, 111074, 16793, 128680, 42090, 42327, 34750, 101600, 64379, 84300, 48256, 49313, 82752, 87659, 67566, 117002, 78981, 122103}
});
TestEquihashSolvers(96, 5, "block header", 11, {
{1638, 116919, 4749, 45156, 58749, 103900, 92294, 109359, 16076, 89395, 21938, 121398, 18847, 43685, 53116, 114427, 7067, 69901, 23179, 73689, 33890, 103453, 66168, 129978, 57522, 115912, 81791, 123826, 76090, 96629, 120289, 123662},
{2957, 38313, 18116, 83967, 10458, 51007, 13244, 61860, 16311, 113118, 76034, 90819, 43134, 61561, 68365, 93667, 7626, 86183, 62381, 109415, 90075, 114836, 93702, 131024, 19175, 124662, 20036, 34896, 33427, 60491, 103672, 107450}
});
TestEquihashSolvers(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0, {
{2140, 64888, 7062, 37067, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 76507, 84243, 125869, 5425, 22827, 37743, 119459, 37587, 118338, 39127, 40622, 16812, 26417, 112391, 120791, 22472, 74552, 43030, 129191},
{2742, 14130, 3738, 38739, 60817, 92878, 102087, 102882, 7493, 114098, 11019, 96605, 53351, 65844, 92194, 111605, 12488, 21213, 93833, 103682, 74551, 80813, 93325, 109313, 24782, 124251, 39372, 50621, 35398, 90386, 66867, 79277}
});
TestEquihashSolvers(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1, {
{2154, 87055, 7922, 12920, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 62307, 10987, 93891, 19673, 24483, 33984, 91500, 38171, 85505, 94625, 106140, 31530, 60861, 59391, 117337, 68078, 129665, 126764, 128278},
{3521, 83631, 86264, 106366, 62729, 102245, 74046, 114174, 45281, 59655, 45686, 60328, 71798, 123267, 83891, 121660, 12375, 83210, 94890, 120434, 35140, 109028, 65151, 89820, 18962, 24744, 55758, 116061, 63695, 125324, 98242, 125805}
});
TestEquihashSolvers(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 2, {
{2219, 49740, 102167, 108576, 15546, 73320, 29506, 94663, 13900, 74954, 16748, 35617, 42643, 58400, 60768, 63883, 4677, 111178, 35802, 120953, 21542, 89457, 97759, 128494, 24444, 99755, 97152, 108239, 39816, 92800, 85532, 88575},
{2258, 41741, 8329, 74706, 8166, 80151, 31480, 86606, 5417, 79683, 97197, 100351, 18608, 61819, 65689, 79940, 13038, 28092, 21997, 62813, 22268, 119557, 58111, 63811, 45789, 72308, 50865, 81180, 91695, 127084, 93402, 95676},
{3279, 96607, 78609, 102949, 32765, 54059, 79472, 96147, 25943, 36652, 47276, 71714, 26590, 29892, 44598, 58988, 12323, 42327, 60194, 87786, 60951, 103949, 71481, 81826, 13535, 88167, 17392, 74652, 21924, 64941, 54660, 72151},
{8970, 81710, 78816, 97295, 22433, 83703, 59463, 101258, 9014, 75982, 102935, 111574, 27277, 30040, 54221, 107719, 18593, 89276, 94385, 119768, 34013, 63600, 46240, 87288, 46573, 80865, 47845, 67566, 92645, 121901, 102751, 104818}
{6310, 126030, 19266, 92728, 22993, 43617, 59500, 110969, 8633, 95173, 11769, 69347, 21455, 114538, 67360, 77234, 7538, 84336, 27001, 79803, 33408, 111870, 42328, 48938, 19045, 48081, 55314, 86688, 24992, 93296, 68568, 106618}
});
TestEquihashSolvers(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 10, {
{6768, 10445, 80746, 128923, 28583, 50486, 47353, 58892, 35052, 45980, 61445, 103307, 67117, 94090, 78715, 109244, 20795, 102820, 31354, 91894, 50174, 126488, 77522, 80142, 28219, 74825, 66159, 73984, 60786, 121859, 70144, 120379},
{7865, 119271, 33055, 103984, 19519, 65954, 36562, 123493, 10038, 60327, 10645, 98001, 10748, 108967, 73961, 99283, 20538, 21631, 41159, 81213, 71041, 74642, 97906, 107612, 47736, 74711, 75451, 117319, 53428, 73882, 73362, 125084}
});
TestEquihashSolvers(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 11, {
{3298, 28759, 56287, 109050, 13166, 122018, 75757, 109249, 7616, 83872, 103256, 119576, 43182, 121748, 81417, 120122, 23405, 129542, 68426, 117326, 56427, 118027, 73904, 77697, 41334, 118772, 89089, 130655, 107174, 128610, 107577, 118332}
{637, 78032, 97478, 118268, 16058, 44395, 19029, 39150, 1566, 66582, 4084, 107252, 59619, 116281, 67957, 128728, 30916, 69051, 90422, 102716, 51905, 66753, 60509, 78066, 38568, 119630, 75839, 113134, 54356, 70996, 63085, 83048},
{4130, 71826, 46248, 50447, 4281, 129092, 23122, 103196, 9305, 34797, 111094, 127775, 82662, 120386, 109738, 124765, 24770, 125174, 83477, 102473, 45209, 79062, 84764, 125929, 31689, 95554, 66614, 127658, 31756, 55684, 53670, 53776}
});
}
BOOST_AUTO_TEST_CASE(validator_testvectors) {
// Original valid solution
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{2140, 64888, 7062, 37067, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 76507, 84243, 125869, 5425, 22827, 37743, 119459, 37587, 118338, 39127, 40622, 16812, 26417, 112391, 120791, 22472, 74552, 43030, 129191},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{2154, 87055, 7922, 12920, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 62307, 10987, 93891, 19673, 24483, 33984, 91500, 38171, 85505, 94625, 106140, 31530, 60861, 59391, 117337, 68078, 129665, 126764, 128278},
true);
// Change one index
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{2141, 64888, 7062, 37067, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 76507, 84243, 125869, 5425, 22827, 37743, 119459, 37587, 118338, 39127, 40622, 16812, 26417, 112391, 120791, 22472, 74552, 43030, 129191},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{2155, 87055, 7922, 12920, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 62307, 10987, 93891, 19673, 24483, 33984, 91500, 38171, 85505, 94625, 106140, 31530, 60861, 59391, 117337, 68078, 129665, 126764, 128278},
false);
// Swap two arbitrary indices
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{76507, 64888, 7062, 37067, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 2140, 84243, 125869, 5425, 22827, 37743, 119459, 37587, 118338, 39127, 40622, 16812, 26417, 112391, 120791, 22472, 74552, 43030, 129191},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{62307, 87055, 7922, 12920, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 2154, 10987, 93891, 19673, 24483, 33984, 91500, 38171, 85505, 94625, 106140, 31530, 60861, 59391, 117337, 68078, 129665, 126764, 128278},
false);
// Reverse the first pair of indices
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{64888, 2140, 7062, 37067, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 76507, 84243, 125869, 5425, 22827, 37743, 119459, 37587, 118338, 39127, 40622, 16812, 26417, 112391, 120791, 22472, 74552, 43030, 129191},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{87055, 2154, 7922, 12920, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 62307, 10987, 93891, 19673, 24483, 33984, 91500, 38171, 85505, 94625, 106140, 31530, 60861, 59391, 117337, 68078, 129665, 126764, 128278},
false);
// Swap the first and second pairs of indices
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{7062, 37067, 2140, 64888, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 76507, 84243, 125869, 5425, 22827, 37743, 119459, 37587, 118338, 39127, 40622, 16812, 26417, 112391, 120791, 22472, 74552, 43030, 129191},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{7922, 12920, 2154, 87055, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 62307, 10987, 93891, 19673, 24483, 33984, 91500, 38171, 85505, 94625, 106140, 31530, 60861, 59391, 117337, 68078, 129665, 126764, 128278},
false);
// Swap the second-to-last and last pairs of indices
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{2140, 64888, 7062, 37067, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 76507, 84243, 125869, 5425, 22827, 37743, 119459, 37587, 118338, 39127, 40622, 16812, 26417, 112391, 120791, 43030, 129191, 22472, 74552},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{2154, 87055, 7922, 12920, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 62307, 10987, 93891, 19673, 24483, 33984, 91500, 38171, 85505, 94625, 106140, 31530, 60861, 59391, 117337, 126764, 128278, 68078, 129665},
false);
// Swap the first half and second half
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{5425, 22827, 37743, 119459, 37587, 118338, 39127, 40622, 16812, 26417, 112391, 120791, 22472, 74552, 43030, 129191, 2140, 64888, 7062, 37067, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 76507, 84243, 125869},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{19673, 24483, 33984, 91500, 38171, 85505, 94625, 106140, 31530, 60861, 59391, 117337, 68078, 129665, 126764, 128278, 2154, 87055, 7922, 12920, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 62307, 10987, 93891},
false);
// Sort the indices
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{2140, 5425, 6685, 7062, 11292, 16812, 18151, 22472, 22827, 26417, 27641, 37067, 37587, 37743, 39127, 40622, 43030, 53514, 55608, 64888, 70723, 73669, 74552, 76507, 84243, 88834, 112391, 118338, 119459, 120791, 125869, 129191},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{2154, 2432, 3912, 7922, 10987, 12920, 19673, 24483, 31530, 33984, 38171, 45189, 48178, 48280, 49783, 59391, 60861, 62307, 67880, 68078, 85505, 87055, 91500, 93891, 94625, 106140, 117337, 122795, 124296, 126764, 128278, 129665},
false);
// Duplicate indices
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{2140, 2140, 64888, 64888, 7062, 7062, 37067, 37067, 11292, 11292, 27641, 27641, 53514, 53514, 70723, 70723, 6685, 6685, 73669, 73669, 18151, 18151, 88834, 88834, 55608, 55608, 76507, 76507, 84243, 84243, 125869, 125869},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{2154, 2154, 87055, 87055, 7922, 7922, 12920, 12920, 45189, 45189, 49783, 49783, 122795, 122795, 124296, 124296, 2432, 2432, 48178, 48178, 48280, 48280, 67880, 67880, 3912, 3912, 62307, 62307, 10987, 10987, 93891, 93891},
false);
// Duplicate first half
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 0,
{2140, 64888, 7062, 37067, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 76507, 84243, 125869, 2140, 64888, 7062, 37067, 11292, 27641, 53514, 70723, 6685, 73669, 18151, 88834, 55608, 76507, 84243, 125869},
TestEquihashValidator(96, 5, "Equihash is an asymmetric PoW based on the Generalised Birthday problem.", 1,
{2154, 87055, 7922, 12920, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 62307, 10987, 93891, 2154, 87055, 7922, 12920, 45189, 49783, 122795, 124296, 2432, 48178, 48280, 67880, 3912, 62307, 10987, 93891},
false);
}

220
src/test/miner_tests.cpp

@ -24,116 +24,116 @@ struct {
const char *nonce_hex;
uint32_t vSolutions[NUM_EQUIHASH_SOLUTIONS];
} blockinfo[] = {
{"0000000000000000000000000000000000000000000000000000000000000000", {97743,30132657,484063,549799,19348864,23335066,22922656,25212984,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3704844,19676691,5558781,19454332,6669915,23401490,14677063,19400208,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1163066,10418279,18213323,33214736,22651636,27284477,27568170,31886880,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {9437140,11715184,19371050,28966349,16609248,24809554,21156339,24329400,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {2060808,14976084,3929233,8635606,2129994,29321978,18009732,20899603,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6553151,27547222,14374815,26966781,11572967,18515299,13425522,25942859,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {3830400,31681697,8210152,12108799,6539013,7272751,8002435,18353246,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2347532,11316683,3657242,6346602,7767083,9711208,14774567,20327455,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {375375,10923448,2690587,4355326,5387974,26027068,8838706,26025107,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3085258,31739796,20142350,24205810,20852611,26722451,30903228,32829827,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {5395844,27138460,14773502,17738417,7702401,20224724,27335595,27369205,}},
{"0000000000000000000000000000000000000000000000000000000000000004", {1902919,22420687,11555907,26533901,7140909,9533324,23456860,29031946,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6847902,22822141,22499684,28459893,8721831,21654167,15186174,27048912,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1590139,14875756,11673960,20903589,7199901,14497011,8704820,27430995,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1124558,8305774,17764744,27873733,5387634,6987439,6986181,21127745,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3197745,5825725,17977936,19348879,5874615,15887691,15017865,31597246,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {10469647,26060158,15880265,25775850,11043315,30083864,13122460,19138629,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {11010883,27697707,26476073,29000438,17504202,19922171,29822139,33063857,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3404296,23492192,8817274,29619278,8418789,14105467,17418978,30576012,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1508731,11137601,2115128,16969615,2067207,23465770,7575884,9882258,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {177353,8924531,9983009,10616028,3772765,7424649,5422939,20970804,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {320212,7857131,18308879,25253336,6561829,8589182,8966024,10570267,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {181083,31789696,24507346,26209656,7718065,22999323,10743327,31353280,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {465807,9228966,3083171,7969599,4928825,26972710,15817909,31729384,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3676,2909041,5948826,11593877,10433824,33508618,11427438,31524008,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1640081,28434654,26510595,29673164,7842550,19055553,9833590,13400268,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {1061609,15612480,7681662,30991237,19882132,29284639,25169376,30303278,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {99804,33190805,8421265,22831818,15597760,29765176,18462058,27399781,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {393632,8223856,18154872,31857036,6466434,10898122,8092016,23510083,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1168321,22320269,20146313,31053384,2136680,16384955,5347965,16673756,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6572873,29527411,6961349,22187080,13188505,15731402,26508098,30432587,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4924166,6980487,19176475,20298240,8648353,28273621,8799191,18322308,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2842168,18835810,9111204,13670859,5206568,26351703,10247067,14161373,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1140,7428267,18165632,32442656,11324427,28921953,20742626,22277053,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2377188,19710714,10547871,32643708,10404302,18785688,13079055,18715471,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {856180,18364822,7089832,29888479,10722910,18669870,22122535,32894082,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {3907433,24897047,4534936,7797466,10715155,22967816,11132191,16463669,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1158847,10985791,1984321,24625094,2275980,10061803,14987747,29048783,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1313124,27847846,19551178,32271024,15895849,28869054,17547180,26443544,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1662315,12524026,6888640,27496996,7333655,15233456,12309604,25012207,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1788805,5825783,9425477,31593658,11444111,32242541,23080214,25810332,}},
{"0000000000000000000000000000000000000000000000000000000000000003", {2538508,32602057,16694134,18822406,6729083,25625751,17569380,33186084,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {178290,20453209,5144992,10328787,6345446,26439712,14656409,15726547,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {999921,16132813,3186087,11047015,3534048,4930850,7305627,21301240,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2548772,3363393,21706776,31686311,14614075,27114655,22343013,32107261,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {740515,26901858,12687793,31790705,1690282,7959602,3805504,25476964,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {912272,19107394,2828728,28392925,1676293,3269042,5935967,16052535,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1879164,14761835,20935337,27097296,23971052,26699336,25380084,26237031,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {428872,30650130,7842851,18041619,810070,9893203,23497766,24044141,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3041035,11729659,4346845,24654869,8299008,19199980,12708456,13113057,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {279352,22425147,6920303,12396944,7181346,22615426,7234243,31260044,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2642203,26353464,6990714,20461271,3859654,26044145,7003288,10950283,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {69721,2003244,3433727,16788763,11137223,22692583,25917212,28264898,}},
{"0000000000000000000000000000000000000000000000000000000000000003", {827361,14757187,12173872,32927653,4834580,16014323,28522559,32720842,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {943082,26125428,7063890,12689201,19366814,29929114,20021732,23723681,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2345325,11820207,4536851,32283539,6108863,8350508,14558654,27427717,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {379670,20128453,18366504,22664728,2539170,11976200,14142317,21628231,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2224626,12595113,13278637,22210479,5804387,10218802,25593718,32524722,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1258057,22452082,23017388,26124428,7859519,13551906,17990962,21957359,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {9072862,18661859,17472368,21283456,16167224,24215261,22615447,28419440,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {324128,23482316,6387287,18783001,1027618,18277617,23304693,32909066,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {726841,22091586,4707954,9012045,18174370,26925115,19667216,28271947,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6483973,11911695,30612326,32606885,13729745,20313064,27823097,33023741,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {271633,25251940,1551390,14796372,9225743,32098496,13649799,25998208,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4077520,22355925,9637752,30500696,15798234,32393429,19650327,25852691,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {628461,19694351,16549678,24252512,18473404,28936053,18732469,19101118,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5074185,16255586,33416220,33476906,6397497,9343800,18135165,25731401,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2617008,3320422,10084397,24518906,3158345,29451440,13200984,27878786,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1912945,9445790,16354788,31126073,5743413,10976421,16228101,22853225,}},
{"0000000000000000000000000000000000000000000000000000000000000003", {4432996,15508567,14297344,33399602,18160067,20997003,25843025,33480466,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {445614,609785,29644824,31224472,1839565,21164124,6783649,10669305,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {584483,20375592,9768355,22723677,6409108,19606833,10334066,20651287,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1516393,2834213,15969993,28842985,2791251,5698434,30633491,33418737,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4169681,7798686,24930841,26067909,6436856,10356829,18755059,20202877,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {597623,30693250,13226060,26024715,6136533,33518750,17855976,19074153,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {787970,14793171,8299648,31091678,1655550,22351161,12333408,14598544,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1111500,14103714,5246332,25430530,5521024,17003503,10668446,22070268,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6057501,22294380,8135795,33259648,6998249,8031836,22346743,22903931,}},
{"0000000000000000000000000000000000000000000000000000000000000003", {896965,12013733,15857331,26117022,5023142,6107703,17790821,27388113,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {15073914,26886328,18131701,18591331,16607610,26669160,18609534,22370025,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {630127,4805826,1058189,13200575,6187595,6465800,20904724,30542083,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3081952,30329585,8807240,32684619,11381758,23263447,19399856,33082704,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2142018,21724119,7811869,24398105,3966578,28142144,14104322,29508481,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2874547,30802580,15892355,22003984,9346208,18178692,14076304,20733888,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {779844,18706159,28895671,31803912,10184018,28298709,20777057,27940184,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {10859544,32356399,25045820,29204699,12535111,29771035,17779397,20293821,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2236797,24188729,26471954,31067490,20790752,25499712,27964953,30534637,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2569923,33091378,14013336,31245271,3494782,29723492,13410015,22620131,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {9760213,26449094,24273305,32591923,18561773,32580017,31879094,33248534,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {94257,5369755,19980716,32932183,8406229,20368558,17504990,20181390,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {510146,7533784,1891615,13054235,6705711,20187878,27010433,32053536,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2166293,20065304,14414805,21032397,4133862,23019683,6531714,7126905,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1041778,4456065,5358631,13763143,7577200,26665229,24068796,28800398,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {937582,26826308,28058792,28694768,5189727,19372397,15614322,16105488,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4521500,6966737,6323323,13862143,11485955,12307184,11629729,26024368,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {9040844,21264220,14276904,24928489,19506656,30369558,27472157,27786434,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1614072,27004142,14105308,32866905,5852759,27596517,26864322,30651762,}},
{"0000000000000000000000000000000000000000000000000000000000000003", {6202568,10379593,16337809,31904445,7415075,15097878,17352682,23565977,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {10572238,22741016,11410795,26024250,12178838,26399921,18113727,27056540,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {17757,2573951,8211950,24719701,2117286,11676185,6515678,25435925,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1574654,20492089,10353675,29134399,10903399,17528416,17768662,26623799,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2696594,32385619,9085580,18428083,13894117,32532539,16764630,30477048,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {566464,19542928,11742509,23529539,16553277,32987568,20939994,29146760,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2493469,11900665,10188594,27320996,16250998,33188477,28435414,30583363,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5722857,30015694,24112853,28247326,21832584,28338357,26816419,32122301,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1734816,3552535,9674546,27191644,3451938,22052830,10479347,18547655,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {3087729,17246853,12037147,16883103,6833770,31054683,12987022,15748037,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {8229812,16931970,30132685,30164944,9206203,31075410,19923587,33312205,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2481700,27601048,4684063,18020803,16501451,17797310,23596122,33335733,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3778911,19607199,16603727,20456918,7209095,31778215,9795558,18557070,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1505683,9304455,10114563,22791213,4035556,9345213,16397229,25618807,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {424096,20333317,10622499,20209226,6884666,27470139,23474454,30531201,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2179663,27008838,7162220,11963499,5092907,18014816,28361015,31223796,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {303751,21454192,8761201,12598180,4577837,29015619,20421055,22955596,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1751790,19856152,8574507,16953069,4251312,13393763,5955453,28913023,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {785184,14253319,24484102,27390835,1317570,12730552,16069105,29576909,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1718219,27413934,2674938,15453490,13954323,25472379,16189626,19128343,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {629365,1981622,1749373,24877483,8217463,18016882,14658154,27211901,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1688422,3318138,17890535,32625825,12604028,31950324,14297499,19466358,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6533168,12680284,12068506,12751411,12567359,27540043,12768573,16069354,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {968090,8442388,1117421,7976193,14006881,31798833,18085134,20401083,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3514701,12360162,5234778,5999621,11789340,18832893,22869850,23439344,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2575979,27830265,13819669,22742927,3121997,13349293,6263893,15290297,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5062267,7659171,14486124,23330332,11966804,24824323,14038938,18878817,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {11213446,20265755,12893621,23017856,16734884,31765345,21333472,23827684,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {5518261,30764760,12823014,13655635,7134888,32813890,11382973,17173863,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {664025,15589977,1951845,15881472,1451881,20455835,14830157,31859267,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1381023,8353598,5447556,7981905,3286916,28307849,12223998,24222776,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2270156,9693893,7097804,33155995,5209943,24608558,23175278,23996312,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {598743,7549066,12220120,16548000,1187946,6360178,9203030,20938470,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {7169872,31048822,17475729,28022573,14929725,33419266,19983803,21561441,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {823149,1383285,2864831,18895121,4028941,6686607,23910447,28604567,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2182559,17932563,5472524,13379261,8567276,32616974,13001732,29914746,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {8611685,24932345,31206257,33073835,19148378,25317035,19310180,22845583,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {83068,29700240,3972272,6850295,9153017,29691329,22889643,28586890,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2036436,33222933,10430117,26029089,14468206,23205454,16914535,23655899,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {54367,28431614,4046008,18177082,6036369,11490568,10955988,30899748,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2546890,18985534,25329149,33071236,4813628,14855283,9753607,18836650,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {10805583,19004556,28249173,32689480,11182279,15314398,16390145,19761642,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {165667,26786566,1226777,1745893,3573753,20991068,16300414,25762822,}},
{"0000000000000000000000000000000000000000000000000000000000000003", {62918,4072570,4440776,26738888,3934004,19477034,20612480,32574298,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1719533,12082749,11189320,14802151,1932592,6082360,3182419,15839619,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {3264146,31555777,9558781,24052145,3492269,12679179,20287639,24428614,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {9620201,29437274,12503846,23031898,12057554,20334741,13655193,19216975,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {7885417,28251852,18863119,30898457,15346252,26882297,18476594,21100099,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {240010,13062691,13209296,15801269,5482499,6697795,20389947,30871777,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1069937,5009862,20476681,21883864,3816975,18168447,12966753,27204663,}},
{"0000000000000000000000000000000000000000000000000000000000000003", {4720504,28475581,30132313,32996687,15421528,33006056,19410498,32808177,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {3375419,19887018,3583901,18414401,4072420,5558293,9497494,22664087,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2812898,30205959,7980517,16869166,10455874,11175055,28088879,29386025,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {91377,8095055,15028975,21569250,7121267,23141695,10638134,22152880,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5320074,19134224,5908808,20417182,9802516,29176362,11327661,27117599,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2304141,20069153,19299006,32940065,4897139,26940432,31702454,32395918,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2183041,9634135,32043677,33261946,18256807,30835923,19504088,20654921,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {7646265,16434464,9910305,18212419,12149694,22678629,32034346,32963185,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {924537,5073683,1803756,28393103,21164203,30767320,21433406,22064835,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2606837,19557323,21550527,21601365,6848017,22514207,25667860,30755108,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {131529,17520841,8190594,12399429,1736902,29945839,25566017,31113393,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {74277,30398806,5823084,26201084,4363661,31286936,8937184,25310621,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5629775,21833920,16203890,25997616,6778531,10871927,26779945,32073815,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {7360230,29863781,8172797,25440735,9306446,31827129,10966698,20794387,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1020818,19742792,2996289,3324122,4671579,8811651,9334761,25096551,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {6257905,25988186,21198798,27940315,11405239,18843426,13218595,16970291,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3661427,29865559,4313400,13731482,5384386,9968554,13573546,18976286,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {297493,14307372,3086420,11769568,1531156,33417896,16891836,26835748,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {850439,939868,16088315,17847062,1459858,18852207,21613990,31341287,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1498173,5659035,3580647,9784724,7042945,27605458,13983089,21772555,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {265300,25657381,5837906,32684326,6197029,26496479,11782433,28354118,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4235902,8416342,16760709,18644724,9088314,21041118,16132732,19921969,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {7054865,20285428,13191729,31228813,7505236,24662594,21292235,27185614,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {805354,2124453,6739370,31189471,19047536,20922898,19270405,25919260,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1250066,15110709,6902216,30436877,17319807,22578956,25091517,30273798,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {5860838,12990745,6387378,25809956,16172365,27030579,20735436,22490295,}},
{"0000000000000000000000000000000000000000000000000000000000000003", {2907633,29738850,19732451,33309735,11787163,13756425,15433747,25267074,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5804619,14577145,23001890,25863602,15458582,17688201,21112935,29728563,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1688425,18136649,4537229,13269806,3269606,8593962,12360926,33488147,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1665070,25244052,10550119,32208768,5137014,8320231,16775388,27839194,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {8311110,18046143,12839548,22041548,13420948,13944339,18677700,30812557,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4390682,27036744,19696521,24884392,4681756,23237938,25816582,32996775,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1477153,6568369,21857553,29435914,6140396,22576862,7262979,19002076,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2965409,8684457,14803533,17967084,5354409,24881786,11719903,14361443,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {5102862,17625845,28100560,28357633,17222636,18254369,18018129,30189744,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5708850,27621214,13753873,29665262,12657384,30563632,17310655,27915369,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {2621572,12689538,4630982,29901889,3629010,6756957,3677965,30610562,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6500643,24447105,7448249,19069836,7887394,13551853,20649165,28423060,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {2036368,6750468,15795769,15825950,19238166,20733230,26877439,27642252,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1652218,13634797,12191514,32332965,6697455,11150626,14892178,19111832,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {111950,30863388,8779039,26464089,10089865,12353207,11894521,14091302,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {3078281,23872429,20954798,21282269,4882746,21043227,7172181,33550236,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3503224,25625938,18816585,29803345,3951932,12591146,6670269,15890043,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {605872,33319409,1817073,12822625,20032228,27403095,23666911,27183623,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1766741,14384326,5278687,22979584,2203181,32152823,3183017,10965482,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {3169640,23411466,3176871,23877547,16430704,19991138,24227956,28550729,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {233750,13283920,15875314,27705359,6749492,16980557,13229511,13859447,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1077756,26076907,2621177,14078132,4915880,8647511,29725443,32637495,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1752795,25529160,13826361,21067812,6077322,28675496,24371900,30366250,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1546413,6490653,19447435,27055625,9234404,9968283,20817365,28434279,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2468906,31932096,3450912,22420554,6120742,15406354,30836680,32518512,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2123031,24896642,7125942,24921615,12317438,24914782,14264318,32418155,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {3353184,6915242,5315514,15444924,6518261,16708409,24086722,25093861,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {857291,31955694,8619476,13282852,5131527,18688880,19863466,19950736,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1739656,25530805,3754388,6793402,15290893,29035753,29565345,30305622,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2611937,27825146,10822599,15545335,5617357,29278495,15877832,17901616,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3831314,7379114,18116475,23520810,14414038,21954620,18383396,27660414,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {7130501,27003497,14460801,23267542,9842198,21710006,20485258,25867107,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2508815,15933718,29539325,32090536,4829668,10149214,26025842,27744647,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {279100,29887493,785496,18973521,2321564,14770369,20866351,31894781,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1699206,29970967,5475930,14850478,4783802,13945615,16786338,16900692,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1744255,6901279,7349326,32108795,3573261,15043801,16532064,22293749,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1559827,5877322,1737945,18114144,3789777,18167812,18370250,31124870,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1116048,17556996,8840198,29420603,20557703,20953366,30328439,30663015,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {798196,16377273,22015317,22772453,5946638,18262318,13868482,23874803,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {257224,19262005,22082724,22118460,7866566,25856702,14611593,20556202,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1155318,18602392,18835625,19453594,15574365,25501175,26620735,29546443,}},
{"0000000000000000000000000000000000000000000000000000000000000004", {1118617,21836063,21221995,26806476,18126093,20913596,18777695,32729986,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4113293,20842387,8047389,14992088,5113685,11404673,19908238,27527216,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1907186,28213894,13785483,22598351,2314631,32975665,17852278,26847039,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1452278,11354301,1662083,19787092,1800371,12918477,22475783,23758259,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {219653,29803795,9124713,9874906,14412340,23444473,16935535,21346968,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {17292969,19730374,18717002,28865642,20109525,30112035,20906344,26953734,}},
};
// NOTE: These tests rely on CreateNewBlock doing its own self-validation!

Loading…
Cancel
Save