Browse Source

Auto merge of #887 - str4d:mining-slow-start, r=ebfull

Implement mining slow start

Closes #762.
pull/145/head
zkbot 8 years ago
parent
commit
b1f699660f
  1. 2
      src/chainparams.cpp
  2. 14
      src/consensus/params.h
  3. 19
      src/main.cpp
  4. 34
      src/test/main_tests.cpp
  5. 252
      src/test/miner_tests.cpp

2
src/chainparams.cpp

@ -31,6 +31,7 @@ class CMainParams : public CChainParams {
public:
CMainParams() {
strNetworkID = "main";
consensus.nSubsidySlowStartInterval = 5000;
consensus.nSubsidyHalvingInterval = 210000;
consensus.nMajorityEnforceBlockUpgrade = 750;
consensus.nMajorityRejectBlockOutdated = 950;
@ -209,6 +210,7 @@ class CRegTestParams : public CTestNetParams {
public:
CRegTestParams() {
strNetworkID = "regtest";
consensus.nSubsidySlowStartInterval = 0;
consensus.nSubsidyHalvingInterval = 150;
consensus.nMajorityEnforceBlockUpgrade = 750;
consensus.nMajorityRejectBlockOutdated = 950;

14
src/consensus/params.h

@ -14,6 +14,20 @@ namespace Consensus {
*/
struct Params {
uint256 hashGenesisBlock;
/** Needs to evenly divide MAX_SUBSIDY to avoid rounding errors. */
int nSubsidySlowStartInterval;
/**
* Shift based on a linear ramp for slow start:
*
* MAX_SUBSIDY*(t_s/2 + t_r) = MAX_SUBSIDY*t_h Coin balance
* t_s + t_r = t_h + t_c Block balance
*
* t_s = nSubsidySlowStartInterval
* t_r = number of blocks between end of slow start and first halving
* t_h = nSubsidyHalvingInterval
* t_c = SubsidySlowStartShift()
*/
int SubsidySlowStartShift() const { return nSubsidySlowStartInterval / 2; }
int nSubsidyHalvingInterval;
/** Used to check majorities for block version upgrade */
int nMajorityEnforceBlockUpgrade;

19
src/main.cpp

@ -1327,12 +1327,27 @@ bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex)
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
CAmount nSubsidy = 50 * COIN;
// Mining slow start
// The subsidy is ramped up linearly, skipping the middle payout of
// MAX_SUBSIDY/2 to keep the monetary curve consistent with no slow start.
if (nHeight < consensusParams.nSubsidySlowStartInterval / 2) {
nSubsidy /= consensusParams.nSubsidySlowStartInterval;
nSubsidy *= nHeight;
return nSubsidy;
} else if (nHeight < consensusParams.nSubsidySlowStartInterval) {
nSubsidy /= consensusParams.nSubsidySlowStartInterval;
nSubsidy *= (nHeight+1);
return nSubsidy;
}
assert(nHeight > consensusParams.SubsidySlowStartShift());
int halvings = (nHeight - consensusParams.SubsidySlowStartShift()) / consensusParams.nSubsidyHalvingInterval;
// Force block reward to zero when right shift is undefined.
if (halvings >= 64)
return 0;
CAmount nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
nSubsidy >>= halvings;
return nSubsidy;

34
src/test/main_tests.cpp

@ -20,18 +20,23 @@ static void TestBlockSubsidyHalvings(const Consensus::Params& consensusParams)
CAmount nPreviousSubsidy = nInitialSubsidy * 2; // for height == 0
BOOST_CHECK_EQUAL(nPreviousSubsidy, nInitialSubsidy * 2);
for (int nHalvings = 0; nHalvings < maxHalvings; nHalvings++) {
int nHeight = nHalvings * consensusParams.nSubsidyHalvingInterval;
int nHeight;
if (nHalvings > 0) // Check subsidy right at halvings
nHeight = nHalvings * consensusParams.nSubsidyHalvingInterval + consensusParams.SubsidySlowStartShift();
else // Check subsidy just after end of slow start
nHeight = consensusParams.nSubsidySlowStartInterval;
CAmount nSubsidy = GetBlockSubsidy(nHeight, consensusParams);
BOOST_CHECK(nSubsidy <= nInitialSubsidy);
BOOST_CHECK_EQUAL(nSubsidy, nPreviousSubsidy / 2);
nPreviousSubsidy = nSubsidy;
}
BOOST_CHECK_EQUAL(GetBlockSubsidy(maxHalvings * consensusParams.nSubsidyHalvingInterval, consensusParams), 0);
BOOST_CHECK_EQUAL(GetBlockSubsidy((maxHalvings * consensusParams.nSubsidyHalvingInterval) + consensusParams.SubsidySlowStartShift(), consensusParams), 0);
}
static void TestBlockSubsidyHalvings(int nSubsidyHalvingInterval)
static void TestBlockSubsidyHalvings(int nSubsidySlowStartInterval, int nSubsidyHalvingInterval)
{
Consensus::Params consensusParams;
consensusParams.nSubsidySlowStartInterval = nSubsidySlowStartInterval;
consensusParams.nSubsidyHalvingInterval = nSubsidyHalvingInterval;
TestBlockSubsidyHalvings(consensusParams);
}
@ -39,15 +44,32 @@ static void TestBlockSubsidyHalvings(int nSubsidyHalvingInterval)
BOOST_AUTO_TEST_CASE(block_subsidy_test)
{
TestBlockSubsidyHalvings(Params(CBaseChainParams::MAIN).GetConsensus()); // As in main
TestBlockSubsidyHalvings(150); // As in regtest
TestBlockSubsidyHalvings(1000); // Just another interval
TestBlockSubsidyHalvings(50, 150); // As in regtest
TestBlockSubsidyHalvings(500, 1000); // Just another interval
}
BOOST_AUTO_TEST_CASE(subsidy_limit_test)
{
const Consensus::Params& consensusParams = Params(CBaseChainParams::MAIN).GetConsensus();
CAmount nSum = 0;
for (int nHeight = 0; nHeight < 14000000; nHeight += 1000) {
// Mining slow start
for (int nHeight = 0; nHeight < consensusParams.nSubsidySlowStartInterval; nHeight ++) {
CAmount nSubsidy = GetBlockSubsidy(nHeight, consensusParams);
BOOST_CHECK(nSubsidy <= 50 * COIN);
nSum += nSubsidy;
BOOST_CHECK(MoneyRange(nSum));
}
BOOST_CHECK_EQUAL(nSum, 12500000000000ULL);
// Remainder of first period
for (int nHeight = consensusParams.nSubsidySlowStartInterval; nHeight < consensusParams.nSubsidyHalvingInterval + consensusParams.SubsidySlowStartShift(); nHeight ++) {
CAmount nSubsidy = GetBlockSubsidy(nHeight, consensusParams);
BOOST_CHECK(nSubsidy <= 50 * COIN);
nSum += nSubsidy;
BOOST_CHECK(MoneyRange(nSum));
}
BOOST_CHECK_EQUAL(nSum, 1050000000000000ULL);
// Regular mining
for (int nHeight = consensusParams.nSubsidyHalvingInterval + consensusParams.SubsidySlowStartShift(); nHeight < 14000000; nHeight += 1000) {
CAmount nSubsidy = GetBlockSubsidy(nHeight, consensusParams);
BOOST_CHECK(nSubsidy <= 50 * COIN);
nSum += nSubsidy * 1000;

252
src/test/miner_tests.cpp

@ -24,116 +24,116 @@ struct {
const char *nonce_hex;
uint32_t vSolutions[NUM_EQUIHASH_SOLUTIONS];
} blockinfo[] = {
{"0000000000000000000000000000000000000000000000000000000000000000", {1401,77664,8779,67549,54187,127420,88890,128544,19444,43310,30156,76231,20957,45840,73064,88363,34483,92468,46413,83992,83393,92203,102774,116628,42017,69111,87818,91169,53615,63071,80521,114086}},
{"0000000000000000000000000000000000000000000000000000000000000000", {223,96141,50229,112621,17242,51644,33169,111286,3253,116579,41383,110620,12222,106913,55915,83207,17924,85931,99463,125536,29159,68343,71069,100713,25954,99583,38157,39818,37694,117193,76786,101842}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2893,60501,25732,38827,17842,68649,36188,90482,13465,40911,74233,130951,14934,55770,36516,68708,20484,75370,36426,90606,41970,108748,88026,125053,39560,43381,66786,101949,71941,105158,92403,109153}},
{"0000000000000000000000000000000000000000000000000000000000000001", {7072,110171,42973,68476,27096,36274,64817,92953,31843,86648,47843,70533,75625,117075,79224,85246,15677,68763,22124,66602,53031,59749,100518,130436,39447,60685,60321,62724,49168,63472,60411,81889}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2119,69343,2571,127513,47892,49823,111149,128489,31780,91247,63034,119916,62203,125714,74081,127950,7026,13061,23164,48547,16551,49158,80436,103905,36586,91219,80999,88847,50856,105957,67548,123312}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2517,62562,39268,77986,16518,51229,29477,100348,4012,103496,119321,127118,11875,124222,28967,102902,35754,117206,51613,90060,38508,89666,60511,129902,48301,61983,53539,73313,50379,59038,65064,120935}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1499,89885,75906,121427,28820,83778,118762,125872,2637,70940,100558,124490,53805,65597,54804,103433,1932,63169,8927,43427,20059,91140,39779,120909,41440,109780,48533,110359,49710,53152,59757,81599}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5124,84067,106291,119300,74864,99808,77304,90761,6537,111390,116714,127666,31060,101835,73576,112304,10908,60763,33199,98448,42143,117359,68636,84471,48504,76877,85655,91459,86608,108232,99786,109515}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2765,65371,115871,122413,5434,71411,16142,64973,27529,32243,75798,119132,59650,106831,99715,110521,6017,83035,112951,122924,27348,59497,92649,115583,19271,50901,67238,100396,44171,53969,110300,127107}},
{"0000000000000000000000000000000000000000000000000000000000000000", {634,87194,87124,96773,4632,98415,38617,43135,986,10635,32120,111600,38285,109477,38461,52020,3150,110686,38810,48516,42525,124757,90732,117110,11979,39159,51698,58046,17384,17609,17601,41453}},
{"0000000000000000000000000000000000000000000000000000000000000001", {9328,125327,38169,124592,22188,127776,24951,42500,10293,50581,24591,46085,27972,89402,39336,125642,15116,112752,108129,129808,34140,100307,66170,99709,27559,47474,71913,110647,37124,87943,59883,101205}},
{"0000000000000000000000000000000000000000000000000000000000000001", {3618,33338,12373,77851,32279,61438,59508,97355,21552,69920,56789,118369,62756,93218,96779,122037,10485,72076,39348,50546,16615,86126,84229,94863,27128,32691,45242,54823,41436,129235,42390,96932}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1729,126691,51026,80884,14431,44072,50039,57073,24701,84245,27008,52582,59216,64525,61958,68930,9973,67783,62280,130342,44833,119915,105958,125859,13761,61012,59665,114986,33729,85008,92742,112942}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3235,86876,113168,124258,36679,85600,39362,65950,5862,45224,12988,78857,9937,129126,19377,116220,5040,124148,100442,111064,44835,93520,61266,100734,11457,21484,104059,129771,26225,105322,38728,117684}},
{"0000000000000000000000000000000000000000000000000000000000000000", {10629,128514,111999,117819,40812,107931,96580,128180,17365,76172,69547,129877,24024,96792,47533,82521,12644,126899,26376,103645,31988,113146,86914,90839,27390,74308,27588,128971,50989,114146,82845,105257}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4142,61580,8178,71455,12263,110643,46700,125749,26738,66738,126752,128510,30073,49404,111549,115538,11385,18169,46223,110792,78589,83336,88168,89911,14686,110363,105453,113844,16773,81262,33683,57680}},
{"0000000000000000000000000000000000000000000000000000000000000001", {727,36296,18218,78864,10723,73302,28644,54933,4934,17520,26619,86996,63769,91819,69901,110329,6828,90963,44783,60735,63540,86252,86110,121268,9590,78347,62729,109254,32510,121838,78518,97406}},
{"0000000000000000000000000000000000000000000000000000000000000000", {922,118725,42819,117938,43755,122658,52985,110233,19976,102664,54499,77750,28832,69271,63487,93236,1327,112043,5303,120350,5749,22763,56666,96619,30317,53269,48473,122112,65762,81202,114104,119841}},
{"0000000000000000000000000000000000000000000000000000000000000000", {618,88921,70573,104716,21908,85519,84868,89712,9799,101037,40695,99429,23921,68811,25213,104252,10255,72803,27884,69046,63989,95930,65826,110899,23769,128172,64142,95472,38381,130283,49871,77599}},
{"0000000000000000000000000000000000000000000000000000000000000000", {963,4006,52667,83318,57485,64950,94139,100394,34615,103257,72976,125132,53810,56211,74866,98410,5723,107494,7813,127240,27432,126386,38724,41301,10783,112863,60668,100409,34076,94857,79857,80348}},
{"0000000000000000000000000000000000000000000000000000000000000000", {469,125221,29935,114750,21289,48447,95596,113194,2041,82707,12415,72546,28839,115830,51334,57963,1496,94387,60035,113626,23748,67457,57358,127558,20642,42097,78025,116342,68768,90731,107309,125367}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1482,100298,108160,124893,5675,77065,79270,127496,5474,77573,68966,104750,57922,65547,117695,118613,6278,112300,6804,13726,14846,117765,19893,100329,10248,71522,59300,69873,32120,124048,37106,84812}},
{"0000000000000000000000000000000000000000000000000000000000000001", {539,118426,34611,94255,22559,110757,49211,69204,3515,64395,9153,95646,21532,68441,36107,91490,4883,109053,41423,75638,49573,57423,69361,108529,23104,60176,27934,54837,33150,41299,36599,67534}},
{"0000000000000000000000000000000000000000000000000000000000000002", {4213,59905,63753,88543,31023,49832,38133,77733,11023,38868,71043,107593,51898,82716,59569,105760,7519,65823,102779,113894,8409,68364,63267,112183,14580,107096,41937,129207,16937,116251,37197,123841}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1047,4308,112063,119754,4747,36825,29758,115967,11051,103035,44484,95465,42044,47466,65386,122990,6129,26481,43998,126670,10990,111219,45643,105153,50901,97909,73727,130758,93429,115834,103540,105606}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2236,83627,4728,91517,26962,68757,53411,87339,29352,69254,82596,101795,59977,76044,64752,120323,9900,126678,88930,129395,13544,40392,22655,79664,11503,48033,47550,81468,16679,25316,46082,108887}},
{"0000000000000000000000000000000000000000000000000000000000000001", {4269,99605,19029,80277,47680,92178,52768,88274,26860,89779,57794,112987,52459,105702,92523,103112,10543,128113,33100,71059,62477,98648,69323,92462,16386,27072,38179,51259,17217,94540,58332,77411}},
{"0000000000000000000000000000000000000000000000000000000000000001", {322,18689,2296,60113,44430,90366,55973,74417,1159,128875,52325,73911,14559,87927,80925,111138,12110,81040,74522,108324,50190,127045,75624,93236,26519,76150,61887,117783,53684,84361,73598,124623}},
{"0000000000000000000000000000000000000000000000000000000000000001", {924,11762,11746,39628,17394,117062,34438,45467,31675,112615,95416,114622,51728,60820,68267,75658,15553,49215,49330,99886,38834,98922,54746,98485,22594,22623,69067,95058,35229,113174,48267,91585}},
{"0000000000000000000000000000000000000000000000000000000000000000", {8436,33074,53929,115803,13159,15284,21243,40358,9844,30176,16559,122962,54466,99751,65241,120043,8635,67023,8896,17511,8985,51040,14197,126725,13938,108094,92981,115055,34363,108312,41861,51048}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1266,25725,36361,79899,47778,58469,57227,92903,1333,44782,9181,26208,19751,24466,61905,92988,4866,55692,49176,123300,32487,106501,60985,75933,20430,22063,67825,94697,45894,102624,59118,101024}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1639,6028,85105,113363,10725,64535,120367,128191,23245,31334,86823,128026,34245,120798,47910,94651,17692,86293,46774,123907,61235,104492,86423,92533,28131,61720,61096,117585,60325,78007,105613,109896}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1046,49732,10297,19813,21586,101099,70206,80456,4469,10362,37312,40259,26764,28163,44026,55274,3745,69290,17523,107604,18536,60996,90790,103392,24734,41242,74440,100454,94353,111991,115303,116341}},
{"0000000000000000000000000000000000000000000000000000000000000000", {7880,12677,63923,103634,26895,101233,33305,43830,25596,51011,54243,108178,36627,53468,70945,99551,9194,61370,85046,103706,9432,76475,24895,77227,13546,26083,39981,59265,20336,62718,26154,64151}},
{"0000000000000000000000000000000000000000000000000000000000000001", {5728,7707,21985,120812,51249,96909,75566,99294,47014,93928,58150,122614,48080,90742,73151,120436,17103,113845,22495,28884,60879,94344,66822,121215,42577,62362,63741,108964,88576,90054,91429,92651}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2830,120472,6411,97892,48039,109813,64096,104086,14248,47506,58610,72625,30699,126789,117151,125831,10783,81130,88353,90808,31422,68798,52018,70733,23736,50951,35904,51100,69988,91783,74218,106927}},
{"0000000000000000000000000000000000000000000000000000000000000002", {772,4758,15216,61604,6446,23185,56297,124977,45067,113761,67547,83349,85019,115499,92138,121106,3282,109998,32435,61067,10900,81045,38098,92742,5579,15278,55790,116875,44532,103202,58066,104209}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3344,29651,5442,121360,17146,31308,97140,114652,9630,112262,46914,86172,24730,57098,38370,82670,16091,42879,63798,125038,54750,81951,71783,122421,28650,62940,44330,124470,31789,42550,32291,90087}},
{"0000000000000000000000000000000000000000000000000000000000000002", {4194,48011,12930,105744,47377,66084,105566,117350,27229,37923,65873,88630,71807,89476,117479,130162,8193,41448,18507,130011,15343,95520,76592,128208,18204,83814,34009,72946,35804,63028,96806,100953}},
{"0000000000000000000000000000000000000000000000000000000000000001", {96,65359,28711,56418,23247,38575,65035,128998,4938,77284,13511,56020,34366,66971,89813,128180,889,37109,25330,36508,2865,18598,103826,108961,10617,51458,79535,88625,38091,83173,40983,66824}},
{"0000000000000000000000000000000000000000000000000000000000000001", {3121,117596,62313,91542,62479,113269,87070,103984,4445,120333,45905,113747,31016,79625,56117,94192,22386,43248,95292,116049,64206,126106,83302,90233,36336,125556,46450,54431,63603,89220,66876,116958}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1512,41624,7215,76131,36588,96199,47532,81741,12311,29235,71756,118012,76555,108758,109596,113964,5902,114097,25790,69270,10331,89503,27570,60183,10451,67442,45994,86255,18384,63764,65692,103348}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1315,98752,8368,123430,2363,63618,111470,115574,21151,84772,89714,96603,28644,83826,42134,63237,8339,81434,93913,116936,40342,89470,80176,91424,25025,27200,45064,90347,82806,125259,93719,125158}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1554,106936,13401,16947,13041,27638,69800,129628,10441,21712,24558,117102,10991,38998,47515,122868,18516,116811,102733,114300,64243,127423,75446,101533,19806,31566,83687,107745,25013,61911,65479,106493}},
{"0000000000000000000000000000000000000000000000000000000000000000", {938,70460,47319,51372,51904,67987,80916,125885,18984,126410,26739,35038,33086,55544,53210,55171,1612,53427,28196,35308,30024,42708,65471,127518,53957,110616,60695,127478,67203,105022,83293,125976}},
{"0000000000000000000000000000000000000000000000000000000000000001", {6,22935,20227,126244,20080,54580,65195,101500,11977,81378,41315,89197,12233,75739,21495,35475,13774,73077,15870,120222,34879,35961,39988,90387,34696,116271,63510,107268,41169,92611,78796,111897}},
{"0000000000000000000000000000000000000000000000000000000000000000", {530,22725,46181,110183,5803,20758,63010,106472,2136,104581,95234,130792,38383,49068,45303,80882,20462,34088,47569,60234,35083,81104,42593,114466,28830,95105,99496,111040,30507,107076,88694,116395}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2829,90206,17314,126311,33789,110535,54516,83485,10627,12632,77433,94917,41390,89468,51269,130409,17155,61723,70010,79415,37407,41360,53555,107082,17720,78064,25472,130087,48651,119142,117035,122726}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2314,46604,54197,105620,6842,15980,80474,108177,9894,80104,51403,85045,19414,125571,22747,113233,39032,116848,60700,69642,69619,119169,83732,115257,48835,119020,66534,74811,49231,61692,53653,124453}},
{"0000000000000000000000000000000000000000000000000000000000000000", {770,50713,21492,25585,5221,76497,54249,55192,4460,130825,44118,89690,20506,106694,93824,106609,1309,80221,8200,75453,81526,125274,88739,97902,11461,56795,55677,110813,27317,72368,60312,102832}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3270,6720,59704,92412,21737,100860,106145,130122,9202,124936,74976,90044,79707,110817,102395,124907,30374,79605,99370,100749,39984,70645,50999,75605,32945,57730,40749,94573,37098,57492,59737,68475}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2973,44010,12606,126529,23445,115277,96429,111545,16386,72503,26946,114426,23436,105566,98452,106535,18135,93592,75881,95443,55923,114602,56112,96562,52600,114154,72556,87170,75286,89823,105401,122430}},
{"0000000000000000000000000000000000000000000000000000000000000000", {138,9238,9253,74630,19650,66922,90319,92875,13457,21980,65747,89362,24612,113887,89281,113582,19184,100727,46600,124429,28593,89865,50539,111231,31817,39613,44092,84273,37263,65890,39555,119591}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3819,100293,57106,63633,27584,39171,93785,127362,9354,39151,110541,117884,39681,130469,47240,119149,10994,104394,117965,126865,24904,40527,57122,95002,13687,48162,65146,128056,30525,87220,62310,127525}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1800,82062,30722,108546,19718,85497,50118,50249,54183,72357,82082,88903,54377,125908,94744,130396,19688,64178,69195,72068,65822,88725,94118,94763,40888,58091,113654,122113,55535,75268,69100,97488}},
{"0000000000000000000000000000000000000000000000000000000000000002", {8523,128516,43668,77964,62715,85212,88226,130462,34743,108788,49138,59176,57437,88675,80315,123790,12113,44690,30925,123031,44360,79210,76403,85526,17753,97586,51866,64871,27667,104380,44054,63082}},
{"0000000000000000000000000000000000000000000000000000000000000001", {852,77169,44928,60907,78660,120059,106896,128375,6389,122341,24273,75578,12273,122030,41575,119728,11353,109222,61187,102370,12506,104876,82123,130152,38468,47254,42182,82660,57421,127973,92898,119174}},
{"0000000000000000000000000000000000000000000000000000000000000002", {10914,101333,35793,58327,84318,103093,91996,113221,11411,48590,16593,105836,47843,106640,100448,120026,11914,24116,57630,80225,69588,82453,97456,113880,12283,41073,50333,62097,13626,56933,62670,81997}},
{"0000000000000000000000000000000000000000000000000000000000000002", {297,77875,108139,124745,8120,78625,17123,112099,20366,91179,60549,79751,49182,65724,105118,128038,1855,80228,3943,15045,5324,68384,33976,129465,5633,41022,45854,75767,13423,122294,76125,104961}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1810,33477,8149,27588,41386,111188,66015,94116,4836,72868,25999,52967,54430,81833,73147,114411,21164,113423,75049,101320,30540,46724,113294,119772,29166,127857,58785,124453,91891,94016,103126,130565}},
{"0000000000000000000000000000000000000000000000000000000000000001", {17947,88182,37645,95684,21017,47568,26558,64136,43725,115505,82195,122033,48151,98661,115974,122373,30570,115322,68478,114416,61833,86956,92486,93082,34309,46995,48331,54787,56691,62349,61874,72168}},
{"0000000000000000000000000000000000000000000000000000000000000003", {3016,23813,27139,122431,41261,88373,45901,79804,9019,99386,22306,120037,18428,69388,30215,48140,27150,113280,77615,90169,43670,125905,102728,125783,37071,113518,60902,68527,50817,77416,51201,115284}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2132,52560,24972,90735,13918,128309,49142,77905,3039,81345,20841,128869,18905,57333,56439,127829,5423,14282,120358,128788,25126,113677,29220,46667,10360,13816,84234,126984,48359,103655,65613,101924}},
{"0000000000000000000000000000000000000000000000000000000000000000", {150,114949,38423,76376,67209,125659,84149,87996,21005,41415,52189,79387,57410,97200,109254,109736,17974,65369,66507,117277,25314,125368,40769,112883,20968,106026,63478,81142,45758,121247,127470,129191}},
{"0000000000000000000000000000000000000000000000000000000000000000", {301,41932,56365,112719,44754,103053,48018,81854,583,41662,102324,128115,50032,127207,106214,118068,794,129205,20075,21553,35307,68307,47980,62377,30931,113184,35293,93806,42739,128823,85042,85794}},
{"0000000000000000000000000000000000000000000000000000000000000004", {3869,115391,11548,38729,28960,88888,69831,85332,29843,127168,59151,118145,70507,106865,80998,127304,14169,58297,45944,76819,66857,80779,77831,129166,24908,41196,26324,122605,46046,61363,68161,79543}},
{"0000000000000000000000000000000000000000000000000000000000000001", {718,86477,58221,85888,10349,100931,116890,127383,10823,24921,30142,50795,19222,103112,90791,120701,23559,67737,96692,118079,32662,42021,71444,122709,24300,43612,119560,124049,41132,106941,55330,93869}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1358,52492,2862,39550,35501,96337,43056,79383,57687,60471,77475,119487,75794,111886,76270,109707,8678,26872,30012,121195,9358,91985,10018,97965,20282,39082,48963,94740,24810,42877,38984,105313}},
{"0000000000000000000000000000000000000000000000000000000000000000", {72,49502,38316,100164,13843,59501,15231,37084,28645,105214,47445,57878,31002,108179,52981,128023,12419,104529,58576,73689,37681,45819,58505,92284,13711,115540,20123,67989,69353,102261,113176,124404}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2089,34462,109901,124607,2877,119478,72134,80563,6880,37939,28499,31226,20612,53033,32786,47620,13466,72462,37797,98060,16631,89403,80383,89068,17399,36042,24371,122623,29578,53876,52287,107700}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1584,122460,9658,45743,42507,60755,109065,109286,13925,76004,79957,124948,37599,102986,92572,130284,19465,36215,84675,128630,27805,29228,74919,95120,31832,84453,93494,107094,33120,42330,77880,123038}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1484,101529,9606,40140,14472,73797,33694,113628,2869,91693,34129,112923,51227,89490,88462,128709,11260,104942,58149,120303,84214,114720,86491,128296,30021,72120,34025,43123,65435,89039,109558,117961}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3281,101730,62291,123844,9101,15670,54038,123017,23598,68925,64733,111652,23967,45673,26565,110901,6107,12216,18059,58305,44251,68041,88452,119600,8356,28625,42446,123312,30577,47559,50420,88894}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6086,129627,111307,114668,16040,83737,49248,104284,23653,84849,92063,103834,53412,75152,76915,112808,7452,72871,71043,117819,46897,86622,88375,99042,9117,21777,68161,76342,13774,27465,28787,36675}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1904,105640,62928,105436,15813,58397,44169,102435,4466,56847,11795,42494,28571,47266,62100,75573,9432,15211,52996,106380,27640,118491,85540,123671,12582,61908,53186,109858,38134,116236,44982,72749}},
{"0000000000000000000000000000000000000000000000000000000000000001", {475,129568,20582,25646,41301,74098,53464,110053,4056,5690,95335,103368,9823,13298,93454,115686,9010,54155,47514,69671,25977,53559,73996,104589,23215,102833,63984,74494,23914,121817,75519,97382}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5582,130435,70381,101088,12803,57220,24969,127104,27195,56072,38198,118696,59330,123307,68264,68457,15666,106661,23879,129010,32626,118788,95362,116614,38289,121089,39180,75306,43317,120222,46122,101202}},
{"0000000000000000000000000000000000000000000000000000000000000002", {2077,24500,52101,129234,32442,110573,65608,90782,5163,125621,68363,113175,32990,82574,114257,128043,22965,104870,25705,74583,58178,112762,68818,72152,24870,37944,91639,103909,53552,80421,99011,114520}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3874,47617,38599,59875,7590,94227,95005,130756,10685,44619,58437,86983,17927,58173,34146,87332,17179,26475,73535,78770,73820,82397,112735,121703,31866,98708,69589,102454,46596,80890,105990,114118}},
{"0000000000000000000000000000000000000000000000000000000000000004", {309,58828,71209,113710,76621,84939,85702,117613,15623,40442,20133,75964,48017,102517,79243,118886,24611,56001,49763,104651,44050,57855,50615,80203,26158,42586,106524,123456,56850,72341,72172,92819}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4398,33146,22020,35989,6755,113183,80325,125518,12477,93302,61225,114168,59371,122728,90864,105013,18431,67029,57797,92272,18803,32813,45552,47857,39598,71394,71513,97281,79636,105057,82946,97551}},
{"0000000000000000000000000000000000000000000000000000000000000000", {784,91101,94055,116523,30543,51378,78455,117183,13214,115448,82600,109861,55424,74739,70176,113504,14553,18512,31061,40439,28013,91472,88848,89479,39576,76555,68856,98662,79036,99729,97458,107304}},
{"0000000000000000000000000000000000000000000000000000000000000000", {8208,111682,112780,123042,70333,81471,110486,120714,10160,14305,37676,111797,20759,115432,57388,77154,8917,89376,8923,91168,21660,57598,104133,125360,9274,29068,39324,114459,11712,96945,15601,21048}},
{"0000000000000000000000000000000000000000000000000000000000000001", {489,98999,68420,85729,17920,71273,88272,120263,34447,115295,83761,91669,75425,78212,86146,90593,4790,21206,5787,130021,9425,92461,43352,89158,8812,66687,19943,55619,9530,26944,61429,77737}},
{"0000000000000000000000000000000000000000000000000000000000000000", {243,85585,43211,71127,37090,92605,78277,101994,29885,113733,67767,93736,45400,76361,54871,74363,6328,78470,75445,119081,67361,67872,109357,126050,32116,95295,64757,81311,32385,129194,44441,124867}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5944,127067,64086,90739,50783,59907,117329,124737,11441,38017,100013,122393,35278,56199,55872,88447,7254,53175,23685,25774,32286,113584,38046,43818,12033,30851,42075,72208,20704,101753,74304,107017}},
{"0000000000000000000000000000000000000000000000000000000000000002", {770,50145,11977,120853,14261,78948,100569,120108,21875,28285,108522,126037,58358,118294,76761,123973,18743,77066,96472,106472,32119,115692,58201,63790,28511,111477,31952,107016,43607,43849,97055,108046}},
{"0000000000000000000000000000000000000000000000000000000000000000", {10738,93487,40999,75106,26257,121936,28029,111129,47712,76209,85029,104114,61485,107246,61845,102341,21225,65626,67350,89851,57134,67077,78164,100867,40331,83487,69759,86634,73069,98298,79533,122310}},
{"0000000000000000000000000000000000000000000000000000000000000000", {12329,75236,100083,125936,29686,51420,41657,119484,26079,58372,48530,124179,41377,51220,66111,113187,28040,129333,45672,46386,35493,119370,76430,83833,50493,130481,57526,110732,70713,73329,106683,118573}},
{"0000000000000000000000000000000000000000000000000000000000000006", {863,48347,47811,111777,30547,41135,49484,111073,8233,92891,44990,100864,37068,52882,79563,116816,21053,108493,56234,129704,32817,123373,88448,111977,31663,107835,55000,85215,39463,125097,75478,129682}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2624,124467,26684,50669,11204,108080,15233,106999,62334,90370,73820,106402,80610,107881,92645,127933,15543,52309,27888,113612,73224,89800,75117,86646,52837,76037,63749,112948,101360,120517,127856,131058}},
{"0000000000000000000000000000000000000000000000000000000000000000", {451,107672,8949,18718,17147,91499,58167,61712,8640,51777,79750,100067,10005,36798,19233,92115,6262,114210,20361,92289,72769,80272,72796,123703,7453,49312,45449,66124,100915,113758,112504,124461}},
{"0000000000000000000000000000000000000000000000000000000000000000", {738,81797,33556,68757,54672,109503,56098,127746,50307,81542,63050,90820,56901,69975,70933,104979,1047,123453,44566,117185,13326,23334,20908,102884,53092,107891,61835,76387,58614,116174,88458,110855}},
{"0000000000000000000000000000000000000000000000000000000000000001", {745,75851,6276,73320,11990,64748,43200,67392,39196,124739,91058,100521,43527,113883,44976,130668,7218,35894,97240,118184,46795,94357,73784,75266,11268,54659,69032,100328,35669,124419,36821,69718}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3250,10278,32835,108120,18838,46360,40923,123105,9068,119788,50046,124496,16604,57571,20148,43116,9818,41224,49312,127849,15123,25007,29744,55175,19260,109616,70021,118715,52098,110926,102594,104659}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2683,67576,27205,109409,22061,76378,42803,128212,63367,73487,92625,94542,75422,131028,86344,89879,5438,127819,37692,76107,17438,73745,54403,120333,32195,115178,46265,89445,38475,62614,71378,99705}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6136,125615,16909,39395,34957,35105,82870,89612,23318,71315,33953,70042,96197,110193,110133,114861,14988,75439,26628,110648,26911,129891,104579,124370,26420,35587,33453,95840,31762,94820,32620,83410}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2440,53218,39799,109449,12614,110580,15053,122194,41991,105117,47545,60425,61134,74190,88136,95703,21728,59782,64251,101513,40894,74585,96934,99800,34334,93877,83812,129678,48551,122116,65187,72270}},
{"0000000000000000000000000000000000000000000000000000000000000001", {6629,29736,21934,63635,34924,49651,91790,115354,18785,130575,68939,85953,67413,69414,84932,85017,7081,20767,68635,119498,26639,48763,37717,120533,7943,126680,67724,116053,41230,128406,74666,106567}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2532,65374,36024,121823,52340,122507,64653,71985,3069,15192,53922,117201,4494,116477,94071,122008,11254,26280,18067,93813,28039,129867,42433,71981,23774,58761,33678,129561,41602,129611,59361,109021}},
{"0000000000000000000000000000000000000000000000000000000000000000", {14014,35796,87590,125531,30955,108163,46082,51210,27235,38604,75693,101362,56997,100929,84140,130559,17828,44849,25098,81329,29802,77164,82629,99243,18768,58134,124810,128627,25280,89934,42563,60581}},
{"0000000000000000000000000000000000000000000000000000000000000000", {7754,89566,56359,110788,9780,102277,12466,85630,9391,39419,91792,102547,73018,88176,84647,105449,13683,87897,26514,58130,38395,117181,45412,116178,29693,91069,97997,127886,50000,50371,53115,95065}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1811,33544,7412,128225,47835,82152,67676,75251,4409,65926,10912,81567,16386,99367,55681,72453,27310,86743,27449,96830,54361,62357,84781,124068,30485,85623,61336,76293,68910,112850,80485,84969}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4658,62687,65104,105065,77301,116748,80658,110543,8362,8954,64297,105438,27373,58280,44448,70014,8836,105182,45505,72944,10648,39117,98149,100026,32968,93103,45006,68736,50894,85261,54457,71848}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3625,24741,31301,121516,16496,89982,39250,46152,11548,94322,47502,68676,14249,26945,57286,77302,10180,18395,98368,109006,38855,50960,66754,120896,13245,32177,20369,40635,31333,106939,69283,124322}},
{"0000000000000000000000000000000000000000000000000000000000000001", {12586,120205,60253,109639,76111,123199,88870,113612,35010,42912,39377,53207,77623,99534,93085,114331,32016,74771,33991,91026,32088,71389,42626,58085,41794,101895,56894,93874,75126,101628,108599,110522}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2119,60522,98750,118388,4961,35358,35484,56011,15178,123261,20051,103277,42486,47336,43875,44086,8140,116571,31742,79479,9642,107161,18173,82251,21412,115502,67191,109434,34601,43070,53913,88507}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5637,69158,76153,102706,31824,38642,32826,91449,9684,66977,36269,104105,22044,39029,59211,62844,6376,67740,26190,75028,37767,98166,55541,81351,36411,44446,80909,82693,49062,67652,76184,96737}},
{"0000000000000000000000000000000000000000000000000000000000000001", {322,39370,6729,21335,8469,50827,77985,123149,28332,109996,53560,124098,40546,130225,42489,93599,411,4824,30157,38561,46245,112537,49381,84448,12125,49559,15251,31561,44028,127754,79407,98721}},
{"0000000000000000000000000000000000000000000000000000000000000002", {5865,90924,24359,60039,66294,103210,70888,72533,71111,114155,109414,116279,72228,106752,127967,130298,6279,46969,60616,120318,107674,115613,116427,127133,22652,47624,56727,65735,31017,45711,42459,82123}}
{"0000000000000000000000000000000000000000000000000000000000000000", {1193,68340,5805,59781,21573,101819,84494,100389,26152,101895,56614,69824,68505,127156,108332,117134,6101,86601,32223,55671,34644,46254,59054,118572,18968,124250,121832,125993,41000,49585,59793,105979,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {951,84997,49786,60053,12094,43048,83063,124928,1452,7997,58278,73769,4983,53167,39342,82656,13109,33678,60093,111937,60525,89308,90766,108757,22437,121760,40980,110590,22757,49523,31625,82733,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {4399,104285,25912,119683,63611,115195,101142,114723,6370,62432,75125,125462,17176,130435,37321,96253,16328,29754,52212,120333,54044,82860,63348,94180,21925,41672,68743,76362,47862,54804,92142,98555,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2285,54465,48817,105281,10335,36137,87114,127022,18043,77407,70323,82185,38482,81833,41146,93481,11592,123985,25540,128286,49378,67003,83596,94091,18585,106443,42849,56172,43791,82755,96732,101870,}},
{"0000000000000000000000000000000000000000000000000000000000000003", {453,123519,14319,97557,61520,127956,111967,129428,6575,125590,42158,85101,26717,73037,85271,127993,614,11229,30718,101043,21205,91206,99137,103900,4030,49049,59374,104461,21656,127124,61917,124006,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {909,104608,10097,80586,18684,116050,45970,119876,2753,45785,61441,93588,29303,129805,99212,110899,4058,59055,108690,118771,17246,32029,27885,93922,4115,74287,37651,98917,11080,94042,46560,57246,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {368,61762,81613,109844,5707,28474,15122,60311,17354,73143,73199,114365,23686,65484,95250,106417,3140,97029,6646,34497,20874,68384,56714,97310,24743,72241,36759,115726,82975,112556,117857,129546,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1307,19213,9523,71852,40333,126825,55675,85763,1458,115924,42237,81430,28236,99717,46576,67646,2558,74406,87445,112220,21505,49598,32033,76698,4727,58935,14982,93480,9706,107784,98800,106751,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2490,14987,9626,107816,39094,130902,43150,101385,18675,115829,63930,72519,30526,103628,30552,121031,9862,63792,80351,106779,14441,101996,76265,126531,27596,121410,42804,58889,75300,81494,86861,130418,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {4762,95176,75796,89310,6298,26026,34272,98650,17989,102253,35669,75103,36554,101621,63552,125033,5177,89457,13653,112349,12060,36913,59005,62573,44422,75768,93271,125000,64067,111402,98669,119761,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {10454,67451,71879,124545,16164,40504,59213,78098,10908,26685,53096,104644,13153,23363,93470,121463,10658,110039,28174,89262,12095,59514,86455,105763,14247,43788,44598,106932,34509,126066,122507,129750,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {929,104227,46239,52576,13125,104888,26633,89995,6750,80059,99983,107079,18924,23839,51888,112098,2213,9821,25943,100564,28490,84656,28636,62192,9983,36079,19152,43210,29465,86194,59703,64407,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1540,56929,73299,98953,28081,56404,55913,63444,18350,37331,34504,54542,70055,75356,104057,108720,1546,130800,11191,97633,53334,96695,81719,86171,4160,5519,42514,98145,64533,83081,92846,111576,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {370,113631,27773,29208,23447,100376,32506,56907,42243,98148,104641,107192,44795,102891,61589,94336,2074,94475,62539,118392,3057,53957,51614,89600,45863,56862,50789,102134,82590,96334,99294,120664,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {5277,59674,45884,59015,16320,113745,62532,78882,7878,100230,67824,81267,17542,81571,60141,64007,6865,29061,8011,26826,30731,112604,41377,45762,18799,120782,22676,90558,19095,34165,76085,77629,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2436,122524,63941,88723,21821,64616,38193,61605,19805,68099,103904,114426,47943,86478,73873,76862,5221,14764,58144,61176,7804,32413,73132,75633,18297,46435,72385,114028,59980,81248,97423,102567,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {71,85986,24576,71554,51438,124293,53232,58938,22307,36972,82081,104384,45107,61995,49375,95152,5618,79329,66319,113612,29548,102819,81240,119828,6360,95708,34066,108557,7279,125331,66337,121654,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {181,125604,19288,70901,11930,69219,83800,120369,54181,117409,119020,123867,92877,126214,116763,121982,4743,87719,56289,130021,33098,116166,61076,117462,19714,41842,54924,104530,55397,74391,59800,69432,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {4647,121230,30281,105784,55229,68678,103620,106229,9146,39618,15127,19834,30280,79424,76857,82367,11573,78718,86589,106508,30760,104974,77685,86374,26925,122911,64725,69172,49263,91846,83116,83913,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {934,84484,98804,107779,27791,80836,46181,127141,1102,41711,18826,31852,9530,25783,57463,80857,13565,35466,24086,35314,18193,92000,114981,116723,18392,68407,25534,117318,55536,83249,56474,81854,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {111,123193,37110,92665,34618,69223,92080,119639,1838,68869,8447,59269,59959,115453,71172,73025,6646,97463,83791,120408,71692,121700,73995,84631,14725,48249,103443,129331,58778,106135,68669,95587,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {459,49263,63938,101531,32220,70305,61414,85864,15475,78448,34238,80264,52891,124874,55594,67696,6582,22449,96357,116855,33464,75216,58802,70872,21995,57094,27259,119176,23382,90436,71459,77197,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {257,65325,75263,80551,30423,83310,49665,122857,4491,97576,12794,16963,6833,56486,31891,127807,8582,72557,33236,116531,14523,82763,72622,103589,10765,51051,51199,63619,56930,112694,90543,130732,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2140,21241,57248,76335,16999,59349,61166,75625,6711,120824,23620,78002,21813,84836,45828,110088,6370,32220,7538,125138,37435,70626,74503,129591,36436,91147,39301,94207,58379,81724,66312,82725,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5542,48855,9261,94491,29165,29544,69914,122786,8965,29241,54006,61177,28121,73961,58668,62402,7053,127467,8973,98466,69682,112212,98826,120578,52727,68259,78563,85974,61184,86264,69918,108992,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {281,47133,56199,72919,3792,108888,3855,116539,6654,59097,81394,128457,85589,119701,90846,115354,3092,23469,56324,103713,10663,10941,16329,75438,21320,80348,77277,97679,24071,128513,30931,80144,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1373,11576,46207,115407,33499,61261,111748,114143,6142,93867,39039,115842,25806,102439,115783,130495,10049,97043,44465,45930,60871,100519,63479,94417,15919,32958,48491,78779,73179,81624,73723,108100,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5787,85082,8256,117350,21600,86285,86911,95542,24742,96440,24976,97559,66779,98914,101048,110636,11368,62265,23907,26284,13643,65347,40785,70020,13716,47854,21461,39753,50923,112568,73066,123144,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {865,41077,21910,107517,20834,83091,75686,114775,31065,79450,54773,112235,62914,91958,93886,129768,1267,68064,16887,34329,34577,126107,88911,89275,11431,76576,36812,43199,54105,103104,98328,126498,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {8313,60066,25159,41521,9901,75053,67181,102691,54231,62134,92172,97888,64286,101376,84455,109590,14214,130607,20297,113832,29536,89036,52158,120368,16147,41359,37959,122756,20537,28408,84175,89314,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2352,75046,78686,113598,21081,121310,70500,101035,3634,21217,23481,112156,30716,116824,41569,82082,4018,99471,100962,126925,41357,104218,57209,121888,22399,123652,102752,115306,26608,30634,28884,71504,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {547,93847,10235,18611,16965,129793,27702,121739,1536,117104,6808,48414,22335,66846,98837,120403,3320,39059,34301,124875,31478,45466,63922,77846,4174,17468,55452,111916,84512,124580,85565,114278,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {604,56022,50945,87744,1992,24846,33241,97259,9874,115968,75513,128324,21011,77110,66071,130969,14960,94394,108913,128375,67794,78639,106843,115238,19439,84994,81268,98401,39596,84893,53536,71487,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {196,39402,63753,128618,51850,53454,69336,87785,8130,42277,81496,93522,9767,45508,52689,83614,9117,93050,35209,97904,19436,125069,49697,119063,19469,53780,31384,89045,52265,63899,75086,93685,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {902,83015,11750,59813,7705,105354,118121,129040,26350,69302,65467,82730,58735,73945,70191,98020,10111,10308,83145,93411,24795,69433,60088,91028,13694,81094,17495,104746,19490,36252,53232,63330,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {7099,124648,38017,79590,86757,112693,103964,107096,27846,59965,31511,88472,28222,54332,90975,122600,19672,64817,64785,122447,51119,96682,53338,120408,80990,106784,96655,123332,100224,102631,101996,116355,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {138,91040,31718,83313,96656,99254,110266,111882,5870,37712,83597,108360,25785,43972,48815,54136,8926,45554,59700,124308,38326,110195,49884,121320,14187,14421,86532,98376,23481,115445,32081,74429,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {14533,31259,58833,61876,34430,105194,55673,87494,22919,122529,116980,122215,43089,59445,53672,86910,31746,76693,122017,127893,33924,74010,82520,113809,45928,123413,100249,127812,80026,112579,83063,118036,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1544,102416,43972,71060,71009,106841,113931,116112,18830,50191,19652,46599,19119,127280,51162,69343,11909,128558,21386,84969,35430,60920,42869,57204,25471,125680,88934,117970,53417,72331,67387,116689,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {61,3977,14422,71864,996,89538,77970,127651,14623,43194,15549,76562,87817,110102,91804,94587,3839,70920,54294,91571,22759,90594,43746,106410,27301,100997,35286,73667,57071,97127,92363,112883,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2744,130958,55396,67778,10885,118201,82654,108250,26337,126390,102127,124282,27342,35838,61179,68124,9868,81588,11943,66839,29348,69429,88791,99905,15642,87096,87766,108006,24724,85708,38255,106526,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1013,73539,36787,73848,79726,93679,88249,109242,1220,62904,15836,92116,5040,87817,90615,130616,10840,97327,88340,106692,21726,74146,122741,128260,33009,122210,52341,107158,49626,114129,54936,90559,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {440,67396,55796,95799,9578,12834,67078,101648,17400,44183,40380,63258,45044,70029,126212,129790,4111,30443,70024,102113,42217,121003,96138,106210,10646,122268,54626,99108,35704,60725,57042,118298,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2399,40685,35965,83804,74321,90146,104545,127673,21991,45203,51290,54151,85827,100054,104217,127309,5332,106668,20494,46163,60050,122241,82496,124703,33153,101490,54400,62430,38352,107735,61228,90783,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1021,100450,23983,43527,68941,77689,98219,121779,23943,83288,88465,117820,24121,99319,68631,90949,11306,109137,19046,107658,20132,101472,71275,119322,21598,98605,100937,119686,21846,50625,24441,88331,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {11440,91086,41703,87180,67304,93765,83230,91711,29357,103341,81497,82502,35114,86199,39627,86952,14364,66577,17395,85099,52318,71078,52560,98257,36330,104789,71964,126384,48757,127904,94562,107468,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {263,43501,76355,98032,27889,69668,76457,110720,2355,120643,80902,95201,52467,56552,56839,107108,2450,52711,28070,60041,4208,30139,31284,87042,5026,16435,97541,122928,38929,72086,42196,65664,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2316,99234,2865,37076,13650,59469,106849,126247,16150,19007,68119,130381,31704,96950,114374,117937,2550,120429,17651,102750,29735,112112,44659,73769,20322,29864,60446,99827,68738,111872,89024,123484,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3576,127039,108628,109015,31157,51611,51835,73259,30832,40717,104961,121853,56418,126731,85758,125524,14735,80319,25604,108581,15670,17561,94427,116381,32238,103156,54510,73962,48475,102457,121081,126288,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {34,87987,31884,105448,3367,101861,18590,30038,3440,13789,61834,83763,11919,42666,75085,95775,23268,101836,91808,124159,24931,119251,48632,81530,33220,117930,81635,90523,34609,128415,39425,107758,}},
{"0000000000000000000000000000000000000000000000000000000000000004", {3273,116844,30434,92835,24926,113425,65003,116706,13082,82968,28813,101363,28955,69140,41390,101052,16398,102691,55670,122973,85345,119985,98633,109689,21778,101385,85435,129617,24604,78485,27225,28027,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {717,61080,65485,99260,18701,23817,85897,89044,6991,85877,18174,81095,100206,117594,112308,129181,7494,38093,9772,77812,25344,73934,70265,117560,24426,86377,49486,116374,48893,82594,66679,123784,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {4022,130309,41286,74567,57527,115799,60056,88210,9422,122377,55620,103792,11882,13603,70834,90296,11618,89797,37097,83872,25087,105155,44272,47716,21943,126662,82175,93238,44675,56766,62241,76396,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {13872,63903,82061,93988,89015,97375,101032,113858,14921,39129,98531,111543,65980,67917,79663,96943,17924,60128,72417,99911,50358,100096,108135,123879,26917,109495,51185,71878,59397,68930,79476,128986,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5715,26578,56164,130251,57371,94984,96180,129635,24607,67916,25181,78434,36874,50922,72708,114145,9641,28028,10771,51248,30580,84904,66901,67156,13477,128537,58366,93689,18481,44867,24110,93403,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2541,21976,48318,76834,14478,27970,78324,128382,9590,124681,23543,73719,36658,43828,36860,79199,13555,60394,82766,115201,61475,128898,87349,105854,18579,60627,21892,90057,25332,28761,58772,88258,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {782,81967,8526,25773,20953,129325,99097,105355,9139,23555,55949,65112,62888,110370,110014,130831,3344,19552,62047,122108,3707,104045,84138,102627,28572,43894,80000,93676,102578,124526,107952,115953,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2359,41007,55814,114268,32598,116829,69111,124364,9945,43024,87941,105502,32463,63348,33761,114769,4816,6069,52609,103983,17624,127164,28966,33711,28496,49070,66201,76762,45614,99044,61692,89956,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1203,101437,8387,74329,14437,74978,35514,55736,5615,99162,25087,104181,26671,90234,54624,79270,22110,123225,59615,87993,50069,102619,76148,84664,26293,30053,31407,59604,46042,81432,48405,100058,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1129,57663,59259,96374,28144,36004,34204,94357,4308,75312,10227,13188,11674,91061,23368,59255,1381,88891,44688,86725,100644,128815,107240,130421,18759,105314,46988,107384,27453,50209,68930,101787,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {7105,69154,33332,129127,78031,110920,123978,125583,18201,89164,41391,112185,35404,69313,35521,126412,8168,90196,18814,80599,60119,115779,103078,125284,35077,121290,83811,99887,54682,104596,82852,99285,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {41,28061,28965,93000,26244,96514,105623,113429,2634,4758,29328,85626,15840,79568,41930,46351,3571,68583,54669,113000,63447,67647,75081,85238,53804,117430,63232,68954,59634,66249,74069,123236,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {1344,19400,100145,118849,12589,61549,103310,106063,23392,83587,96273,99533,84754,93725,121971,123043,10803,91672,88143,107104,12972,46555,54239,64966,23922,115073,47709,77816,40573,47900,48009,64405,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5282,113087,72202,120184,20184,106092,24622,54503,8862,42057,83935,125850,42920,60574,99630,110200,7463,13348,78903,100587,19105,115233,42871,129770,20962,100841,29037,89351,50070,66276,62918,79845,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {499,75985,60387,62039,43214,82140,74181,120663,8299,25989,54452,126283,19290,109445,111713,117209,14810,99452,38575,96977,53663,93239,101958,124106,15845,117124,94815,102073,21706,36388,26582,88207,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1443,93745,7482,47739,3573,55386,6749,51996,4879,44878,73802,81899,14496,23474,94768,113757,5534,129018,32415,109388,42182,49912,63287,68793,7424,47140,87543,116701,30729,114179,78564,94728,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {194,15809,61466,99771,32694,76836,83203,102941,33814,92580,69369,80295,51421,105130,84011,109236,1809,121971,59322,86124,45997,85843,108977,120144,6634,82278,95182,105859,42178,90546,42914,56190,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1251,92021,33281,36571,21587,30616,103318,111790,12073,105155,69933,77627,16370,42502,48738,57216,39247,109486,111791,117623,69958,83447,105736,130233,46478,56288,52796,111501,49975,69361,85427,117236,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {843,53170,20107,130731,40520,96036,77178,112668,11251,28456,20936,113950,51659,75564,94151,104765,25047,72769,85063,112979,55411,103059,68371,108180,25065,127578,87920,89744,34836,36593,42305,92500,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1845,34643,3948,93826,28523,120671,41618,120999,9480,60665,54071,88914,20580,91611,112266,122844,7953,104430,39588,54595,61291,81002,93758,112155,28190,46961,108804,116586,84688,128846,121200,128220,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {6242,71039,28151,47983,43972,130920,56962,126772,15388,34148,58779,86937,27991,121953,57820,112141,26828,88218,70483,125501,53284,105388,113285,127308,29186,75792,90685,113328,32933,99794,72346,126835,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4822,101714,16410,127321,61931,120664,110875,128529,20666,54196,59617,97829,27532,100502,74606,87480,11274,126317,29278,40702,81675,126033,122714,126653,14113,83227,77587,115581,20281,86463,33440,35290,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {16,8660,34899,82137,11354,16014,66935,88029,37743,98170,57384,109756,44298,81513,48636,68803,1525,78164,19368,36460,8413,31518,53579,61218,4535,64280,45215,47574,52218,85387,95171,103019,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4101,12834,4102,9899,34067,71284,124013,126656,29782,84823,34638,50546,49664,55944,62318,126090,13905,120453,50197,65315,68497,104605,68700,111045,37370,94440,68362,91616,80813,117652,113262,129739,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {32,120024,11457,92715,11858,106946,17270,104955,5264,31058,81467,101013,8924,71440,33379,111974,5779,110405,61954,116804,48660,128676,66170,79077,7264,122291,14362,114542,44437,44668,64110,111599,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {858,66569,45648,118415,30501,95195,50579,70984,10936,24342,14211,34428,15996,46637,110961,117260,10400,84314,30171,110793,12565,113927,56412,95766,12168,107464,55738,86492,32032,59200,67481,71702,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {211,122676,37239,121428,68934,71902,92247,107006,42741,83959,51761,71591,88350,110426,106489,116512,17783,116679,54270,107390,68402,101734,82149,82940,33405,83110,69477,100459,46521,124110,73341,106586,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4769,124576,64629,80479,22120,62549,68944,94232,17403,91008,71316,123163,21890,111270,76490,90344,10471,47044,53264,116314,41313,63898,66275,107879,10476,12025,18105,110512,34069,76699,79292,95359,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {5138,31848,62585,102200,19505,110512,75055,95788,20163,110402,42213,77722,30814,79068,53788,106590,8002,101942,100043,120601,34982,45681,85033,104927,35344,57114,53813,62787,35440,46967,91399,100975,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2894,5115,5196,8572,36336,95960,37564,129161,18901,91310,50466,104935,29687,87018,102644,130428,8549,26719,23950,121565,13020,109171,38526,82920,29026,87689,59500,91102,43523,99017,45614,66608,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1367,104522,14112,50350,12231,54289,69397,103123,1667,71581,94377,129905,5701,30789,25558,55713,14377,17373,74024,87484,14933,130381,21638,86808,14973,90798,53173,85556,62005,82706,75190,104125,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {6878,128142,27323,102269,57458,96272,65466,97541,19450,29353,20497,53042,27729,28944,96071,118286,18318,69506,39903,129715,22720,87328,28443,116424,26207,113262,79853,81783,39284,106382,71915,79543,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {855,99963,91677,110615,11775,36471,102112,107351,7670,70393,61866,121293,16957,83792,50239,113548,13386,37185,76361,77268,39732,110971,63898,101071,15523,28157,21894,84925,17833,88688,106745,123467,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {6150,63330,13653,81070,21809,36097,104146,111486,46120,92744,80195,128647,49008,116118,77211,124564,10921,45323,32526,75935,32059,62375,52124,55344,15006,75257,80979,85691,65264,113531,93780,114728,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2380,59548,89300,113702,10048,78922,37470,58562,36249,119477,59456,125432,46250,76087,66266,89859,6428,27046,71910,94978,23501,53483,25929,41461,28723,115395,45333,105123,49146,122747,57220,112804,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {104,109174,59753,99837,35672,130171,63361,90139,13678,106146,27385,79444,33012,93281,33494,39242,19579,111651,41634,58495,109013,130599,130407,130673,46654,51408,95714,117507,67794,68717,70504,86859,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {3906,121884,23161,101594,4585,27946,12447,20685,5743,7500,37455,129359,29834,129486,40114,68848,28662,112806,50155,55122,61901,104853,63992,81014,50363,116253,70770,93152,57355,104509,65163,130699,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {2179,49182,21717,104935,47974,128600,56133,86861,34607,102248,98514,110359,35238,62468,96533,99077,4460,82868,30222,99451,24985,80915,47975,64739,47186,94416,95932,112427,57839,95279,75891,97286,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2393,51044,48697,94711,32072,113561,60971,66114,11648,115600,63028,107394,36859,49360,81828,106100,3549,56549,73049,83176,19671,49426,38193,89614,6854,13779,51553,94935,51173,70050,65221,84140,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1212,112317,47230,53113,37324,68819,70971,81143,34731,88471,38235,43453,62103,75551,94245,124869,7599,81830,9545,121311,9310,126129,80314,81039,11313,12592,11477,43847,16450,29594,45947,107169,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4933,88792,82805,125234,54266,129582,78945,85373,13909,24340,109621,119750,87500,110328,92349,115689,19457,64715,55602,119233,19805,107454,27006,77142,30101,37460,52763,63595,40106,69997,111287,120953,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {468,3944,15466,54643,47697,84273,77788,109110,37872,101578,112624,119392,37964,115576,101892,128471,2942,64824,39360,65610,5022,50715,7299,130864,26504,109085,37799,102966,47540,127974,84699,111888,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {152,17795,36479,98438,963,91244,82844,126318,9842,13902,45762,123348,16796,59916,70473,127991,5005,107646,38330,124983,23979,99587,83600,113996,17940,54116,27243,85751,38587,57331,80240,128712,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {3882,93091,84161,108910,14214,66943,19963,89017,26748,103239,51673,108911,26809,114088,54118,82634,9983,69733,72904,99992,35523,50988,63292,130145,16767,27892,25737,32906,25459,111475,89549,123800,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {905,118643,14169,65925,61932,94198,92388,95889,10827,58627,77111,83599,59045,128885,67112,70945,1775,70797,37161,42307,33323,108750,33485,77874,6376,113619,23914,83669,9559,54895,71552,81625,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {8119,16424,22072,113378,53846,127520,66621,73320,14589,86807,15363,101984,47060,67876,64956,74631,8879,96884,35152,95241,67801,89708,76926,94587,16810,29697,40998,53341,47702,53257,106772,122376,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {228,10819,35319,60103,44307,68355,77942,83730,6176,121442,48580,49837,46950,96382,110090,120199,2678,60160,21914,101856,36385,67996,99247,109630,13690,86582,18578,124766,26532,31241,59554,66774,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1793,60405,27006,31622,90739,126547,111795,126396,6036,99735,28402,91194,15568,81820,78114,99352,18955,25548,100551,106932,53102,102564,87830,129164,42622,112446,44824,90989,51893,103629,57386,101456,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1892,82099,84111,118870,3115,40978,4147,92573,37607,112710,49343,110911,49055,87728,62999,85708,4465,68484,20648,112633,57431,66103,100632,113270,16213,130208,50468,63168,21694,102580,44785,84124,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {10844,116643,27275,102723,54545,127216,56747,61138,14539,92223,30750,112537,23859,25452,94171,98273,12683,31522,25341,55108,22876,125963,38741,107360,77710,120742,80970,112368,85143,122820,85989,109358,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {13733,17229,86407,119283,46909,114706,69539,123078,19368,89137,89142,113704,30426,44446,96938,106254,14764,129591,80361,82004,25635,112512,55102,67715,48791,71227,99385,106860,79732,104754,91227,98140,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {15194,129531,42180,55967,17531,61051,53277,114760,52178,98807,69583,73889,77824,108124,91713,102198,23030,93492,77500,89528,90670,110195,108215,122699,31646,112352,118251,121122,44613,128222,56640,58555,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {1343,37436,63165,79331,41969,127759,48531,72953,1437,89839,9208,110314,5016,89747,42682,106790,4657,111579,13062,106167,44497,124078,64678,129198,24834,32737,93976,125278,37650,49926,46074,47114,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {4823,59193,62107,105820,10704,115728,37436,49368,43020,107891,105170,106685,54075,57542,76771,84151,19232,59718,20295,52897,56345,93561,65349,99799,53327,125006,91605,124473,61846,71645,93432,126758,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {1772,91584,98330,117355,48382,57458,52949,109192,34069,71985,73937,117032,44869,119992,89106,118518,2290,90991,58181,100156,89469,103114,110735,124303,2914,108013,13726,126198,35270,84598,58427,76223,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {48,99494,15015,110216,330,15688,23534,59765,6870,119809,78611,127365,17647,116005,74958,86206,6504,9620,60694,85282,32882,106616,38160,108649,24936,122189,112414,112596,39393,80339,61385,128978,}},
{"0000000000000000000000000000000000000000000000000000000000000002", {101,119154,71529,130536,2187,49873,54555,64141,8928,77312,113791,114916,52778,81760,95052,115749,4213,15415,59980,130039,30767,43413,33548,37031,13464,65693,68774,72431,20625,124619,119166,130780,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {4233,33176,43708,55482,25348,51018,60746,97987,13491,23060,65847,126378,14150,52701,67149,84987,21271,86591,78598,129732,60172,126400,78020,112938,36243,85645,53784,70104,95963,125947,124532,127150,}},
{"0000000000000000000000000000000000000000000000000000000000000000", {83,129624,47935,57492,3098,118571,62848,100824,2201,129786,40709,51811,42027,67793,106728,123029,6383,124311,90864,108178,29820,51826,54355,111489,9130,87309,45926,75107,29967,35844,91034,95581,}},
{"0000000000000000000000000000000000000000000000000000000000000001", {2625,12668,40547,130658,63237,118548,83120,110347,21183,85208,99979,117248,35320,52452,58849,115693,8767,34019,42852,90307,23961,49397,51719,98408,15894,67832,58244,100835,66133,95889,71477,98549,}},
};
// NOTE: These tests rely on CreateNewBlock doing its own self-validation!
@ -148,14 +148,14 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
LOCK(cs_main);
fCheckpointsEnabled = false;
// Simple block creation, nothing special yet:
BOOST_CHECK(pblocktemplate = CreateNewBlock(scriptPubKey));
// We can't make transactions until we have inputs
// Therefore, load 100 blocks :)
std::vector<CTransaction*>txFirst;
for (unsigned int i = 0; i < sizeof(blockinfo)/sizeof(*blockinfo); ++i)
{
// Simple block creation, nothing special yet:
BOOST_CHECK(pblocktemplate = CreateNewBlock(scriptPubKey));
CBlock *pblock = &pblocktemplate->block; // pointer for convenience
pblock->nVersion = 1;
pblock->nTime = chainActive.Tip()->GetMedianTimePast()+1;
@ -233,8 +233,10 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
BOOST_CHECK(ProcessNewBlock(state, NULL, pblock, true, NULL));
BOOST_CHECK_MESSAGE(state.IsValid(), state.GetRejectReason());
pblock->hashPrevBlock = pblock->GetHash();
// Need to recreate the template each round because of mining slow start
delete pblocktemplate;
}
delete pblocktemplate;
// Just to make sure we can still make simple blocks
BOOST_CHECK(pblocktemplate = CreateNewBlock(scriptPubKey));
@ -247,10 +249,10 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
tx.vin[0].prevout.hash = txFirst[0]->GetHash();
tx.vin[0].prevout.n = 0;
tx.vout.resize(1);
tx.vout[0].nValue = 4000000000LL;
tx.vout[0].nValue = 800000LL;
for (unsigned int i = 0; i < 1001; ++i)
{
tx.vout[0].nValue -= 1000000;
tx.vout[0].nValue -= 10;
hash = tx.GetHash();
mempool.addUnchecked(hash, CTxMemPoolEntry(tx, 11, GetTime(), 111.0, 11));
tx.vin[0].prevout.hash = hash;
@ -267,10 +269,10 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
tx.vin[0].scriptSig << vchData << OP_DROP;
tx.vin[0].scriptSig << OP_1;
tx.vin[0].prevout.hash = txFirst[0]->GetHash();
tx.vout[0].nValue = 4000000000LL;
tx.vout[0].nValue = 800000LL;
for (unsigned int i = 0; i < 128; ++i)
{
tx.vout[0].nValue -= 10000000;
tx.vout[0].nValue -= 1000;
hash = tx.GetHash();
mempool.addUnchecked(hash, CTxMemPoolEntry(tx, 11, GetTime(), 111.0, 11));
tx.vin[0].prevout.hash = hash;
@ -289,7 +291,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
// child with higher priority than parent
tx.vin[0].scriptSig = CScript() << OP_1;
tx.vin[0].prevout.hash = txFirst[1]->GetHash();
tx.vout[0].nValue = 3900000000LL;
tx.vout[0].nValue = 690000LL;
hash = tx.GetHash();
mempool.addUnchecked(hash, CTxMemPoolEntry(tx, 11, GetTime(), 111.0, 11));
tx.vin[0].prevout.hash = hash;
@ -297,7 +299,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
tx.vin[1].scriptSig = CScript() << OP_1;
tx.vin[1].prevout.hash = txFirst[0]->GetHash();
tx.vin[1].prevout.n = 0;
tx.vout[0].nValue = 4900000000LL;
tx.vout[0].nValue = 790000LL;
hash = tx.GetHash();
mempool.addUnchecked(hash, CTxMemPoolEntry(tx, 11, GetTime(), 111.0, 11));
BOOST_CHECK(pblocktemplate = CreateNewBlock(scriptPubKey));
@ -319,14 +321,14 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
tx.vin[0].prevout.hash = txFirst[0]->GetHash();
tx.vin[0].prevout.n = 0;
tx.vin[0].scriptSig = CScript() << OP_1;
tx.vout[0].nValue = 3900000000LL;
tx.vout[0].nValue = 790000LL;
script = CScript() << OP_0;
tx.vout[0].scriptPubKey = GetScriptForDestination(CScriptID(script));
hash = tx.GetHash();
mempool.addUnchecked(hash, CTxMemPoolEntry(tx, 11, GetTime(), 111.0, 11));
tx.vin[0].prevout.hash = hash;
tx.vin[0].scriptSig = CScript() << (std::vector<unsigned char>)script;
tx.vout[0].nValue -= 1000000;
tx.vout[0].nValue -= 10000;
hash = tx.GetHash();
mempool.addUnchecked(hash, CTxMemPoolEntry(tx, 11, GetTime(), 111.0, 11));
BOOST_CHECK(pblocktemplate = CreateNewBlock(scriptPubKey));
@ -336,7 +338,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
// double spend txn pair in mempool
tx.vin[0].prevout.hash = txFirst[0]->GetHash();
tx.vin[0].scriptSig = CScript() << OP_1;
tx.vout[0].nValue = 3900000000LL;
tx.vout[0].nValue = 790000LL;
tx.vout[0].scriptPubKey = CScript() << OP_1;
hash = tx.GetHash();
mempool.addUnchecked(hash, CTxMemPoolEntry(tx, 11, GetTime(), 111.0, 11));
@ -364,7 +366,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
tx.vin[0].prevout.hash = txFirst[0]->GetHash();
tx.vin[0].scriptSig = CScript() << OP_1;
tx.vin[0].nSequence = 0;
tx.vout[0].nValue = 3900000000LL;
tx.vout[0].nValue = 790000LL;
tx.vout[0].scriptPubKey = CScript() << OP_1;
tx.nLockTime = chainActive.Tip()->nHeight+1;
hash = tx.GetHash();
@ -378,7 +380,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
tx2.vin[0].scriptSig = CScript() << OP_1;
tx2.vin[0].nSequence = 0;
tx2.vout.resize(1);
tx2.vout[0].nValue = 3900000000LL;
tx2.vout[0].nValue = 790000LL;
tx2.vout[0].scriptPubKey = CScript() << OP_1;
tx2.nLockTime = chainActive.Tip()->GetMedianTimePast()+1;
hash = tx2.GetHash();

Loading…
Cancel
Save