Dash Core  0.12.2.1
P2P Digital Currency
chainparams.cpp
Go to the documentation of this file.
1 // Copyright (c) 2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2014 The Bitcoin Core developers
3 // Copyright (c) 2014-2017 The Dash Core developers
4 // Distributed under the MIT software license, see the accompanying
5 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
6 
7 #include "chainparams.h"
8 #include "consensus/merkle.h"
9 
10 #include "tinyformat.h"
11 #include "util.h"
12 #include "utilstrencodings.h"
13 
14 #include <assert.h>
15 
16 #include <boost/assign/list_of.hpp>
17 
18 #include "chainparamsseeds.h"
19 
20 static CBlock CreateGenesisBlock(const char* pszTimestamp, const CScript& genesisOutputScript, uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const CAmount& genesisReward)
21 {
22  CMutableTransaction txNew;
23  txNew.nVersion = 1;
24  txNew.vin.resize(1);
25  txNew.vout.resize(1);
26  txNew.vin[0].scriptSig = CScript() << 486604799 << CScriptNum(4) << std::vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp));
27  txNew.vout[0].nValue = genesisReward;
28  txNew.vout[0].scriptPubKey = genesisOutputScript;
29 
30  CBlock genesis;
31  genesis.nTime = nTime;
32  genesis.nBits = nBits;
33  genesis.nNonce = nNonce;
34  genesis.nVersion = nVersion;
35  genesis.vtx.push_back(txNew);
36  genesis.hashPrevBlock.SetNull();
37  genesis.hashMerkleRoot = BlockMerkleRoot(genesis);
38  return genesis;
39 }
40 
52 static CBlock CreateGenesisBlock(uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const CAmount& genesisReward)
53 {
54  const char* pszTimestamp = "Wired 09/Jan/2014 The Grand Experiment Goes Live: Overstock.com Is Now Accepting Bitcoins";
55  const CScript genesisOutputScript = CScript() << ParseHex("040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9") << OP_CHECKSIG;
56  return CreateGenesisBlock(pszTimestamp, genesisOutputScript, nTime, nNonce, nBits, nVersion, genesisReward);
57 }
58 
71 class CMainParams : public CChainParams {
72 public:
74  strNetworkID = "main";
75  consensus.nSubsidyHalvingInterval = 210240; // Note: actual number of blocks per calendar year with DGW v3 is ~200700 (for example 449750 - 249050)
76  consensus.nMasternodePaymentsStartBlock = 100000; // not true, but it's ok as long as it's less then nMasternodePaymentsIncreaseBlock
77  consensus.nMasternodePaymentsIncreaseBlock = 158000; // actual historical value
78  consensus.nMasternodePaymentsIncreasePeriod = 576*30; // 17280 - actual historical value
80  consensus.nBudgetPaymentsStartBlock = 328008; // actual historical value
81  consensus.nBudgetPaymentsCycleBlocks = 16616; // ~(60*24*30)/2.6, actual number of blocks per month is 200700 / 12 = 16725
84  consensus.nSuperblockStartBlock = 614820; // The block at which 12.1 goes live (end of final 12.0 budget cycle)
85  consensus.nSuperblockCycle = 16616; // ~(60*24*30)/2.6, actual number of blocks per month is 200700 / 12 = 16725
93  consensus.BIP34Hash = uint256S("0x000007d91d1254d60e2dd1ae580383070a4ddffa4c64c2eeb4a2f9ecc0414343");
94  consensus.powLimit = uint256S("00000fffff000000000000000000000000000000000000000000000000000000");
95  consensus.nPowTargetTimespan = 24 * 60 * 60; // Dash: 1 day
96  consensus.nPowTargetSpacing = 2.5 * 60; // Dash: 2.5 minutes
99  consensus.nRuleChangeActivationThreshold = 1916; // 95% of 2016
100  consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
102  consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008
103  consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008
104 
105  // Deployment of BIP68, BIP112, and BIP113.
107  consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 1486252800; // Feb 5th, 2017
108  consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 1517788800; // Feb 5th, 2018
109 
110  // Deployment of DIP0001
112  consensus.vDeployments[Consensus::DEPLOYMENT_DIP0001].nStartTime = 1508025600; // Oct 15th, 2017
113  consensus.vDeployments[Consensus::DEPLOYMENT_DIP0001].nTimeout = 1539561600; // Oct 15th, 2018
116 
117  // The best chain should have at least this much work.
118  consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000172210fe351643b3f1"); // 750000
119 
120  // By default assume that the signatures in ancestors of this block are valid.
121  consensus.defaultAssumeValid = uint256S("0x00000000000000b4181bbbdddbae464ce11fede5d0292fb63fdede1e7c8ab21c"); //750000
122 
128  pchMessageStart[0] = 0xbf;
129  pchMessageStart[1] = 0x0c;
130  pchMessageStart[2] = 0x6b;
131  pchMessageStart[3] = 0xbd;
132  vAlertPubKey = ParseHex("048240a8748a80a286b270ba126705ced4f2ce5a7847b3610ea3c06513150dade2a8512ed5ea86320824683fc0818f0ac019214973e677acd1244f6d0571fc5103");
133  nDefaultPort = 9999;
134  nMaxTipAge = 6 * 60 * 60; // ~144 blocks behind -> 2 x fork detection time, was 24 * 60 * 60 in bitcoin
135  nDelayGetHeadersTime = 24 * 60 * 60;
136  nPruneAfterHeight = 100000;
137 
138  genesis = CreateGenesisBlock(1390095618, 28917698, 0x1e0ffff0, 1, 50 * COIN);
140  assert(consensus.hashGenesisBlock == uint256S("0x00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6"));
141  assert(genesis.hashMerkleRoot == uint256S("0xe0028eb9648db56b1ac77cf090b99048a8007e2bb64b68f092c03c7f56a662c7"));
142 
143 
144  vSeeds.push_back(CDNSSeedData("dash.org", "dnsseed.dash.org"));
145  vSeeds.push_back(CDNSSeedData("dashdot.io", "dnsseed.dashdot.io"));
146  vSeeds.push_back(CDNSSeedData("masternode.io", "dnsseed.masternode.io"));
147  vSeeds.push_back(CDNSSeedData("dashpay.io", "dnsseed.dashpay.io"));
148 
149  // Dash addresses start with 'X'
150  base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,76);
151  // Dash script addresses start with '7'
152  base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,16);
153  // Dash private keys start with '7' or 'X'
154  base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,204);
155  // Dash BIP32 pubkeys start with 'xpub' (Bitcoin defaults)
156  base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x88)(0xB2)(0x1E).convert_to_container<std::vector<unsigned char> >();
157  // Dash BIP32 prvkeys start with 'xprv' (Bitcoin defaults)
158  base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x88)(0xAD)(0xE4).convert_to_container<std::vector<unsigned char> >();
159 
160  // Dash BIP44 coin type is '5'
161  nExtCoinType = 5;
162 
163  vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main));
164 
165  fMiningRequiresPeers = true;
167  fRequireStandard = true;
168  fMineBlocksOnDemand = false;
170 
172  nFulfilledRequestExpireTime = 60*60; // fulfilled requests expire in 1 hour
173  strSporkPubKey = "04549ac134f694c0243f503e8c8a9a986f5de6610049c40b07816809b0d1d06a21b07be27b9bb555931773f62ba6cf35a25fd52f694d4e1106ccd237a7bb899fdd";
174 
176  boost::assign::map_list_of
177  ( 1500, uint256S("0x000000aaf0300f59f49bc3e970bad15c11f961fe2347accffff19d96ec9778e3"))
178  ( 4991, uint256S("0x000000003b01809551952460744d5dbb8fcbd6cbae3c220267bf7fa43f837367"))
179  ( 9918, uint256S("0x00000000213e229f332c0ffbe34defdaa9e74de87f2d8d1f01af8d121c3c170b"))
180  ( 16912, uint256S("0x00000000075c0d10371d55a60634da70f197548dbbfa4123e12abfcbc5738af9"))
181  ( 23912, uint256S("0x0000000000335eac6703f3b1732ec8b2f89c3ba3a7889e5767b090556bb9a276"))
182  ( 35457, uint256S("0x0000000000b0ae211be59b048df14820475ad0dd53b9ff83b010f71a77342d9f"))
183  ( 45479, uint256S("0x000000000063d411655d590590e16960f15ceea4257122ac430c6fbe39fbf02d"))
184  ( 55895, uint256S("0x0000000000ae4c53a43639a4ca027282f69da9c67ba951768a20415b6439a2d7"))
185  ( 68899, uint256S("0x0000000000194ab4d3d9eeb1f2f792f21bb39ff767cb547fe977640f969d77b7"))
186  ( 74619, uint256S("0x000000000011d28f38f05d01650a502cc3f4d0e793fbc26e2a2ca71f07dc3842"))
187  ( 75095, uint256S("0x0000000000193d12f6ad352a9996ee58ef8bdc4946818a5fec5ce99c11b87f0d"))
188  ( 88805, uint256S("0x00000000001392f1652e9bf45cd8bc79dc60fe935277cd11538565b4a94fa85f"))
189  ( 107996, uint256S("0x00000000000a23840ac16115407488267aa3da2b9bc843e301185b7d17e4dc40"))
190  ( 137993, uint256S("0x00000000000cf69ce152b1bffdeddc59188d7a80879210d6e5c9503011929c3c"))
191  ( 167996, uint256S("0x000000000009486020a80f7f2cc065342b0c2fb59af5e090cd813dba68ab0fed"))
192  ( 207992, uint256S("0x00000000000d85c22be098f74576ef00b7aa00c05777e966aff68a270f1e01a5"))
193  ( 312645, uint256S("0x0000000000059dcb71ad35a9e40526c44e7aae6c99169a9e7017b7d84b1c2daf"))
194  ( 407452, uint256S("0x000000000003c6a87e73623b9d70af7cd908ae22fee466063e4ffc20be1d2dbc"))
195  ( 523412, uint256S("0x000000000000e54f036576a10597e0e42cc22a5159ce572f999c33975e121d4d"))
196  ( 523930, uint256S("0x0000000000000bccdb11c2b1cfb0ecab452abf267d89b7f46eaf2d54ce6e652c"))
197  ( 750000, uint256S("0x00000000000000b4181bbbdddbae464ce11fede5d0292fb63fdede1e7c8ab21c")),
198  1507424630, // * UNIX timestamp of last checkpoint block
199  3701128, // * total number of transactions between genesis and last checkpoint
200  // (the tx=... number in the SetBestChain debug.log lines)
201  5000 // * estimated number of transactions per day after checkpoint
202  };
203  }
204 };
206 
210 class CTestNetParams : public CChainParams {
211 public:
213  strNetworkID = "test";
215  consensus.nMasternodePaymentsStartBlock = 4010; // not true, but it's ok as long as it's less then nMasternodePaymentsIncreaseBlock
223  consensus.nSuperblockStartBlock = 4200; // NOTE: Should satisfy nSuperblockStartBlock > nBudgetPeymentsStartBlock
224  consensus.nSuperblockCycle = 24; // Superblocks can be issued hourly on testnet
232  consensus.BIP34Hash = uint256S("0x0000047d24635e347be3aaaeb66c26be94901a2f962feccd4f95090191f208c1");
233  consensus.powLimit = uint256S("00000fffff000000000000000000000000000000000000000000000000000000");
234  consensus.nPowTargetTimespan = 24 * 60 * 60; // Dash: 1 day
235  consensus.nPowTargetSpacing = 2.5 * 60; // Dash: 2.5 minutes
238  consensus.nRuleChangeActivationThreshold = 1512; // 75% for testchains
239  consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
241  consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008
242  consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008
243 
244  // Deployment of BIP68, BIP112, and BIP113.
246  consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 1506556800; // September 28th, 2017
247  consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 1538092800; // September 28th, 2018
248 
249  // Deployment of DIP0001
251  consensus.vDeployments[Consensus::DEPLOYMENT_DIP0001].nStartTime = 1505692800; // Sep 18th, 2017
252  consensus.vDeployments[Consensus::DEPLOYMENT_DIP0001].nTimeout = 1537228800; // Sep 18th, 2018
255 
256  // The best chain should have at least this much work.
257  consensus.nMinimumChainWork = uint256S("00000000000000000000000000000000000000000000000000000003cd72a542"); //4000
258 
259  // By default assume that the signatures in ancestors of this block are valid.
260  consensus.defaultAssumeValid = uint256S("00000ce22113f3eb8636e225d6a1691e132fdd587aed993e1bc9b07a0235eea4"); //4000
261 
262  pchMessageStart[0] = 0xce;
263  pchMessageStart[1] = 0xe2;
264  pchMessageStart[2] = 0xca;
265  pchMessageStart[3] = 0xff;
266  vAlertPubKey = ParseHex("04517d8a699cb43d3938d7b24faaff7cda448ca4ea267723ba614784de661949bf632d6304316b244646dea079735b9a6fc4af804efb4752075b9fe2245e14e412");
267  nDefaultPort = 19999;
268  nMaxTipAge = 0x7fffffff; // allow mining on top of old blocks for testnet
269  nDelayGetHeadersTime = 24 * 60 * 60;
270  nPruneAfterHeight = 1000;
271 
272  genesis = CreateGenesisBlock(1390666206UL, 3861367235UL, 0x1e0ffff0, 1, 50 * COIN);
274  assert(consensus.hashGenesisBlock == uint256S("0x00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c"));
275  assert(genesis.hashMerkleRoot == uint256S("0xe0028eb9648db56b1ac77cf090b99048a8007e2bb64b68f092c03c7f56a662c7"));
276 
277  vFixedSeeds.clear();
278  vSeeds.clear();
279  vSeeds.push_back(CDNSSeedData("dashdot.io", "testnet-seed.dashdot.io"));
280  vSeeds.push_back(CDNSSeedData("masternode.io", "test.dnsseed.masternode.io"));
281 
282  // Testnet Dash addresses start with 'y'
283  base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,140);
284  // Testnet Dash script addresses start with '8' or '9'
285  base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,19);
286  // Testnet private keys start with '9' or 'c' (Bitcoin defaults)
287  base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
288  // Testnet Dash BIP32 pubkeys start with 'tpub' (Bitcoin defaults)
289  base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x35)(0x87)(0xCF).convert_to_container<std::vector<unsigned char> >();
290  // Testnet Dash BIP32 prvkeys start with 'tprv' (Bitcoin defaults)
291  base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x35)(0x83)(0x94).convert_to_container<std::vector<unsigned char> >();
292 
293  // Testnet Dash BIP44 coin type is '1' (All coin's testnet default)
294  nExtCoinType = 1;
295 
296  vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test));
297 
298  fMiningRequiresPeers = true;
300  fRequireStandard = false;
301  fMineBlocksOnDemand = false;
303 
305  nFulfilledRequestExpireTime = 5*60; // fulfilled requests expire in 5 minutes
306  strSporkPubKey = "046f78dcf911fbd61910136f7f0f8d90578f68d0b3ac973b5040fb7afb501b5939f39b108b0569dca71488f5bbf498d92e4d1194f6f941307ffd95f75e76869f0e";
307 
309  boost::assign::map_list_of
310  ( 261, uint256S("0x00000c26026d0815a7e2ce4fa270775f61403c040647ff2c3091f99e894a4618"))
311  ( 1999, uint256S("0x00000052e538d27fa53693efe6fb6892a0c1d26c0235f599171c48a3cce553b1"))
312  ( 2999, uint256S("0x0000024bc3f4f4cb30d29827c13d921ad77d2c6072e586c7f60d83c2722cdcc5")),
313 
314  1462856598, // * UNIX timestamp of last checkpoint block
315  3094, // * total number of transactions between genesis and last checkpoint
316  // (the tx=... number in the SetBestChain debug.log lines)
317  500 // * estimated number of transactions per day after checkpoint
318  };
319 
320  }
321 };
323 
327 class CRegTestParams : public CChainParams {
328 public:
330  strNetworkID = "regtest";
347  consensus.nMajorityWindow = 1000;
348  consensus.BIP34Height = -1; // BIP34 has not necessarily activated on regtest
350  consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
351  consensus.nPowTargetTimespan = 24 * 60 * 60; // Dash: 1 day
352  consensus.nPowTargetSpacing = 2.5 * 60; // Dash: 2.5 minutes
355  consensus.nRuleChangeActivationThreshold = 108; // 75% for testchains
356  consensus.nMinerConfirmationWindow = 144; // Faster than normal for regtest (144 instead of 2016)
366 
367  // The best chain should have at least this much work.
369 
370  // By default assume that the signatures in ancestors of this block are valid.
372 
373  pchMessageStart[0] = 0xfc;
374  pchMessageStart[1] = 0xc1;
375  pchMessageStart[2] = 0xb7;
376  pchMessageStart[3] = 0xdc;
377  nMaxTipAge = 6 * 60 * 60; // ~144 blocks behind -> 2 x fork detection time, was 24 * 60 * 60 in bitcoin
378  nDelayGetHeadersTime = 0; // never delay GETHEADERS in regtests
379  nDefaultPort = 19994;
380  nPruneAfterHeight = 1000;
381 
382  genesis = CreateGenesisBlock(1417713337, 1096447, 0x207fffff, 1, 50 * COIN);
384  assert(consensus.hashGenesisBlock == uint256S("0x000008ca1832a4baf228eb1553c03d3a2c8e02399550dd6ea8d65cec3ef23d2e"));
385  assert(genesis.hashMerkleRoot == uint256S("0xe0028eb9648db56b1ac77cf090b99048a8007e2bb64b68f092c03c7f56a662c7"));
386 
387  vFixedSeeds.clear();
388  vSeeds.clear();
389 
390  fMiningRequiresPeers = false;
392  fRequireStandard = false;
393  fMineBlocksOnDemand = true;
395 
396  nFulfilledRequestExpireTime = 5*60; // fulfilled requests expire in 5 minutes
397 
399  boost::assign::map_list_of
400  ( 0, uint256S("0x000008ca1832a4baf228eb1553c03d3a2c8e02399550dd6ea8d65cec3ef23d2e")),
401  0,
402  0,
403  0
404  };
405  // Regtest Dash addresses start with 'y'
406  base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,140);
407  // Regtest Dash script addresses start with '8' or '9'
408  base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,19);
409  // Regtest private keys start with '9' or 'c' (Bitcoin defaults)
410  base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
411  // Regtest Dash BIP32 pubkeys start with 'tpub' (Bitcoin defaults)
412  base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x35)(0x87)(0xCF).convert_to_container<std::vector<unsigned char> >();
413  // Regtest Dash BIP32 prvkeys start with 'tprv' (Bitcoin defaults)
414  base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x35)(0x83)(0x94).convert_to_container<std::vector<unsigned char> >();
415 
416  // Regtest Dash BIP44 coin type is '1' (All coin's testnet default)
417  nExtCoinType = 1;
418  }
419 };
421 
423 
425  assert(pCurrentParams);
426  return *pCurrentParams;
427 }
428 
429 CChainParams& Params(const std::string& chain)
430 {
431  if (chain == CBaseChainParams::MAIN)
432  return mainParams;
433  else if (chain == CBaseChainParams::TESTNET)
434  return testNetParams;
435  else if (chain == CBaseChainParams::REGTEST)
436  return regTestParams;
437  else
438  throw std::runtime_error(strprintf("%s: Unknown chain %s.", __func__, chain));
439 }
440 
441 void SelectParams(const std::string& network)
442 {
443  SelectBaseParams(network);
444  pCurrentParams = &Params(network);
445 }
static CRegTestParams regTestParams
int nSuperblockCycle
Definition: params.h:55
int64_t nDelayGetHeadersTime
Definition: chainparams.h:93
uint256 defaultAssumeValid
Definition: params.h:84
int nSuperblockStartBlock
Definition: params.h:54
std::vector< SeedSpec6 > vFixedSeeds
Definition: chainparams.h:100
void SetNull()
Definition: uint256.h:41
uint256 hashMerkleRoot
Definition: block.h:26
#define strprintf
Definition: tinyformat.h:1011
int nFulfilledRequestExpireTime
Definition: chainparams.h:108
static const CAmount COIN
Definition: amount.h:16
bool fPowAllowMinDifficultyBlocks
Definition: params.h:78
int nDefaultPort
Definition: chainparams.h:91
int nGovernanceFilterElements
Definition: params.h:57
int nBudgetPaymentsWindowBlocks
Definition: params.h:52
static const std::string TESTNET
uint256 hashGenesisBlock
Definition: params.h:44
int nSubsidyHalvingInterval
Definition: params.h:45
static SeedSpec6 pnSeed6_test[]
static CTestNetParams testNetParams
CBlock genesis
Definition: chainparams.h:99
std::vector< CTxIn > vin
Definition: transaction.h:306
std::vector< unsigned char > vAlertPubKey
Raw pub key bytes for the broadcast alert signing key.
Definition: chainparams.h:90
uint32_t nTime
Definition: block.h:27
std::vector< CDNSSeedData > vSeeds
Definition: chainparams.h:95
bool fMineBlocksOnDemand
Definition: chainparams.h:104
int nGovernanceMinQuorum
Definition: params.h:56
uint32_t nRuleChangeActivationThreshold
Definition: params.h:72
std::vector< CTransaction > vtx
Definition: block.h:77
uint64_t nPruneAfterHeight
Definition: chainparams.h:94
int64_t CAmount
Definition: amount.h:14
long nMaxTipAge
Definition: chainparams.h:92
int nInstantSendKeepLock
Definition: params.h:49
uint32_t nMinerConfirmationWindow
Definition: params.h:74
uint256 hashPrevBlock
Definition: block.h:25
int nPoolMaxTransactions
Definition: chainparams.h:107
bool fPowNoRetargeting
Definition: params.h:79
int nMasternodeMinimumConfirmations
Definition: params.h:58
bool fRequireStandard
Definition: chainparams.h:103
int nBudgetProposalEstablishingTime
Definition: params.h:53
int nExtCoinType
Definition: chainparams.h:97
BIP9Deployment vDeployments[MAX_VERSION_BITS_DEPLOYMENTS]
Definition: params.h:75
int nMasternodePaymentsIncreaseBlock
Definition: params.h:47
void SelectParams(const std::string &network)
uint256 uint256S(const char *str)
Definition: uint256.h:140
int nMajorityRejectBlockOutdated
Definition: params.h:61
uint32_t nBits
Definition: block.h:28
int64_t nPowTargetSpacing
Definition: params.h:80
vector< unsigned char > ParseHex(const char *psz)
CMessageHeader::MessageStartChars pchMessageStart
Definition: chainparams.h:88
uint256 BlockMerkleRoot(const CBlock &block, bool *mutated)
Definition: merkle.cpp:154
static CMainParams mainParams
std::vector< unsigned char > base58Prefixes[MAX_BASE58_TYPES]
Definition: chainparams.h:96
int nMajorityEnforceBlockUpgrade
Definition: params.h:60
static CChainParams * pCurrentParams
std::vector< CTxOut > vout
Definition: transaction.h:307
int nBudgetPaymentsCycleBlocks
Definition: params.h:51
std::string strSporkPubKey
Definition: chainparams.h:109
int64_t nPowTargetTimespan
Definition: params.h:81
bool fDefaultConsistencyChecks
Definition: chainparams.h:102
uint256 nMinimumChainWork
Definition: params.h:83
#define ARRAYLEN(array)
uint32_t nNonce
Definition: block.h:29
int nMasternodePaymentsIncreasePeriod
Definition: params.h:48
Consensus::Params consensus
Definition: chainparams.h:87
const CChainParams & Params()
int32_t nVersion
Definition: block.h:24
bool fTestnetToBeDeprecatedFieldRPC
Definition: chainparams.h:105
uint256 powLimit
Definition: params.h:77
static const std::string MAIN
bool fMiningRequiresPeers
Definition: chainparams.h:101
int nMajorityWindow
Definition: params.h:62
int nMasternodePaymentsStartBlock
Definition: params.h:46
CCheckpointData checkpointData
Definition: chainparams.h:106
uint256 BIP34Hash
Definition: params.h:65
std::string strNetworkID
Definition: chainparams.h:98
void SelectBaseParams(const std::string &chain)
Definition: block.h:73
static SeedSpec6 pnSeed6_main[]
uint256 GetHash() const
Definition: block.cpp:13
int nBudgetPaymentsStartBlock
Definition: params.h:50
static CBlock CreateGenesisBlock(const char *pszTimestamp, const CScript &genesisOutputScript, uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const CAmount &genesisReward)
Definition: chainparams.cpp:20
static const std::string REGTEST