@@ -43,12 +43,12 @@ static CBlock CreateGenesisBlock(
4343
4444 // Genesis parameters for different networks on FACT0RN.
4545 if ( nTime == 1650443545 ){
46- genesis.nP1 = uint1024S (" 0x82bd " ); // Regtest
46+ genesis.nP1 = uint1024S (" 0xb5ff " ); // Regtest
4747 }
4848 else if ( nTime == 1650442708 ){
49- genesis.nP1 = uint1024S (" 0x29bd98fec7408110c833e1c50642d " ); // Testnet
49+ genesis.nP1 = uint1024S (" 0x166ad939aed84a268f7c2ae4f5d " ); // Testnet
5050 } else if (nTime == 1650449340 ) {
51- genesis.nP1 = uint1024S (" 0x746e26c03bb7955ab2db0322c02bd " ); // Mainnet
51+ genesis.nP1 = uint1024S (" 0x5b541e0fc53ad9c40daa99c31c17b " ); // Mainnet
5252 }
5353
5454 genesis.vtx .push_back (MakeTransactionRef (std::move (txNew)));
@@ -70,7 +70,7 @@ static CBlock CreateGenesisBlock(
7070 */
7171static CBlock CreateGenesisBlock (uint32_t nTime, uint64_t nNonce, uint16_t nBits, int32_t nVersion, int64_t wOffset, const CAmount& genesisReward)
7272{
73- const char * pszTimestamp = " The Times 04/Apr /2022 Russia Strikes Hard as It Pushes to Seize Donbas Region" ;
73+ const char * pszTimestamp = " The Times 4/20 /2022 Russia Strikes Hard as It Pushes to Seize Donbas Region" ;
7474 const CScript genesisOutputScript = CScript () << ParseHex (" 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f" ) << OP_CHECKSIG;
7575 return CreateGenesisBlock (pszTimestamp, genesisOutputScript, nTime, nNonce, nBits, nVersion, wOffset, genesisReward);
7676}
@@ -82,7 +82,7 @@ class CMainParams : public CChainParams {
8282public:
8383 CMainParams () {
8484 strNetworkID = CBaseChainParams::MAIN;
85- genesis = CreateGenesisBlock ( 1650449340ULL , 42069ULL , 230 , 0 , 3068LL , 0 );
85+ genesis = CreateGenesisBlock ( 1650449340ULL , 4081969520ULL , 230 , 0 , 2375LL , 0 );
8686 consensus.hashGenesisBlock = genesis.GetHash ();
8787 consensus.signet_blocks = false ;
8888 consensus.signet_challenge .clear ();
@@ -132,22 +132,10 @@ class CMainParams : public CChainParams {
132132 m_assumed_blockchain_size = 420 ;
133133 m_assumed_chain_state_size = 6 ;
134134
135- // TODO_FACTOR: Add assert for genesis block.
136-
137- // Note that of those which support the service bits prefix, most only support a subset of
138- // possible options.
139- // This is fine at runtime as we'll fall back to using them as an addrfetch if they don't support the
140- // service bits we want, but we should get them updated to support all service bits wanted by any
141- // release ASAP to avoid it where possible.
142- // vSeeds.emplace_back("seed.bitcoin.sipa.be"); // Pieter Wuille, only supports x1, x5, x9, and xd
143- // vSeeds.emplace_back("dnsseed.bluematt.me"); // Matt Corallo, only supports x9
144- // vSeeds.emplace_back("dnsseed.bitcoin.dashjr.org"); // Luke Dashjr
145- // vSeeds.emplace_back("seed.bitcoinstats.com"); // Christian Decker, supports x1 - xf
146- // vSeeds.emplace_back("seed.bitcoin.jonasschnelli.ch"); // Jonas Schnelli, only supports x1, x5, x9, and xd
147- // vSeeds.emplace_back("seed.btc.petertodd.org"); // Peter Todd, only supports x1, x5, x9, and xd
148- // vSeeds.emplace_back("seed.bitcoin.sprovoost.nl"); // Sjors Provoost
149- // vSeeds.emplace_back("dnsseed.emzy.de"); // Stephan Oeste
150- // vSeeds.emplace_back("seed.bitcoin.wiz.biz"); // Jason Maurice
135+ // Assert for genesis block.
136+ consensus.hashGenesisBlock = genesis.GetHash ();
137+ assert (consensus.hashGenesisBlock == uint256S (" 79cb40f8075b0e3dc2bc468c5ce2a7acbe0afd36c6c3d3a134ea692edac7de49" ));
138+ assert (genesis.hashMerkleRoot == uint256S (" fe56b75eb001df55cfe63e768ff54a7a376a3108119c9cedd1c6b5045649b108" ));
151139
152140 base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char >(1 ,0 );
153141 base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char >(1 ,5 );
@@ -166,7 +154,7 @@ class CMainParams : public CChainParams {
166154
167155 checkpointData = {
168156 {
169- {0 , consensus. hashGenesisBlock } // replace me with a hardcoded uint256 before release
157+ {0 , uint256S ( " 79cb40f8075b0e3dc2bc468c5ce2a7acbe0afd36c6c3d3a134ea692edac7de49 " ) }
170158 }
171159 };
172160
@@ -190,7 +178,7 @@ class CTestNetParams : public CChainParams {
190178public:
191179 CTestNetParams () {
192180 strNetworkID = CBaseChainParams::TESTNET;
193- genesis = CreateGenesisBlock ( 1650442708ULL , 420ULL , 228 , 0 , 2750LL , 0 );
181+ genesis = CreateGenesisBlock ( 1650442708ULL , 4143631544ULL , 210 , 0 , - 2813 , 0 );
194182 consensus.hashGenesisBlock = genesis.GetHash ();
195183 consensus.signet_blocks = false ;
196184 consensus.signet_challenge .clear ();
@@ -202,7 +190,7 @@ class CTestNetParams : public CChainParams {
202190 consensus.SegwitHeight = 1 ;
203191 consensus.TaprootHeight = 1 ;
204192 consensus.MinBIP9WarningHeight = 1 ; // segwit activation height + miner confirmation window
205- consensus.powLimit = 228 ;
193+ consensus.powLimit = 210 ;
206194 consensus.nPowTargetTimespan = 24 * 60 * 60 ; // two weeks
207195 consensus.nPowTargetSpacing = 5 * 60 ;
208196 consensus.fPowAllowMinDifficultyBlocks = true ;
@@ -233,16 +221,14 @@ class CTestNetParams : public CChainParams {
233221 m_assumed_blockchain_size = 40 ;
234222 m_assumed_chain_state_size = 2 ;
235223
236- // TODO_FACTOR: Add assert for genesis block.
224+ // Assert for genesis block.
225+ consensus.hashGenesisBlock = genesis.GetHash ();
226+ assert (consensus.hashGenesisBlock == uint256S (" 550bbf0a444d9f92189f067dd225f5b8a5d92587ebc2e8398d143236072580af" ));
227+ assert (genesis.hashMerkleRoot == uint256S (" fe56b75eb001df55cfe63e768ff54a7a376a3108119c9cedd1c6b5045649b108" ));
237228
229+ // Seeds
238230 vFixedSeeds.clear ();
239231 vSeeds.clear ();
240- // nodes with support for servicebits filtering should be at the top
241- // vSeeds.emplace_back("testnet-seed.bitcoin.jonasschnelli.ch");
242- // vSeeds.emplace_back("seed.tbtc.petertodd.org");
243- // vSeeds.emplace_back("seed.testnet.bitcoin.sprovoost.nl");
244- // vSeeds.emplace_back("testnet-seed.bluematt.me"); // Just a static list of stable node(s), only supports x9
245-
246232 base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char >(1 ,111 );
247233 base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char >(1 ,196 );
248234 base58Prefixes[SECRET_KEY] = std::vector<unsigned char >(1 ,239 );
@@ -260,7 +246,7 @@ class CTestNetParams : public CChainParams {
260246
261247 checkpointData = {
262248 {
263- {0 , consensus. hashGenesisBlock } // replace me with a hardcoded uint256 before release
249+ {0 , uint256S ( " 550bbf0a444d9f92189f067dd225f5b8a5d92587ebc2e8398d143236072580af " ) }
264250 }
265251 };
266252
@@ -368,10 +354,7 @@ class SigNetParams : public CChainParams {
368354 // Number of rounds for gHash to generate random Ws around which to search for semiprimes.
369355 consensus.hashRounds = 1 ;
370356
371- // TODO_FACTOR: Add assert for genesis block.
372-
373357 vFixedSeeds.clear ();
374-
375358 base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char >(1 ,111 );
376359 base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char >(1 ,196 );
377360 base58Prefixes[SECRET_KEY] = std::vector<unsigned char >(1 ,239 );
@@ -395,7 +378,7 @@ class CRegTestParams : public CChainParams {
395378public:
396379 explicit CRegTestParams (const ArgsManager& args) {
397380 strNetworkID = CBaseChainParams::REGTEST;
398- genesis = CreateGenesisBlock ( 1650443545ULL , 7188792851871390278ULL , 32 , 0 , - 145 , 0 );
381+ genesis = CreateGenesisBlock ( 1650443545ULL , 2706135317ULL , 32 , 0 , 254 , 0 );
399382 consensus.hashGenesisBlock = genesis.GetHash ();
400383 consensus.signet_blocks = false ;
401384 consensus.signet_challenge .clear ();
@@ -438,8 +421,6 @@ class CRegTestParams : public CChainParams {
438421 // Number of rounds for gHash to generate random Ws around which to search for semiprimes.
439422 consensus.hashRounds = 1 ;
440423
441- // TODO_FACTOR: Add assert for genesis block.
442-
443424 UpdateActivationParametersFromArgs (args);
444425
445426 vFixedSeeds.clear (); // !< Regtest mode doesn't have any fixed seeds.
@@ -450,23 +431,18 @@ class CRegTestParams : public CChainParams {
450431 m_is_test_chain = true ;
451432 m_is_mockable_chain = true ;
452433
434+ // Assert for genesis block.
435+ consensus.hashGenesisBlock = genesis.GetHash ();
436+ assert (consensus.hashGenesisBlock == uint256S (" 38039464f800f026086985e81e6af3ceb35c2b93f042d79ab637d692eb002136" ));
437+ assert (genesis.hashMerkleRoot == uint256S (" fe56b75eb001df55cfe63e768ff54a7a376a3108119c9cedd1c6b5045649b108" ));
438+
439+
453440 checkpointData = {
454441 {
455- {0 , uint256S (" 0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206 " )},
442+ {0 , uint256S (" 38039464f800f026086985e81e6af3ceb35c2b93f042d79ab637d692eb002136 " )},
456443 }
457444 };
458445
459- m_assumeutxo_data = MapAssumeutxo{
460- {
461- 110 ,
462- {AssumeutxoHash{uint256S (" 0x1ebbf5850204c0bdb15bf030f47c7fe91d45c44c712697e4509ba67adb01c618" )}, 110 },
463- },
464- {
465- 200 ,
466- {AssumeutxoHash{uint256S (" 0x51c8d11d8b5c1de51543c579736e786aa2736206d1e11e627568029ce092cf62" )}, 200 },
467- },
468- };
469-
470446 chainTxData = ChainTxData{
471447 0 ,
472448 0 ,
0 commit comments