PRCYCoin  2.0.0.7rc1
P2P Digital Currency
chainparams.cpp
Go to the documentation of this file.
1 // Copyright (c) 2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2015 The Bitcoin developers
3 // Copyright (c) 2014-2015 The Dash developers
4 // Copyright (c) 2015-2018 The PIVX developers
5 // Copyright (c) 2018-2020 The DAPS Project developers
6 // Copyright (c) 2020-2022 The PRivaCY Coin Developers
7 // Distributed under the MIT software license, see the accompanying
8 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
9 
10 #include "chainparams.h"
11 #include "consensus/merkle.h"
12 
13 #include "chainparamsseeds.h"
14 #include "util.h"
15 #include "utilstrencodings.h"
16 
17 #include <boost/assign/list_of.hpp>
18 
19 #include <assert.h>
20 
31 static Checkpoints::MapCheckpoints mapCheckpoints =
32  boost::assign::map_list_of
33  (0, uint256S("000006957e238ff4e6bcf00c8a7d1b3e7249c0a2109b0391d8740821a40c1d8c"))
34  (500, uint256S("00214da9b906c7c14558395b9bc88293301e6e5f87a714194079dd651293fadb")) // Final POW Block
35  (561, uint256S("54872c72e81b34117bc5a6095d6f1b8d85746992d2513d7adc90a2aceed1651e")) // First PoA Block
36  (562, uint256S("0f00d3a6636c8a265724764da082fdef8106fce7057dfdda94ab6537f7211b4f")) // First Block after PoA
37  (14905, uint256S("6389ecdb851500d9467b41a54d02c58b1542bfc2d5c99339821c89d25135a4b0")) // Chain split
38  (17128, uint256S("98d76615ef96b3ced1d9902715ba432393335b791b2256936883c323f0bb91f4"))
39  (17133, uint256S("d9dcec83e8a675db0f7b6d28fde591f494a1b0766f7cb56ea8d8cb95348f835b"))
40  (17150, uint256S("bad4dccf8fd86f00d6c215802d39342e4de64e21155b76b38f0182ba7d96edd2"))
41  (17153, uint256S("4e63d92ac5209f0a342c2e74098778bbe36324de66734ff41132c7f3db3ad628"))
42  (18375, uint256S("c291cf0a7bcd73a91c6f68d28dc6ce9e1acee973fd134f4250c1ee80bf3d0c03"))
43  (18813, uint256S("ccf401e6fb24f34c105b2f693c2eb75c2ba7a2a4e3ffbbfe152e98ae9806d418"))
44  (18814, uint256S("f8092b5c474cc260edb7c378c4f7e2123b007a55018d32f97b9b729f729067ae"))
45  (19317, uint256S("0bd530827eff9bdc79893739c02c14c02bb35a39b943eaeeb72e04767e0597a5"))
46  (19400, uint256S("cdeebfe4fdeda461ab2025d08248e89b13a1e970c76b91ac2788837c147e6f33"))
47  (77852, uint256S("e6ec3ddccfb6bd378ca3cf5cc292c011ec235536a9edbb8c3fdbe17abd921d44"))
48  (98715, uint256S("04b3cfde139af89ddacf3cb790daf734e4953119c4a58da9b8f07be888271670"))
49  (98768, uint256S("43f42aaba4a1e8f7a4981b7d8620e5967974b0bbdee4ae22e42f14585be3a52f"))
50  (105629, uint256S("82ae47c00a0338f33a41b8505162cabaa4740f2187feb07f4ee4bc6138461acb"))
51  (129267, uint256S("773de63a6ef8cd4d56769a0efc8625fa617bbac34802019b3a211bbe390f34a6"))
52  (132020, uint256S("d93d3f4b85dd3f3995d010966f8e0163f324bfe3e748507fadf472a14c76ce36"))
53  (133535, uint256S("33d415384dc2d181f9cd0208d6c8664dfdbfb95a061a639220b4ea253df7788c"))
54  (140352, uint256S("cdef2002ee6d10a0a8e85ba47329455773245e6008aa691416b63d7ec3aef78d"))
55  (155115, uint256S("ea78ac399244d06b407ff349ba71747d8c672ccd54216317abc28dbca04c71e5")) // A PoA block was rejected here, avoid it
56  (155116, uint256S("929d16db920af3df60cf2e869ee08d174f7d476d65e53cbf07d54b7d1cca2380")) // First PoA Block after fix/difficulty bump
57  (193949, uint256S("98ed9238e67297071a13b6e62fa17c5c992998a295ea7535cdcd4c3dda8aeab3")) // First PoA Block after fix/difficulty bump
58  (260162, uint256S("97d593c9ebbcc219eeed822f05ba4291e7dcc4c3667836dbfe29667fe31808a7"))
59  (369757, uint256S("445cc1e7abeca5bd13669704241efb9c045bf414d80c5173c7f80018381ba5a3"))
60  (370034, uint256S("2c98b9b6fc800b0ba9836669c1474a95d1e4afd2a91edbec25d3bc05636deab3"))
61  (385916, uint256S("05c5ff466e345d9ab1a8a029b748f130c8707b8c4ce9dd315fc7f6760d1857c8"))
62  (847850, uint256S("afae3a69feb6ac01b0382375e1db2a3dafea4d87321095581238858fcadbe050")) // Incorrectly marked invalid block
63  (1190000, uint256S("a530ab4a4b80ecc4db5b296f179e8de5d6ab45cd46d235484e3e79a88b195e2b")) // Hard Fork block where chain split
64  (1191000, uint256S("13dbce3262466b797537f130f1cae9a33bb62e5f63c31caff9ea12912ac598fa"))
65  (1192000, uint256S("5218ad9f37dbc42ba22e529ad2fb0b40a3c5ee46c26cc0b62736d125db3166b7"))
66  ;
67 static const Checkpoints::CCheckpointData data = {
68  &mapCheckpoints,
69  1678586952, // * UNIX timestamp of last checkpoint block
70  2490867, // * total number of transactions between genesis and last checkpoint
71  // (the tx=... number in the SetBestChain debug.log lines)
72  1440 // * estimated number of transactions per day after checkpoint
73 };
74 
75 static Checkpoints::MapCheckpoints mapCheckpointsTestnet =
76  boost::assign::map_list_of(0, uint256S("000001488be8bb442cd72cb737ade49a31de90dbbe5dce36f7d7e07f5dde2b77"));
77 static const Checkpoints::CCheckpointData dataTestnet = {
78  &mapCheckpointsTestnet,
79  0,
80  0,
81  0};
82 
83 static Checkpoints::MapCheckpoints mapCheckpointsRegtest =
84  boost::assign::map_list_of(0, uint256S("690cbb5c7ae999de1de49948a3c109d3b15fe4de4297980de8ff0cbfe3c7823a"));
85 static const Checkpoints::CCheckpointData dataRegtest = {
86  &mapCheckpointsRegtest,
87  0,
88  0,
89  0};
90 
91 class CMainParams : public CChainParams
92 {
93 public:
95  {
97  strNetworkID = "main";
103  pchMessageStart[0] = 0xf8;
104  pchMessageStart[1] = 0x8e;
105  pchMessageStart[2] = 0xa6;
106  pchMessageStart[3] = 0x90;
107  nDefaultPort = 59682;
108  bnProofOfWorkLimit = ~UINT256_ZERO >> 1; // PRCYcoin starting difficulty is 1 / 2^12
109  nSubsidyHalvingInterval = 210000;
111  nEnforceBlockUpgradeMajority = 8100; // 75%
112  nRejectBlockOutdatedMajority = 10260; // 95%
113  nToCheckBlockUpgradeMajority = 10800; // Approximate expected amount of blocks in 7 days (1440*7.5)
114  nMinerThreads = 0;
115  nTargetTimespan = 1 * 60; // PRCYcoin: 1 minute
116  nTargetSpacing = 1 * 60; // PRCYcoin: 1 minute
117  nMaturity = 100;
118  nStakeMinAge = 60 * 60; // PRCYcoin: 1 hour
120  nMNCollateralAmt = 5000 * COIN;
121  nMinimumStakeAmount = 2500 * COIN;
122 
124  nLastPOWBlock = 500;
125  nStartPOABlock = 560;
126  nModifierUpdateBlock = 615800;
127  nPoABlockTime = 60 * 60; //a PoA block every 60 minutes
128  nMinNumPoSBlocks = 59;
129  nMaxNumPoSBlocks = 65;
130  nSoftForkBlock = 120000; // Soft fork block for difficulty change
131  nPoANewDiff = 150000; // New PoA difficulty
132  nBIP65ActivationHeight = 125000; // Last v3 block was 124712, leave a bit of padding
133  nPoAFixTime = 1616716800; // Fork time for PoA fix - Friday, March 26, 2021 12:00:00 AM (GMT)
134  nPoAPaddingBlock = 169869; // Last block with 120 PoS blocks in a PoA Audit
135  nPoAPadding = 10; // Current PoA Padding
136  nHardForkBlock = 375000; // Add hard fork block for Consensus/PoA Padding
137  nHardForkBlockRingSize = 750000; // Add hard fork block for Ring Size bump
138  nHardForkBlockRingSize2 = nHardForkBlockRingSize; // For testnet & compile purposes
139  nSyncFix = 1140466; // Fix sync from 0
140  nFixChecks = 1190000; // Fix checks for staking
141 
152  const char* pszTimestamp = "12 January 2021 PRCY Coin Development Team - Privacy is Your Right";
153  CMutableTransaction txNew;
154  txNew.vin.resize(1);
155  txNew.vout.resize(1);
156  txNew.vin[0].scriptSig = CScript() << 486604799 << CScriptNum(4) << std::vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp));
157  txNew.vout[0].nValue = 0 * COIN;
158  txNew.vout[0].scriptPubKey = CScript() << ParseHex("04b78f63269234b741668d85b57ba11edec2ee20f15719db180d5d6a37c4e9db0c494390fb54925934bc7b29f148a372c00273bbd5c939830d7d2941de6ce44b8b") << OP_CHECKSIG;
159  genesis.vtx.push_back(txNew);
162  genesis.nVersion = 1;
163  genesis.nTime = 1610409600; // 1/12/2021 @ 12:00am (GMT)
164  genesis.nBits = 0x1e0ffff0;
165  genesis.nNonce = 28141687;
166 
167  //change blockhash from 0x00000e9468bba3df97334bfb5015543488a0fb38193c82b101472937590e3037 because of transaction structure change
168  if(genesis.GetHash()!=uint256("000006957e238ff4e6bcf00c8a7d1b3e7249c0a2109b0391d8740821a40c1d8c"))
169  {
170  printf("Searchingforgenesisblock...\n");
171  uint256 hashTarget=uint256().SetCompact(genesis.nBits);
172 
173  printf("hashTarget:%s\n",hashTarget.ToString().c_str());
174 
175  while(uint256(genesis.GetHash())>hashTarget)
176  {
177  printf("loop:%s\n",genesis.GetHash().ToString().c_str());
178  ++genesis.nNonce;
179  if(genesis.nNonce==0)
180  {
181  printf("NONCEWRAPPED,incrementingtime");
182  std::cout<<std::string("NONCEWRAPPED,incrementingtime:\n");
183  ++genesis.nTime;
184  }
185  if(genesis.nNonce%10000==0)
186  {
187  printf("Mainnet:nonce%08u:hash=%s\n",genesis.nNonce,genesis.GetHash().ToString().c_str());
188  }
189  }
190  printf("block.nTime=%u\n",genesis.nTime);
191  printf("block.nNonce=%u\n",genesis.nNonce);
192  printf("block.GetHash=%s\n",genesis.GetHash().ToString().c_str());
193  printf("hashMerkleRoot=%s\n",genesis.hashMerkleRoot.ToString().c_str());
194 
195  }
196 
197 
198 
200  assert(hashGenesisBlock == uint256S("000006957e238ff4e6bcf00c8a7d1b3e7249c0a2109b0391d8740821a40c1d8c"));
201  assert(genesis.hashMerkleRoot == uint256S("cd01f1ca20c22b336f1ee83af9fd8b7facbf42083bf3bed49af045f5cadc9cd4"));
202 
203  // nodes with support for servicebits filtering should be at the top
204  vSeeds.push_back(CDNSSeedData("seed.prcycoin.com", "seed.prcycoin.com")); // Single node address
205  vSeeds.push_back(CDNSSeedData("seed1.prcycoin.com", "seed1.prcycoin.com")); // Single node address
206  vSeeds.push_back(CDNSSeedData("seed2.prcycoin.com", "seed2.prcycoin.com")); // Single node address
207  vSeeds.push_back(CDNSSeedData("seed3.prcycoin.com", "seed3.prcycoin.com")); // Single node address
208  vSeeds.push_back(CDNSSeedData("seed4.prcycoin.com", "seed4.prcycoin.com")); // Single node address
209  vSeeds.push_back(CDNSSeedData("seed5.prcycoin.com", "seed5.prcycoin.com")); // Single node address
210  vSeeds.push_back(CDNSSeedData("seed6.prcycoin.com", "seed6.prcycoin.com")); // Single node address
211  vSeeds.push_back(CDNSSeedData("seed7.prcycoin.com", "seed7.prcycoin.com")); // Single node address
212  vSeeds.push_back(CDNSSeedData("seed8.prcycoin.com", "seed8.prcycoin.com")); // Single node address
213  vSeeds.push_back(CDNSSeedData("seed9.prcycoin.com", "seed9.prcycoin.com")); // Single node address
214  vSeeds.push_back(CDNSSeedData("vps.prcycoin.com", "vps.prcycoin.com")); // Single node address
215  vSeeds.push_back(CDNSSeedData("vps1.prcycoin.com", "vps1.prcycoin.com")); // Single node address
216  vSeeds.push_back(CDNSSeedData("vps2.prcycoin.com", "vps2.prcycoin.com")); // Single node address
217  vSeeds.push_back(CDNSSeedData("vps3.prcycoin.com", "vps3.prcycoin.com")); // Single node address
218  vSeeds.push_back(CDNSSeedData("vps4.prcycoin.com", "vps4.prcycoin.com")); // Single node address
219  vSeeds.push_back(CDNSSeedData("vps5.prcycoin.com", "vps5.prcycoin.com")); // Single node address
220  vSeeds.push_back(CDNSSeedData("vps6.prcycoin.com", "vps6.prcycoin.com")); // Single node address
221  vSeeds.push_back(CDNSSeedData("vps7.prcycoin.com", "vps7.prcycoin.com")); // Single node address
222  vSeeds.push_back(CDNSSeedData("vps8.prcycoin.com", "vps8.prcycoin.com")); // Single node address
223  vSeeds.push_back(CDNSSeedData("vps9.prcycoin.com", "vps9.prcycoin.com")); // Single node address
224 
225  base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1, 55);
226  base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1, 61);
227  base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1, 28);
228  base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x57)(0x4D)(0x12)(0x23).convert_to_container<std::vector<unsigned char> >();
229  base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x57)(0x41)(0x71)(0x65).convert_to_container<std::vector<unsigned char> >();
230  // BIP44 coin type is from https://github.com/satoshilabs/slips/blob/master/slip-0044.md
231  nExtCoinType = 0x80000355;
232  nStealthPrefix = 135; // Stealth Addresses start with a P
233  nIntegratedPrefix = 136; // Integrated Addresses start with a Pk
234 
235  vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main));
236 
237  fRequireRPCPassword = true;
238  fMiningRequiresPeers = true;
241  fRequireStandard = true;
242  fMineBlocksOnDemand = false;
243  fSkipProofOfWorkCheck = false;
246 
248  nStartMasternodePayments = 1546809115; //Wed, 25 Jun 2014 20:36:16 GMT
249  }
250 
252  {
253  return data;
254  }
255 };
256 static CMainParams mainParams;
257 
262 {
263 public:
265  {
267  strNetworkID = "test";
268  pchMessageStart[0] = 0xc1;
269  pchMessageStart[1] = 0xaa;
270  pchMessageStart[2] = 0xb2;
271  pchMessageStart[3] = 0xe9;
272  nDefaultPort = 59684;
273  nEnforceBlockUpgradeMajority = 4320; // 75%
274  nRejectBlockOutdatedMajority = 5472; // 95%
275  nToCheckBlockUpgradeMajority = 5760; // 4 days
276  nMinerThreads = 0;
277  nTargetTimespan = 1 * 60; // PRCYcoin: 1 day
278  nTargetSpacing = 1 * 60; // PRCYcoin: 1 minute
279  nLastPOWBlock = 500;
280  nStartPOABlock = 560;
281  nPoABlockTime = 30 * 60; //1 PoA block every 30 minutes
282  nMinNumPoSBlocks = 29;
283  nMaxNumPoSBlocks = 33;
284  nMaturity = 15;
286  nModifierUpdateBlock = 51197; //approx Mon, 17 Apr 2017 04:00:00 GMT
287  nMNCollateralAmt = 5000 * COIN;
288  nSoftForkBlock = 600; // Soft fork block for difficulty change - testnet started with it
289  nPoANewDiff = 650;
291  nPoAFixTime = 1616277580; // Fork time for PoA fix - Saturday, March 20, 2021 22:00:00 AM (GMT)
292  nPoAPaddingBlock = 0;
293  nPoAPadding = 5; // Current PoA Padding
294  nHardForkBlock = 700; // Add hard fork block for Consensus/PoA Padding
295  nHardForkBlockRingSize = 16000; // Add hard fork block for Ring Size bump to 25-30
296  nHardForkBlockRingSize2 = 126000; // Add hard fork block for Ring Size bump to 30-32
297 
299  genesis.nTime = 1608422400;
300  genesis.nNonce = 23323155;
301 
302  if(genesis.GetHash()!=uint256("000001488be8bb442cd72cb737ade49a31de90dbbe5dce36f7d7e07f5dde2b77"))
303  {
304  printf("Searchingforgenesisblock...\n");
305  uint256 hashTarget=uint256().SetCompact(genesis.nBits);
306 
307  printf("hashTarget:%s\n",hashTarget.ToString().c_str());
308 
309  while(uint256(genesis.GetHash())>hashTarget)
310  {
311  printf("loop:%s\n",genesis.GetHash().ToString().c_str());
312  ++genesis.nNonce;
313  if(genesis.nNonce==0)
314  {
315  printf("NONCEWRAPPED,incrementingtime");
316  std::cout<<std::string("NONCEWRAPPED,incrementingtime:\n");
317  ++genesis.nTime;
318  }
319  if(genesis.nNonce%10000==0)
320  {
321  printf("Mainnet:nonce%08u:hash=%s\n",genesis.nNonce,genesis.GetHash().ToString().c_str());
322  }
323  }
324  printf("block.nTime=%u\n",genesis.nTime);
325  printf("block.nNonce=%u\n",genesis.nNonce);
326  printf("block.GetHash=%s\n",genesis.GetHash().ToString().c_str());
327  printf("hashMerkleRoot=%s\n",genesis.hashMerkleRoot.ToString().c_str());
328 
329  }
330 
332  assert(hashGenesisBlock == uint256S("000001488be8bb442cd72cb737ade49a31de90dbbe5dce36f7d7e07f5dde2b77"));
333 
334  vFixedSeeds.clear();
335  vSeeds.clear();
336  // nodes with support for servicebits filtering should be at the top
337  vSeeds.push_back(CDNSSeedData("testnet.prcycoin.com", "testnet.prcycoin.com"));
338  vSeeds.push_back(CDNSSeedData("testnet1.prcycoin.com", "testnet1.prcycoin.com"));
339  vSeeds.push_back(CDNSSeedData("testnet2.prcycoin.com", "testnet2.prcycoin.com"));
340  vSeeds.push_back(CDNSSeedData("testnet3.prcycoin.com", "testnet3.prcycoin.com"));
341 
342  base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1, 139); // Testnet prcycoin addresses start with 'x' or 'y'
343  base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1, 19); // Testnet prcycoin script addresses start with '8' or '9'
344  base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1, 239); // Testnet private keys start with '9' or 'c' (Bitcoin defaults)
345  // Testnet prcycoin BIP32 pubkeys start with 'DRKV'
346  base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x3a)(0x80)(0x61)(0xa0).convert_to_container<std::vector<unsigned char> >();
347  // Testnet prcycoin BIP32 prvkeys start with 'DRKP'
348  base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x3a)(0x80)(0x58)(0x37).convert_to_container<std::vector<unsigned char> >();
349  // Testnet prcycoin BIP44 coin type is '1' (All coin's testnet default)
350  nExtCoinType = 0x80000001;
351  nStealthPrefix = 135; // Stealth Addresses start with a P
352  nIntegratedPrefix = 136; // Integrated Addresses start with a Pk
353 
354  vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test));
355 
356  fRequireRPCPassword = true;
357  fMiningRequiresPeers = true;
360  fRequireStandard = true;
361  fMineBlocksOnDemand = false;
363 
365  nStartMasternodePayments = 1420837558; //Fri, 09 Jan 2015 21:05:58 GMT
366  nBudget_Fee_Confirmations = 3; // Number of confirmations for the finalization fee. We have to make this very short
367  // here because we only have a 8 block finalization window on testnet
368  }
370  {
371  return dataTestnet;
372  }
373 };
374 static CTestNetParams testNetParams;
375 
380 {
381 public:
383  {
385  strNetworkID = "regtest";
386  pchMessageStart[0] = 0xc6;
387  pchMessageStart[1] = 0xb3;
388  pchMessageStart[2] = 0x97;
389  pchMessageStart[3] = 0xd1;
390  nDefaultPort = 59686;
395  nMinerThreads = 1;
396  nTargetTimespan = 24 * 60 * 60; // Prcycoin: 1 day
397  nTargetSpacing = 1 * 60; // Prcycoin: 1 minutes
399  nLastPOWBlock = 250;
400  nMaturity = 100;
401  nStakeMinAge = 0;
403  nModifierUpdateBlock = 0; //approx Mon, 17 Apr 2017 04:00:00 GMT
404 
406  genesis.nTime = 1608422399;
407  genesis.nBits = 0x207fffff;
408  genesis.nNonce = 12361;
409 
410  if(genesis.GetHash()!=uint256("690cbb5c7ae999de1de49948a3c109d3b15fe4de4297980de8ff0cbfe3c7823a"))
411  {
412  printf("Searchingforgenesisblock...\n");
413  uint256 hashTarget=uint256().SetCompact(genesis.nBits);
414 
415  printf("hashTarget:%s\n",hashTarget.ToString().c_str());
416 
417  while(uint256(genesis.GetHash())>hashTarget)
418  {
419  printf("loop:%s\n",genesis.GetHash().ToString().c_str());
420  ++genesis.nNonce;
421  if(genesis.nNonce==0)
422  {
423  printf("NONCEWRAPPED,incrementingtime");
424  std::cout<<std::string("NONCEWRAPPED,incrementingtime:\n");
425  ++genesis.nTime;
426  }
427  if(genesis.nNonce%10000==0)
428  {
429  printf("Mainnet:nonce%08u:hash=%s\n",genesis.nNonce,genesis.GetHash().ToString().c_str());
430  }
431  }
432  printf("block.nTime=%u\n",genesis.nTime);
433  printf("block.nNonce=%u\n",genesis.nNonce);
434  printf("block.GetHash=%s\n",genesis.GetHash().ToString().c_str());
435  printf("hashMerkleRoot=%s\n",genesis.hashMerkleRoot.ToString().c_str());
436 
437  }
438 
440  assert(hashGenesisBlock == uint256S("690cbb5c7ae999de1de49948a3c109d3b15fe4de4297980de8ff0cbfe3c7823a"));
441 
442  vFixedSeeds.clear();
443  vSeeds.clear();
444 
445  fRequireRPCPassword = false;
446  fMiningRequiresPeers = false;
449  fRequireStandard = false;
450  fMineBlocksOnDemand = true;
451  fSkipProofOfWorkCheck = true;
453  }
455  {
456  return dataRegtest;
457  }
458 };
459 static CRegTestParams regTestParams;
460 
461 static CChainParams* pCurrentParams = 0;
462 
464 {
465  assert(pCurrentParams);
466  return *pCurrentParams;
467 }
468 
470 {
471  switch (network) {
473  return mainParams;
475  return testNetParams;
477  return regTestParams;
478  default:
479  assert(false && "Unimplemented network");
480  return mainParams;
481  }
482 }
483 
485 {
486  SelectBaseParams(network);
487  pCurrentParams = &Params(network);
488 }
489 
491 {
494  return false;
495 
496  SelectParams(network);
497  return true;
498 }
ARRAYLEN
#define ARRAYLEN(array)
Definition: utilstrencodings.h:21
CChainParams::fRequireRPCPassword
bool fRequireRPCPassword
Definition: chainparams.h:174
CMutableTransaction::vin
std::vector< CTxIn > vin
Definition: transaction.h:387
CChainParams::fHeadersFirstSyncingActive
bool fHeadersFirstSyncingActive
Definition: chainparams.h:182
UINT256_ZERO
const uint256 UINT256_ZERO
constant uint256 instances
Definition: uint256.h:129
CMainParams::Checkpoints
const Checkpoints::CCheckpointData & Checkpoints() const
Definition: chainparams.cpp:251
CChainParams::EXT_PUBLIC_KEY
@ EXT_PUBLIC_KEY
Definition: chainparams.h:48
CBaseChainParams::Network
Network
Definition: chainparamsbase.h:18
CChainParams::nRejectBlockOutdatedMajority
int nRejectBlockOutdatedMajority
Definition: chainparams.h:147
CChainParams::nToCheckBlockUpgradeMajority
int nToCheckBlockUpgradeMajority
Definition: chainparams.h:148
CBlockHeader::hashMerkleRoot
uint256 hashMerkleRoot
Definition: block.h:62
CChainParams::strNetworkID
std::string strNetworkID
Definition: chainparams.h:171
CBlockHeader::nBits
uint32_t nBits
Definition: block.h:65
CChainParams::nPoolMaxTransactions
int nPoolMaxTransactions
Definition: chainparams.h:183
ParseHex
std::vector< unsigned char > ParseHex(const char *psz)
Definition: utilstrencodings.cpp:77
Checkpoints::CCheckpointData
Definition: checkpoints.h:22
CTestNetParams::Checkpoints
const Checkpoints::CCheckpointData & Checkpoints() const
Definition: chainparams.cpp:369
CBlockHeader::nVersion
int32_t nVersion
Definition: block.h:59
CChainParams::hashGenesisBlock
uint256 hashGenesisBlock
Definition: chainparams.h:135
CChainParams::fRequireStandard
bool fRequireStandard
Definition: chainparams.h:178
NetworkIdFromCommandLine
CBaseChainParams::Network NetworkIdFromCommandLine()
Looks for -regtest or -testnet and returns the appropriate Network ID.
Definition: chainparamsbase.cpp:84
CChainParams::nPoABlockTime
int nPoABlockTime
Definition: chainparams.h:189
CChainParams::nPoAPadding
int nPoAPadding
Definition: chainparams.h:161
SelectParamsFromCommandLine
bool SelectParamsFromCommandLine()
Looks for -regtest or -testnet and then calls SelectParams as appropriate.
Definition: chainparams.cpp:490
CChainParams::nTargetSpacing
int64_t nTargetSpacing
Definition: chainparams.h:150
uint256::SetCompact
uint256 & SetCompact(uint32_t nCompact, bool *pfNegative=nullptr, bool *pfOverflow=nullptr)
The "compact" format is a representation of a whole number N using an unsigned 32bit number similar t...
Definition: uint256.cpp:14
tinyformat::printf
void printf(const char *fmt, const Args &... args)
Format list of arguments to std::cout, according to the given format string.
Definition: tinyformat.h:975
CTestNetParams::CTestNetParams
CTestNetParams()
Definition: chainparams.cpp:264
CChainParams
CChainParams defines various tweakable parameters of a given instance of the PRCY system.
Definition: chainparams.h:41
CRegTestParams::CRegTestParams
CRegTestParams()
Definition: chainparams.cpp:382
CBaseChainParams::MAX_NETWORK_TYPES
@ MAX_NETWORK_TYPES
Definition: chainparamsbase.h:23
CChainParams::nPoAPaddingBlock
int nPoAPaddingBlock
Definition: chainparams.h:160
CChainParams::nMaturity
int nMaturity
Definition: chainparams.h:163
CChainParams::vFixedSeeds
std::vector< SeedSpec6 > vFixedSeeds
Definition: chainparams.h:173
CChainParams::fAllowMinDifficultyBlocks
bool fAllowMinDifficultyBlocks
Definition: chainparams.h:176
CChainParams::networkID
CBaseChainParams::Network networkID
Definition: chainparams.h:170
chainparams.h
CMainParams::CMainParams
CMainParams()
Definition: chainparams.cpp:94
CBlockHeader::GetHash
uint256 GetHash() const
Definition: block.cpp:80
CChainParams::nPoANewDiff
int nPoANewDiff
Definition: chainparams.h:158
CChainParams::fDefaultConsistencyChecks
bool fDefaultConsistencyChecks
Definition: chainparams.h:177
CChainParams::nMasternodeCountDrift
int nMasternodeCountDrift
Definition: chainparams.h:162
CChainParams::genesis
CBlock genesis
Definition: chainparams.h:172
CScriptNum
Definition: script.h:190
chainparamsseeds.h
CBlockHeader::nNonce
uint32_t nNonce
Definition: block.h:66
CChainParams::nStartMasternodePayments
int64_t nStartMasternodePayments
Definition: chainparams.h:184
CChainParams::nStealthPrefix
int nStealthPrefix
Definition: chainparams.h:140
CChainParams::nBudget_Fee_Confirmations
int64_t nBudget_Fee_Confirmations
Definition: chainparams.h:185
CChainParams::nPoAFixTime
int nPoAFixTime
Definition: chainparams.h:159
CChainParams::nEnforceBlockUpgradeMajority
int nEnforceBlockUpgradeMajority
Definition: chainparams.h:146
CChainParams::SECRET_KEY
@ SECRET_KEY
Definition: chainparams.h:47
CRegTestParams::Checkpoints
const Checkpoints::CCheckpointData & Checkpoints() const
Definition: chainparams.cpp:454
CChainParams::nSoftForkBlock
int nSoftForkBlock
Definition: chainparams.h:152
CChainParams::pchMessageStart
MessageStartChars pchMessageStart
Definition: chainparams.h:136
CBaseChainParams::MAIN
@ MAIN
Definition: chainparamsbase.h:19
CChainParams::nSubsidyHalvingInterval
int nSubsidyHalvingInterval
Definition: chainparams.h:145
Checkpoints::MapCheckpoints
std::map< int, uint256 > MapCheckpoints
Definition: checkpoints.h:20
CChainParams::fTestnetToBeDeprecatedFieldRPC
bool fTestnetToBeDeprecatedFieldRPC
Definition: chainparams.h:181
CBlockHeader::nTime
uint32_t nTime
Definition: block.h:64
uint256
256-bit unsigned big integer.
Definition: uint256.h:38
uint256S
uint256 uint256S(const char *str)
Definition: uint256.h:99
CChainParams::nModifierUpdateBlock
int nModifierUpdateBlock
Definition: chainparams.h:164
CChainParams::nFixChecks
int nFixChecks
Definition: chainparams.h:157
CChainParams::nDefaultPort
int nDefaultPort
Raw pub key bytes for the broadcast alert signing key.
Definition: chainparams.h:138
OP_CHECKSIG
@ OP_CHECKSIG
Definition: script.h:155
CScript
Serialized script, used inside transaction inputs and outputs.
Definition: script.h:363
CChainParams::nExtCoinType
int nExtCoinType
Definition: chainparams.h:139
CChainParams::nStartPOABlock
int nStartPOABlock
Definition: chainparams.h:151
CBaseChainParams::TESTNET
@ TESTNET
Definition: chainparamsbase.h:20
CChainParams::nBIP65ActivationHeight
int nBIP65ActivationHeight
Definition: chainparams.h:186
CChainParams::nLastPOWBlock
int nLastPOWBlock
Definition: chainparams.h:129
merkle.h
SelectBaseParams
void SelectBaseParams(CBaseChainParams::Network network)
Sets the params returned by Params() to those for the given network.
Definition: chainparamsbase.cpp:66
CRegTestParams
Regression test.
Definition: chainparams.cpp:379
SelectParams
void SelectParams(CBaseChainParams::Network network)
Sets the params returned by Params() to those for the given network.
Definition: chainparams.cpp:484
CMainParams
Definition: chainparams.cpp:91
CBlockHeader::hashPrevBlock
uint256 hashPrevBlock
Definition: block.h:61
base_uint::SetNull
void SetNull()
Definition: arith_uint256.h:308
CBlock::vtx
std::vector< CTransaction > vtx
Definition: block.h:146
CChainParams::base58Prefixes
std::vector< unsigned char > base58Prefixes[MAX_BASE58_TYPES]
Definition: chainparams.h:169
CMutableTransaction::vout
std::vector< CTxOut > vout
Definition: transaction.h:388
CChainParams::fMiningRequiresPeers
bool fMiningRequiresPeers
Definition: chainparams.h:175
CChainParams::nMinimumStakeAmount
CAmount nMinimumStakeAmount
Definition: chainparams.h:166
CChainParams::EXT_SECRET_KEY
@ EXT_SECRET_KEY
Definition: chainparams.h:49
CChainParams::nHardForkBlockRingSize2
int nHardForkBlockRingSize2
Definition: chainparams.h:155
CChainParams::nSyncFix
int nSyncFix
Definition: chainparams.h:156
CBaseChainParams::REGTEST
@ REGTEST
Definition: chainparamsbase.h:21
CChainParams::nMNCollateralAmt
CAmount nMNCollateralAmt
Definition: chainparams.h:165
CChainParams::nMaxReorganizationDepth
int nMaxReorganizationDepth
Definition: chainparams.h:144
Params
const CChainParams & Params()
Return the currently selected parameters.
Definition: chainparams.cpp:463
CChainParams::nStakeMinAge
int nStakeMinAge
Definition: chainparams.h:143
CChainParams::PUBKEY_ADDRESS
@ PUBKEY_ADDRESS
Definition: chainparams.h:45
CChainParams::nMaxNumPoSBlocks
int nMaxNumPoSBlocks
Definition: chainparams.h:191
utilstrencodings.h
CChainParams::nHardForkBlock
int nHardForkBlock
Definition: chainparams.h:153
CChainParams::nTargetTimespan
int64_t nTargetTimespan
Definition: chainparams.h:149
CMutableTransaction
A mutable version of CTransaction.
Definition: transaction.h:384
CChainParams::nIntegratedPrefix
int nIntegratedPrefix
Definition: chainparams.h:141
CDNSSeedData
Definition: chainparams.h:23
util.h
CTestNetParams
Testnet (v3)
Definition: chainparams.cpp:261
CChainParams::SCRIPT_ADDRESS
@ SCRIPT_ADDRESS
Definition: chainparams.h:46
CChainParams::fMineBlocksOnDemand
bool fMineBlocksOnDemand
Definition: chainparams.h:179
CChainParams::nHardForkBlockRingSize
int nHardForkBlockRingSize
Definition: chainparams.h:154
CChainParams::nMinNumPoSBlocks
int nMinNumPoSBlocks
Definition: chainparams.h:190
BlockMerkleRoot
uint256 BlockMerkleRoot(const CBlock &block, bool *mutated)
Definition: merkle.cpp:150
CChainParams::nMinerThreads
int nMinerThreads
Definition: chainparams.h:167
CChainParams::fSkipProofOfWorkCheck
bool fSkipProofOfWorkCheck
Definition: chainparams.h:180
CChainParams::vSeeds
std::vector< CDNSSeedData > vSeeds
Definition: chainparams.h:168
CChainParams::bnProofOfWorkLimit
uint256 bnProofOfWorkLimit
Definition: chainparams.h:142
base_uint::ToString
std::string ToString() const
Definition: arith_uint256.cpp:199