17 static CBlock CreateGenesisBlock(
const char* pszTimestamp,
const CScript& genesisOutputScript, uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion,
const CAmount& genesisReward)
23 txNew.
vin[0].scriptSig =
CScript() << 486604799 <<
CScriptNum(4) << std::vector<unsigned char>((
const unsigned char*)pszTimestamp, (
const unsigned char*)pszTimestamp + strlen(pszTimestamp));
24 txNew.
vout[0].nValue = genesisReward;
25 txNew.
vout[0].scriptPubKey = genesisOutputScript;
28 genesis.
vtx.push_back(std::make_shared<const CTransaction>(std::move(txNew)));
31 genesis.
nTime = nTime;
32 genesis.
nBits = nBits;
55 static CBlock CreateGenesisBlock(uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion,
const CAmount& genesisReward)
57 const char* pszTimestamp =
"U.S. News & World Report Jan 28 2016 With His Absence, Trump Dominates Another Debate";
58 const CScript genesisOutputScript =
CScript() <<
ParseHex(
"04c10e83b2703ccf322f7dbd62dd5855ac7c10bd055814ce121ba32607d573b8810c02c0582aed05b4deb9c4b77b26d92428c61256cd42774babea0a073b2ed0c9") <<
OP_CHECKSIG;
59 return CreateGenesisBlock(pszTimestamp, genesisOutputScript, nTime, nNonce, nBits, nVersion, genesisReward);
72 .dkgMiningWindowStart = 10,
73 .dkgMiningWindowEnd = 15,
74 .dkgBadVotesThreshold = 2,
76 .signingActiveQuorumCount = 2,
78 .keepOldConnections = 3,
81 .cacheDkgInterval = 60,
93 .dkgMiningWindowStart = 30,
94 .dkgMiningWindowEnd = 40,
95 .dkgBadVotesThreshold = 40,
97 .signingActiveQuorumCount = 24,
99 .keepOldConnections = 25,
100 .recoveryMembers = 25,
102 .cacheDkgInterval = 600,
107 .name =
"llmq_400_60",
112 .dkgInterval = 60 * 12,
113 .dkgPhaseBlocks = 10,
114 .dkgMiningWindowStart = 50,
115 .dkgMiningWindowEnd = 70,
116 .dkgBadVotesThreshold = 300,
118 .signingActiveQuorumCount = 4,
120 .keepOldConnections = 5,
121 .recoveryMembers = 100,
123 .cacheDkgInterval = 60 * 12 * 10,
129 .name =
"llmq_400_85",
134 .dkgInterval = 60 * 24,
135 .dkgPhaseBlocks = 10,
136 .dkgMiningWindowStart = 50,
137 .dkgMiningWindowEnd = 70,
138 .dkgBadVotesThreshold = 300,
140 .signingActiveQuorumCount = 4,
142 .keepOldConnections = 5,
143 .recoveryMembers = 100,
145 .cacheDkgInterval = 60 * 24 * 10,
159 { 259201,
uint256S(
"1c9121bf9329a6234bfd1ea2d91515f19cd96990725265253f4b164283ade5dd")},
160 { 424998,
uint256S(
"f31e381eedb0ed3ed65fcc98cc71f36012bee32e8efd017c4f9fb0620fd35f6b")},
161 { 616764,
uint256S(
"29dd0bd1c59484f290896687b4ffb6a49afa5c498caf61967c69a541f8191557")},
162 { 623933,
uint256S(
"c7aafa648a0f1450157dc93bd4d7448913a85b7448f803b4ab970d91fc2a7da7")},
163 { 791150,
uint256S(
"8e76f462e4e82d1bd21cb72e1ce1567d4ddda2390f26074ffd1f5d9c270e5e50")},
164 { 795000,
uint256S(
"4423cceeb9fd574137a18733416275a70fdf95283cc79ad976ca399aa424a443")},
165 { 863787,
uint256S(
"5b2482eca24caf2a46bb22e0545db7b7037282733faa3a42ec20542509999a64")},
166 { 863795,
uint256S(
"2ad866818c4866e0d555181daccc628056216c0db431f88a825e84ed4f469067")},
167 { 863805,
uint256S(
"a755bd9a22b63c70d3db474f4b2b61a1f86c835b290a081bb3ec1ba2103eb4cb")},
168 { 867733,
uint256S(
"03b26296bf693de5782c76843d2fb649cb66d4b05550c6a79c047ff7e1c3ae15")},
169 { 879650,
uint256S(
"227e1d2b738b6cd83c46d1d64617934ec899d77cee34336a56e61b71acd10bb2")},
170 { 895400,
uint256S(
"7796a0274a608fac12d400198174e50beda992c1d522e52e5b95b884bc1beac6")},
171 { 895991,
uint256S(
"d53013ed7ea5c325b9696c95e07667d6858f8ff7ee13fecfa90827bf3c9ae316")},
172 { 908000,
uint256S(
"202708f8c289b676fceb832a079ff6b308a28608339acbf7584de533619d014d")},
173 {1142400,
uint256S(
"98aff9d605bf123247f98b1e3a02567eb5799d208d78ec30fb89737b1c1f79c5")},
174 {1679090,
uint256S(
"f747ce055ba1b12e1f2e842bd480bc647210799359cb2e553ab292065e3419d6")},
175 {1686229,
uint256S(
"bb42bf1e886a7c23474634c90893dd3d68a6ccbfea4ac92a98da5cad0c6a6cb7")},
176 {1778954,
uint256S(
"0d3241268264a2908d6babf00d9cd1ffb83d93d7bb4e428820127fe227c2029c")},
177 {1788528,
uint256S(
"ea9243ff8fc079fdd7a04f11fac415de4d98e1bb0dc38db6f79f8f8bbfdbe496")},
178 {2153200,
uint256S(
"14e477e597d24549cac5e59d97d32155e6ec2861c1003b42d0566f9bf39b65d5")},
179 {2356049,
uint256S(
"62e80d8e193bca84655fb78893b20f54a79f2d71124c4ea37b7ef51a0d5451c4")},
180 {2365700,
uint256S(
"b5d0beead57735539abc2db2b0b08cd65db3e5928efd3c3bf3182d5bf013f36c")},
181 {2678402,
uint256S(
"580a26ff0a45177a7a6f387f009c5b26140ea48b4790a857d9a796f8b3c25899")},
182 {3014000,
uint256S(
"78ad99b7225f73c42238bd7ca841ff700542b92bba75a0ef2ed351caa560f87f")},
183 {3024000,
uint256S(
"be4bc75afcfb9136924810f7483b2695089a366cc4ee27fd6dc3ecd5396e1f0f")},
184 {3715200,
uint256S(
"a676b9a598c393c82b949c37dd35013aeda55f5d18ab062349db6a8235972aaa")},
201 &mapCheckpointsTestnet,
208 &mapCheckpointsRegtest,
220 genesis = CreateGenesisBlock(1454124731, 2402015, 0x1e0ffff0, 1, 250 * COIN);
250 consensus.
strSporkPubKey =
"0410050aa740d280b134b40b40658781fc1116ba7700764e0ce27af3e1737586b3257d19232e0cb5084947f5107e44bcd577f126c9eb4a30ea2807b271d2145298";
251 consensus.
strSporkPubKeyOld =
"040F129DE6546FE405995329A887329BED4321325B1A73B0A257423C05C1FCFE9E40EF0678AEF59036A22C42E61DFD29DF7EFB09F56CC73CADF64E05741880E3E7";
265 consensus.
ZC_Modulus =
"25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784"
266 "4069182906412495150821892985591491761845028084891200728449926873928072877767359714183472702618963750149718246911"
267 "6507761337985909570009733045974880842840179742910064245869181719511874612151517265463228221686998754918242243363"
268 "7259085141865462043576798423387184774447920739934236584823824281198163815010674810451660377306056201619676256133"
269 "8441436038339044149526344321901146575444541784240209246165157233507787077498171257724679629263863563732899121548"
270 "31438167899885040445364023527381951378636564391212010397122822120720357";
301 uint256S(
"0x5b2482eca24caf2a46bb22e0545db7b7037282733faa3a42ec20542509999a64");
303 uint256S(
"0x37ea75fe1c9314171cff429a91b25b9f11331076d1c9de50ee4054d61877f8af");
305 uint256S(
"0x82629b7a9978f5c7ea3f70a12db92633a7d2e436711500db28b97efd48b1e527");
307 uint256S(
"0xe2448b76d88d37aba4194ffed1041b680d779919157ddf5cbf423373d7f8078e");
309 uint256S(
"0x0ef2556e40f3b9f6e02ce611b832e0bbfe7734a8ea751c7b555310ee49b61456");
311 uint256S(
"0x14e477e597d24549cac5e59d97d32155e6ec2861c1003b42d0566f9bf39b65d5");
325 vSeeds.emplace_back(
"pivx.seed.fuzzbawls.pw",
true);
326 vSeeds.emplace_back(
"pivx.seed2.fuzzbawls.pw",
true);
327 vSeeds.emplace_back(
"dnsseed.liquid369.wtf",
true);
339 vFixedSeeds = std::vector<uint8_t>(std::begin(chainparams_seed_main), std::end(chainparams_seed_main));
384 genesis = CreateGenesisBlock(1454124731, 2402015, 0x1e0ffff0, 1, 250 * COIN);
414 consensus.
strSporkPubKey =
"04677c34726c491117265f4b1c83cef085684f36c8df5a97a3a42fc499316d0c4e63959c9eca0dba239d9aaaf72011afffeb3ef9f51b9017811dec686e412eb504";
415 consensus.
strSporkPubKeyOld =
"04E88BB455E2A04E65FCC41D88CD367E9CCE1F5A409BE94D8C2B4B35D223DED9C8E2F4E061349BA3A38839282508066B6DC4DB72DD432AC4067991E6BF20176127";
426 consensus.
ZC_Modulus =
"25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784"
427 "4069182906412495150821892985591491761845028084891200728449926873928072877767359714183472702618963750149718246911"
428 "6507761337985909570009733045974880842840179742910064245869181719511874612151517265463228221686998754918242243363"
429 "7259085141865462043576798423387184774447920739934236584823824281198163815010674810451660377306056201619676256133"
430 "8441436038339044149526344321901146575444541784240209246165157233507787077498171257724679629263863563732899121548"
431 "31438167899885040445364023527381951378636564391212010397122822120720357";
472 vSeeds.emplace_back(
"pivx-testnet.seed.fuzzbawls.pw",
true);
473 vSeeds.emplace_back(
"pivx-testnet.seed2.fuzzbawls.pw",
true);
487 vFixedSeeds = std::vector<uint8_t>(std::begin(chainparams_seed_test), std::end(chainparams_seed_test));
530 genesis = CreateGenesisBlock(1454124731, 1, 0x207fffff, 1, 250 * COIN);
564 consensus.
strSporkPubKey =
"043969b1b0e6f327de37f297a015d37e2235eaaeeb3933deecd8162c075cee0207b13537618bde640879606001a8136091c62ec272dd0133424a178704e6e75bb7";
575 consensus.
ZC_Modulus =
"25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784"
576 "4069182906412495150821892985591491761845028084891200728449926873928072877767359714183472702618963750149718246911"
577 "6507761337985909570009733045974880842840179742910064245869181719511874612151517265463228221686998754918242243363"
578 "7259085141865462043576798423387184774447920739934236584823824281198163815010674810451660377306056201619676256133"
579 "8441436038339044149526344321901146575444541784240209246165157233507787077498171257724679629263863563732899121548"
580 "31438167899885040445364023527381951378636564391212010397122822120720357";
664 static std::unique_ptr<CChainParams> globalChainParams;
668 assert(globalChainParams);
669 return *globalChainParams;
675 return std::unique_ptr<CChainParams>(
new CMainParams());
680 throw std::runtime_error(
strprintf(
"%s: Unknown chain %s.", __func__, chain));
691 globalChainParams->UpdateNetworkUpgradeParameters(idx, nActivationHeight);
int64_t CAmount
Amount in PIV (Can be negative)
void UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex idx, int nActivationHeight)
Allows modifying the network upgrade regtest parameters.
void SelectParams(const std::string &network)
Sets the params returned by Params() to those for the given chain name.
const CChainParams & Params()
Return the currently selected parameters.
std::unique_ptr< CChainParams > CreateChainParams(const std::string &chain)
Creates and returns a std::unique_ptr<CChainParams> of the chosen chain.
std::map< int, uint256 > MapCheckpoints
void SelectBaseParams(const std::string &chain)
Sets the params returned by Params() to those for the given network.
static const std::string REGTEST
static const std::string TESTNET
static const std::string MAIN
Chain name strings.
std::vector< CTransactionRef > vtx
CChainParams defines various tweakable parameters of a given instance of the PIVX system.
int nLLMQConnectionRetryTimeout
std::vector< uint8_t > vFixedSeeds
@ SAPLING_PAYMENT_ADDRESS
@ SAPLING_EXTENDED_SPEND_KEY
@ SAPLING_INCOMING_VIEWING_KEY
@ SAPLING_FULL_VIEWING_KEY
int nFulfilledRequestExpireTime
std::vector< unsigned char > base58Prefixes[MAX_BASE58_TYPES]
std::vector< CDNSSeedData > vSeeds
void UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex idx, int nActivationHeight)
Consensus::Params consensus
std::string bech32HRPs[MAX_BECH32_TYPES]
bool IsRegTestNet() const
CMessageHeader::MessageStartChars pchMessageStart
const CCheckpointData & Checkpoints() const
const CCheckpointData & Checkpoints() const
Serialized script, used inside transaction inputs and outputs.
const CCheckpointData & Checkpoints() const
uint256 BlockMerkleRoot(const CBlock &block, bool *mutated)
UpgradeIndex
Index into Params.vUpgrades and NetworkUpgradeInfo.
A mutable version of CTransaction.
std::vector< CTxOut > vout
static constexpr int ALWAYS_ACTIVE
Special value for nActivationHeight indicating that the upgrade is always active.
int nActivationHeight
Height of the first block for which the new consensus rules will be active.
static constexpr int NO_ACTIVATION_HEIGHT
Special value for nActivationHeight indicating that the upgrade will never activate.
Optional< uint256 > hashActivationBlock
The hash of the block at height nActivationHeight, if known.
int64_t nTime_EnforceNewSporkKey
LLMQType llmqTypeChainLocks
int ZC_MinMintConfirmations
CAmount nNewMNBlockReward
int64_t nTargetTimespanV2
int64_t nPivxBadBlockTime
int64_t nProposalEstablishmentTime
NetworkUpgrade vUpgrades[MAX_NETWORK_UPGRADES]
int64_t nTime_RejectOldSporkKey
std::string strSporkPubKey
std::string strSporkPubKeyOld
int ZC_MaxPublicSpendsPerTx
unsigned int nPivxBadBlockBits
int nBudgetFeeConfirmations
int height_last_ZC_WrappedSerials
int height_last_ZC_AccumCheckpoint
int height_last_invalid_UTXO
bool fPowAllowMinDifficultyBlocks
std::map< LLMQType, LLMQParams > llmqs
uint256 uint256S(const char *str)
std::vector< unsigned char > ParseHex(const char *psz)