PIVX Core  5.6.99
P2P Digital Currency
chainparams.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2015 The Bitcoin developers
3 // Copyright (c) 2014-2015 The Dash developers
4 // Copyright (c) 2015-2022 The PIVX Core developers
5 // Distributed under the MIT software license, see the accompanying
6 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
7 
8 #ifndef PIVX_CHAINPARAMS_H
9 #define PIVX_CHAINPARAMS_H
10 
11 #include "chainparamsbase.h"
12 #include "consensus/params.h"
13 #include "primitives/block.h"
14 #include "protocol.h"
15 #include "uint256.h"
16 
17 #include <memory>
18 #include <vector>
19 
20 struct CDNSSeedData {
21  std::string host;
23  explicit CDNSSeedData(const std::string& strHost, bool supportsServiceBitsFilteringIn = false) : host(strHost), supportsServiceBitsFiltering(supportsServiceBitsFilteringIn) {}
24 };
25 
26 typedef std::map<int, uint256> MapCheckpoints;
27 
33 };
34 
43 {
44 public:
45  virtual ~CChainParams() {}
46  enum Base58Type {
49  SECRET_KEY, // BIP16
50  EXT_PUBLIC_KEY, // BIP32
51  EXT_SECRET_KEY, // BIP32
52  EXT_COIN_TYPE, // BIP44
55 
57  };
58 
59  enum Bech32Type {
65 
68 
70  };
71 
72  const Consensus::Params& GetConsensus() const { return consensus; }
74  int GetDefaultPort() const { return nDefaultPort; }
75 
76  const CBlock& GenesisBlock() const { return genesis; }
78  bool RequireStandard() const { return fRequireStandard; }
82  bool IsTestChain() const { return IsTestnet() || IsRegTestNet(); }
84  bool MiningRequiresPeers() const { return !IsRegTestNet(); }
86  bool HeadersFirstSyncingActive() const { return false; };
88  bool DefaultConsistencyChecks() const { return IsRegTestNet(); }
89 
91  std::string NetworkIDString() const { return strNetworkID; }
92  const std::vector<CDNSSeedData>& DNSSeeds() const { return vSeeds; }
93  const std::vector<unsigned char>& Base58Prefix(Base58Type type) const { return base58Prefixes[type]; }
94  const std::string& Bech32HRP(Bech32Type type) const { return bech32HRPs[type]; }
95  const std::vector<uint8_t>& FixedSeeds() const { return vFixedSeeds; }
96  virtual const CCheckpointData& Checkpoints() const = 0;
97 
99  bool IsTestnet() const { return NetworkIDString() == CBaseChainParams::TESTNET; }
100 
103 
104  void UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex idx, int nActivationHeight);
105 protected:
107 
108  std::string strNetworkID;
113  std::vector<CDNSSeedData> vSeeds;
114  std::vector<unsigned char> base58Prefixes[MAX_BASE58_TYPES];
116  std::vector<uint8_t> vFixedSeeds;
118 
119  // Tier two
122 };
123 
129 std::unique_ptr<CChainParams> CreateChainParams(const std::string& chain);
130 
135 const CChainParams& Params();
136 
141 void SelectParams(const std::string& chain);
142 
146 void UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex idx, int nActivationHeight);
147 
148 #endif // PIVX_CHAINPARAMS_H
void UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex idx, int nActivationHeight)
Allows modifying the network upgrade regtest parameters.
void SelectParams(const std::string &chain)
Sets the params returned by Params() to those for the given chain name.
std::map< int, uint256 > MapCheckpoints
Definition: chainparams.h:26
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.
static const std::string REGTEST
static const std::string TESTNET
Definition: block.h:80
CChainParams defines various tweakable parameters of a given instance of the PIVX system.
Definition: chainparams.h:43
int FulfilledRequestExpireTime() const
Tier two requests blockage mark expiration time.
Definition: chainparams.h:102
bool MiningRequiresPeers() const
Make miner wait to have peers to avoid wasting work.
Definition: chainparams.h:84
const std::vector< unsigned char > & Base58Prefix(Base58Type type) const
Definition: chainparams.h:93
bool DefaultConsistencyChecks() const
Default value for -checkmempool and -checkblockindex argument.
Definition: chainparams.h:88
virtual ~CChainParams()
Definition: chainparams.h:45
int LLMQConnectionRetryTimeout() const
How long to wait until we allow retrying of a LLMQ connection
Definition: chainparams.h:80
std::string NetworkIDString() const
Return the network string.
Definition: chainparams.h:91
CBlock genesis
Definition: chainparams.h:109
int GetDefaultPort() const
Definition: chainparams.h:74
bool RequireStandard() const
Policy: Filter transactions that do not match well-defined patterns.
Definition: chainparams.h:78
const std::vector< CDNSSeedData > & DNSSeeds() const
Definition: chainparams.h:92
const CMessageHeader::MessageStartChars & MessageStart() const
Definition: chainparams.h:73
int nLLMQConnectionRetryTimeout
Definition: chainparams.h:120
const std::string & Bech32HRP(Bech32Type type) const
Definition: chainparams.h:94
std::vector< uint8_t > vFixedSeeds
Definition: chainparams.h:116
@ SAPLING_PAYMENT_ADDRESS
Definition: chainparams.h:60
@ SAPLING_EXTENDED_SPEND_KEY
Definition: chainparams.h:63
@ SAPLING_EXTENDED_FVK
Definition: chainparams.h:64
@ SAPLING_INCOMING_VIEWING_KEY
Definition: chainparams.h:62
@ SAPLING_FULL_VIEWING_KEY
Definition: chainparams.h:61
int nFulfilledRequestExpireTime
Definition: chainparams.h:121
std::string strNetworkID
Definition: chainparams.h:108
virtual const CCheckpointData & Checkpoints() const =0
std::vector< unsigned char > base58Prefixes[MAX_BASE58_TYPES]
Definition: chainparams.h:114
bool IsTestChain() const
If this chain is exclusively used for testing.
Definition: chainparams.h:82
std::vector< CDNSSeedData > vSeeds
Definition: chainparams.h:113
void UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex idx, int nActivationHeight)
Definition: chainparams.cpp:38
Consensus::Params consensus
Definition: chainparams.h:110
const std::vector< uint8_t > & FixedSeeds() const
Definition: chainparams.h:95
const Consensus::Params & GetConsensus() const
Definition: chainparams.h:72
bool fRequireStandard
Definition: chainparams.h:117
std::string bech32HRPs[MAX_BECH32_TYPES]
Definition: chainparams.h:115
bool IsTestnet() const
Definition: chainparams.h:99
bool IsRegTestNet() const
Definition: chainparams.h:98
bool HeadersFirstSyncingActive() const
Headers first syncing is disabled.
Definition: chainparams.h:86
CMessageHeader::MessageStartChars pchMessageStart
Definition: chainparams.h:111
const CBlock & GenesisBlock() const
Definition: chainparams.h:76
unsigned char MessageStartChars[MESSAGE_START_SIZE]
Definition: protocol.h:40
UpgradeIndex
Index into Params.vUpgrades and NetworkUpgradeInfo.
Definition: params.h:26
double fTransactionsPerDay
Definition: chainparams.h:32
int64_t nTransactionsLastCheckpoint
Definition: chainparams.h:31
int64_t nTimeLastCheckpoint
Definition: chainparams.h:30
const MapCheckpoints * mapCheckpoints
Definition: chainparams.h:29
CDNSSeedData(const std::string &strHost, bool supportsServiceBitsFilteringIn=false)
Definition: chainparams.h:23
std::string host
Definition: chainparams.h:21
bool supportsServiceBitsFiltering
Definition: chainparams.h:22
Parameters that influence chain consensus.
Definition: params.h:171