Bitcoin ABC  0.22.13
P2P Digital Currency
chainparams.cpp
Go to the documentation of this file.
1 // Copyright (c) 2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2016 The Bitcoin Core developers
3 // Copyright (c) 2017-2020 The Bitcoin 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 
9 #include <chainparamsconstants.h>
10 #include <chainparamsseeds.h>
11 #include <consensus/merkle.h>
12 #include <network.h>
13 #include <tinyformat.h>
14 #include <util/strencodings.h>
15 #include <util/system.h>
16 
17 #include <cassert>
18 
19 static CBlock CreateGenesisBlock(const char *pszTimestamp,
20  const CScript &genesisOutputScript,
21  uint32_t nTime, uint32_t nNonce,
22  uint32_t nBits, int32_t nVersion,
23  const Amount genesisReward) {
24  CMutableTransaction txNew;
25  txNew.nVersion = 1;
26  txNew.vin.resize(1);
27  txNew.vout.resize(1);
28  txNew.vin[0].scriptSig =
29  CScript() << 486604799 << CScriptNum(4)
30  << std::vector<uint8_t>((const uint8_t *)pszTimestamp,
31  (const uint8_t *)pszTimestamp +
32  strlen(pszTimestamp));
33  txNew.vout[0].nValue = genesisReward;
34  txNew.vout[0].scriptPubKey = genesisOutputScript;
35 
36  CBlock genesis;
37  genesis.nTime = nTime;
38  genesis.nBits = nBits;
39  genesis.nNonce = nNonce;
40  genesis.nVersion = nVersion;
41  genesis.vtx.push_back(MakeTransactionRef(std::move(txNew)));
42  genesis.hashPrevBlock.SetNull();
43  genesis.hashMerkleRoot = BlockMerkleRoot(genesis);
44  return genesis;
45 }
46 
60 CBlock CreateGenesisBlock(uint32_t nTime, uint32_t nNonce, uint32_t nBits,
61  int32_t nVersion, const Amount genesisReward) {
62  const char *pszTimestamp =
63  "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
64  const CScript genesisOutputScript =
65  CScript() << ParseHex("04678afdb0fe5548271967f1a67130b7105cd6a828e03909"
66  "a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112"
67  "de5c384df7ba0b8d578a4c702b6bf11d5f")
68  << OP_CHECKSIG;
69  return CreateGenesisBlock(pszTimestamp, genesisOutputScript, nTime, nNonce,
70  nBits, nVersion, genesisReward);
71 }
72 
76 class CMainParams : public CChainParams {
77 public:
81  // 00000000000000ce80a7e057163a4db1d5ad7b20fb6f598c9597b9665c8fb0d4 -
82  // April 1, 2012
83  consensus.BIP16Height = 173805;
84  consensus.BIP34Height = 227931;
86  "000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8");
87  // 000000000000000004c2b624ed5d7756c508d90fd0da2c7c679febfa6c4735f0
88  consensus.BIP65Height = 388381;
89  // 00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931
90  consensus.BIP66Height = 363725;
91  // 000000000000000004a1b34462cb8aeebd5799177f7a29cf28f2d1961716b5b5
92  consensus.CSVHeight = 419328;
94  "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
95  // two weeks
96  consensus.nPowTargetTimespan = 14 * 24 * 60 * 60;
97  consensus.nPowTargetSpacing = 10 * 60;
100 
101  // two days
102  consensus.nDAAHalfLife = 2 * 24 * 60 * 60;
103 
104  // nPowTargetTimespan / nPowTargetSpacing
107  .bit = 28,
108  // 95% of 2016
109  .nActivationThreshold = 1916,
110  // January 1, 2008
111  .nStartTime = 1199145601,
112  // December 31, 2008
113  .nTimeout = 1230767999,
114  };
115 
116  // The miner fund is enabled by default on mainnet.
118 
119  // The best chain should have at least this much work.
122 
123  // By default assume that the signatures in ancestors of this block are
124  // valid.
127 
128  // August 1, 2017 hard fork
129  consensus.uahfHeight = 478558;
130 
131  // November 13, 2017 hard fork
132  consensus.daaHeight = 504031;
133 
134  // November 15, 2018 hard fork
136 
137  // November 15, 2019 protocol upgrade
138  consensus.gravitonHeight = 609135;
139 
140  // May 15, 2020 12:00:00 UTC protocol upgrade
141  consensus.phononHeight = 635258;
142 
143  // Nov 15, 2020 12:00:00 UTC protocol upgrade
144  consensus.axionActivationTime = 1605441600;
145 
146  // May 15, 2021 12:00:00 UTC protocol upgrade
147  consensus.tachyonActivationTime = 1621080000;
148 
154  diskMagic[0] = 0xf9;
155  diskMagic[1] = 0xbe;
156  diskMagic[2] = 0xb4;
157  diskMagic[3] = 0xd9;
158  netMagic[0] = 0xe3;
159  netMagic[1] = 0xe1;
160  netMagic[2] = 0xf3;
161  netMagic[3] = 0xe8;
162  nDefaultPort = 8333;
163  nPruneAfterHeight = 100000;
168 
169  genesis = CreateGenesisBlock(1231006505, 2083236893, 0x1d00ffff, 1,
170  50 * COIN);
172  assert(consensus.hashGenesisBlock ==
173  uint256S("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1"
174  "b60a8ce26f"));
175  assert(genesis.hashMerkleRoot ==
176  uint256S("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b"
177  "7afdeda33b"));
178 
179  // Note that of those which support the service bits prefix, most only
180  // support a subset of possible options. This is fine at runtime as
181  // we'll fall back to using them as an addrfetch if they don't support
182  // the service bits we want, but we should get them updated to support
183  // all service bits wanted by any release ASAP to avoid it where
184  // possible.
185  // Bitcoin ABC seeder
186  vSeeds.emplace_back("seed.bitcoinabc.org");
187  // bitcoinforks seeders
188  vSeeds.emplace_back("seed-bch.bitcoinforks.org");
189  // BU backed seeder
190  vSeeds.emplace_back("btccash-seeder.bitcoinunlimited.info");
191  // Jason B. Cox
192  vSeeds.emplace_back("seeder.jasonbcox.com");
193  // Amaury SÉCHET
194  vSeeds.emplace_back("seed.deadalnix.me");
195  // BCHD
196  vSeeds.emplace_back("seed.bchd.cash");
197 
198  base58Prefixes[PUBKEY_ADDRESS] = std::vector<uint8_t>(1, 0);
199  base58Prefixes[SCRIPT_ADDRESS] = std::vector<uint8_t>(1, 5);
200  base58Prefixes[SECRET_KEY] = std::vector<uint8_t>(1, 128);
201  base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E};
202  base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4};
203  cashaddrPrefix = "bitcoincash";
204 
205  vFixedSeeds = std::vector<SeedSpec6>(
206  pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main));
207 
209  fRequireStandard = true;
210  m_is_test_chain = false;
211  m_is_mockable_chain = false;
212 
214 
215  // Data as of block
216  // 000000000000000001d2ce557406b017a928be25ee98906397d339c3f68eec5d
217  // (height 523992).
219  // UNIX timestamp of last known number of transactions.
220  1522608016,
221  // Total number of transactions between genesis and that timestamp
222  // (the tx=... number in the ChainStateFlushed debug.log lines)
223  248589038,
224  // Estimated number of transactions per second after that timestamp.
225  3.2,
226  };
227  }
228 };
229 
233 class CTestNetParams : public CChainParams {
234 public:
238  // 00000000040b4e986385315e14bee30ad876d8b47f748025b26683116d21aa65
239  consensus.BIP16Height = 514;
240  consensus.BIP34Height = 21111;
242  "0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8");
243  // 00000000007f6655f22f98e72ed80d8b06dc761d5da09df0fa1dc4be4f861eb6
244  consensus.BIP65Height = 581885;
245  // 000000002104c8c45e99a8853285a3b592602a3ccde2b832481da85e9e4ba182
246  consensus.BIP66Height = 330776;
247  // 00000000025e930139bac5c6c31a403776da130831ab85be56578f3fa75369bb
248  consensus.CSVHeight = 770112;
250  "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
251  // two weeks
252  consensus.nPowTargetTimespan = 14 * 24 * 60 * 60;
253  consensus.nPowTargetSpacing = 10 * 60;
256 
257  // two days
258  consensus.nDAAHalfLife = 2 * 24 * 60 * 60;
259 
260  // nPowTargetTimespan / nPowTargetSpacing
263  .bit = 28,
264  // 75% of 2016
265  .nActivationThreshold = 1512,
266  // January 1, 2008
267  .nStartTime = 1199145601,
268  // December 31, 2008
269  .nTimeout = 1230767999,
270  };
271 
272  // The miner fund is disabled by default on testnet.
273  consensus.enableMinerFund = false;
274 
275  // The best chain should have at least this much work.
278 
279  // By default assume that the signatures in ancestors of this block are
280  // valid.
283 
284  // August 1, 2017 hard fork
285  consensus.uahfHeight = 1155875;
286 
287  // November 13, 2017 hard fork
288  consensus.daaHeight = 1188697;
289 
290  // November 15, 2018 hard fork
292 
293  // November 15, 2019 protocol upgrade
294  consensus.gravitonHeight = 1341711;
295 
296  // May 15, 2020 12:00:00 UTC protocol upgrade
297  consensus.phononHeight = 1378460;
298 
299  // Nov 15, 2020 12:00:00 UTC protocol upgrade
300  consensus.axionActivationTime = 1605441600;
301 
302  // May 15, 2021 12:00:00 UTC protocol upgrade
303  consensus.tachyonActivationTime = 1621080000;
304 
305  diskMagic[0] = 0x0b;
306  diskMagic[1] = 0x11;
307  diskMagic[2] = 0x09;
308  diskMagic[3] = 0x07;
309  netMagic[0] = 0xf4;
310  netMagic[1] = 0xe5;
311  netMagic[2] = 0xf3;
312  netMagic[3] = 0xf4;
313  nDefaultPort = 18333;
314  nPruneAfterHeight = 1000;
319 
320  genesis =
321  CreateGenesisBlock(1296688602, 414098458, 0x1d00ffff, 1, 50 * COIN);
323  assert(consensus.hashGenesisBlock ==
324  uint256S("000000000933ea01ad0ee984209779baaec3ced90fa3f408719526"
325  "f8d77f4943"));
326  assert(genesis.hashMerkleRoot ==
327  uint256S("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b"
328  "7afdeda33b"));
329 
330  vFixedSeeds.clear();
331  vSeeds.clear();
332  // nodes with support for servicebits filtering should be at the top
333  // Bitcoin ABC seeder
334  vSeeds.emplace_back("testnet-seed.bitcoinabc.org");
335  // bitcoinforks seeders
336  vSeeds.emplace_back("testnet-seed-bch.bitcoinforks.org");
337  // Amaury SÉCHET
338  vSeeds.emplace_back("testnet-seed.deadalnix.me");
339  // BCHD
340  vSeeds.emplace_back("testnet-seed.bchd.cash");
341 
342  base58Prefixes[PUBKEY_ADDRESS] = std::vector<uint8_t>(1, 111);
343  base58Prefixes[SCRIPT_ADDRESS] = std::vector<uint8_t>(1, 196);
344  base58Prefixes[SECRET_KEY] = std::vector<uint8_t>(1, 239);
345  base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
346  base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
347  cashaddrPrefix = "bchtest";
348  vFixedSeeds = std::vector<SeedSpec6>(
349  pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test));
350 
352  fRequireStandard = false;
353  m_is_test_chain = true;
354  m_is_mockable_chain = false;
355 
357 
358  // Data as of block
359  // 000000000005b07ecf85563034d13efd81c1a29e47e22b20f4fc6919d5b09cd6
360  // (height 1223263)
361  chainTxData = ChainTxData{1522608381, 15052068, 0.15};
362  }
363 };
364 
368 class CRegTestParams : public CChainParams {
369 public:
373  // always enforce P2SH BIP16 on regtest
375  // BIP34 activated on regtest (Used in functional tests)
376  consensus.BIP34Height = 500;
378  // BIP65 activated on regtest (Used in functional tests)
379  consensus.BIP65Height = 1351;
380  // BIP66 activated on regtest (Used in functional tests)
381  consensus.BIP66Height = 1251;
382  // CSV activated on regtest (Used in functional tests)
383  consensus.CSVHeight = 576;
385  "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
386  // two weeks
387  consensus.nPowTargetTimespan = 14 * 24 * 60 * 60;
388  consensus.nPowTargetSpacing = 10 * 60;
391 
392  // two days
393  consensus.nDAAHalfLife = 2 * 24 * 60 * 60;
394 
395  // Faster than normal for regtest (144 instead of 2016)
398  .bit = 28,
399  // 75% of 144
400  .nActivationThreshold = 108,
401  };
402 
403  // The miner fund is disabled by default on regnet.
404  consensus.enableMinerFund = false;
405 
406  // The best chain should have at least this much work.
408 
409  // By default assume that the signatures in ancestors of this block are
410  // valid.
412 
413  // UAHF is always enabled on regtest.
414  consensus.uahfHeight = 0;
415 
416  // November 13, 2017 hard fork is always on on regtest.
417  consensus.daaHeight = 0;
418 
419  // November 15, 2018 hard fork is always on on regtest.
421 
422  // November 15, 2019 protocol upgrade
424 
425  // May 15, 2020 12:00:00 UTC protocol upgrade
427 
428  // Nov 15, 2020 12:00:00 UTC protocol upgrade
429  consensus.axionActivationTime = 1605441600;
430 
431  // May 15, 2021 12:00:00 UTC protocol upgrade
432  consensus.tachyonActivationTime = 1621080000;
433 
434  diskMagic[0] = 0xfa;
435  diskMagic[1] = 0xbf;
436  diskMagic[2] = 0xb5;
437  diskMagic[3] = 0xda;
438  netMagic[0] = 0xda;
439  netMagic[1] = 0xb5;
440  netMagic[2] = 0xbf;
441  netMagic[3] = 0xfa;
442  nDefaultPort = 18444;
443  nPruneAfterHeight = 1000;
446 
447  genesis = CreateGenesisBlock(1296688602, 2, 0x207fffff, 1, 50 * COIN);
449  assert(consensus.hashGenesisBlock ==
450  uint256S("0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b"
451  "1a11466e2206"));
452  assert(genesis.hashMerkleRoot ==
453  uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab212"
454  "7b7afdeda33b"));
455 
457  vFixedSeeds.clear();
459  vSeeds.clear();
460 
462  fRequireStandard = true;
463  m_is_test_chain = true;
464  m_is_mockable_chain = true;
465 
467 
468  chainTxData = ChainTxData{0, 0, 0};
469 
470  base58Prefixes[PUBKEY_ADDRESS] = std::vector<uint8_t>(1, 111);
471  base58Prefixes[SCRIPT_ADDRESS] = std::vector<uint8_t>(1, 196);
472  base58Prefixes[SECRET_KEY] = std::vector<uint8_t>(1, 239);
473  base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
474  base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
475  cashaddrPrefix = "bchreg";
476  }
477 };
478 
479 static std::unique_ptr<CChainParams> globalChainParams;
480 
482  assert(globalChainParams);
483  return *globalChainParams;
484 }
485 
486 std::unique_ptr<CChainParams> CreateChainParams(const std::string &chain) {
487  if (chain == CBaseChainParams::MAIN) {
488  return std::make_unique<CMainParams>();
489  }
490 
491  if (chain == CBaseChainParams::TESTNET) {
492  return std::make_unique<CTestNetParams>();
493  }
494 
495  if (chain == CBaseChainParams::REGTEST) {
496  return std::make_unique<CRegTestParams>();
497  }
498 
499  throw std::runtime_error(
500  strprintf("%s: Unknown chain %s.", __func__, chain));
501 }
502 
503 void SelectParams(const std::string &network) {
504  SelectBaseParams(network);
506 }
uint32_t nNonce
Definition: block.h:30
int uahfHeight
Block height at which UAHF kicks in.
Definition: params.h:74
const uint64_t TESTNET_ASSUMED_BLOCKCHAIN_SIZE
const uint64_t MAINNET_ASSUMED_CHAINSTATE_SIZE
BlockHash hashGenesisBlock
Definition: params.h:60
void SetNull()
Definition: uint256.h:35
Main network.
Definition: chainparams.cpp:76
int64_t nPowTargetTimespan
Definition: params.h:105
bool fPowNoRetargeting
Definition: params.h:102
static const std::string REGTEST
Definition: block.h:62
#define strprintf
Format arguments and return the string or write to given std::ostream (see tinyformat::format doc for...
Definition: tinyformat.h:1201
#define ARRAYLEN(array)
Utilities for converting data from/to strings.
Definition: strencodings.h:19
static CTransactionRef MakeTransactionRef()
Definition: transaction.h:339
BlockHash defaultAssumeValid
Definition: params.h:110
Definition: amount.h:17
bool fPowAllowMinDifficultyBlocks
Definition: params.h:101
int BIP66Height
Block height at which BIP66 becomes active.
Definition: params.h:70
const BlockHash MAINNET_DEFAULT_ASSUME_VALID
uint64_t m_assumed_chain_state_size
Definition: chainparams.h:106
static SeedSpec6 pnSeed6_test[]
std::vector< CTxOut > vout
Definition: transaction.h:300
CChainParams defines various tweakable parameters of a given instance of the Bitcoin system...
Definition: chainparams.h:47
const CCheckpointData & CheckpointData(const std::string &chain)
Definition: checkpoints.cpp:99
CBlock genesis
Definition: chainparams.h:111
int CSVHeight
Block height at which CSV (BIP68, BIP112 and BIP113) becomes active.
Definition: params.h:72
const uint256 TESTNET_MINIMUM_CHAIN_WORK
int daaHeight
Block height at which the new DAA becomes active.
Definition: params.h:76
uint32_t nTime
Definition: block.h:28
int phononHeight
Block height at which the phonon activation becomes active.
Definition: params.h:82
ChainTxData chainTxData
Definition: chainparams.h:118
static const std::string MAIN
BIP70 chain name strings (main, test or regtest)
uint64_t m_assumed_blockchain_size
Definition: chainparams.h:105
int nSubsidyHalvingInterval
Definition: params.h:61
std::vector< CTxIn > vin
Definition: transaction.h:299
bool enableMinerFund
Enable or disable the miner fund by default.
Definition: params.h:97
const uint64_t MAINNET_ASSUMED_BLOCKCHAIN_SIZE
uint256 powLimit
Proof of work parameters.
Definition: params.h:100
int BIP16Height
Block height at which BIP16 becomes active.
Definition: params.h:63
static constexpr Amount COIN
Definition: amount.h:153
uint256 hashMerkleRoot
Definition: block.h:27
const bool ENABLE_MINER_FUND
Definition: network.cpp:9
std::unique_ptr< CChainParams > CreateChainParams(const std::string &chain)
Creates and returns a std::unique_ptr<CChainParams> of the chosen chain.
std::vector< uint8_t > base58Prefixes[MAX_BASE58_TYPES]
Definition: chainparams.h:108
bool fRequireStandard
Definition: chainparams.h:114
void SelectParams(const std::string &network)
Sets the params returned by Params() to those for the given BIP70 chain name.
int BIP34Height
Block height and hash at which BIP34 becomes active.
Definition: params.h:65
const uint256 MAINNET_MINIMUM_CHAIN_WORK
uint256 uint256S(const char *str)
uint256 from const char *.
Definition: uint256.h:131
Regression test.
int64_t nPowTargetSpacing
Definition: params.h:104
int gravitonHeight
Block height at which the graviton activation becomes active.
Definition: params.h:80
Holds various statistics on transactions within a chain.
Definition: chainparams.h:34
int axionActivationTime
Unix time used for MTP activation of 15 Nov 2020 12:00:00 UTC upgrade.
Definition: params.h:84
std::vector< std::string > vSeeds
Definition: chainparams.h:107
static BlockHash fromHex(const std::string &str)
Definition: blockhash.h:17
uint256 BlockMerkleRoot(const CBlock &block, bool *mutated)
Compute the Merkle root of the transactions in a block.
Definition: merkle.cpp:69
bool m_is_mockable_chain
Definition: chainparams.h:116
uint32_t nMinerConfirmationWindow
Definition: params.h:93
const uint64_t TESTNET_ASSUMED_CHAINSTATE_SIZE
int BIP65Height
Block height at which BIP65 becomes active.
Definition: params.h:68
Testnet (v3)
const BlockHash TESTNET_DEFAULT_ASSUME_VALID
uint256 nMinimumChainWork
Definition: params.h:109
std::vector< CTransactionRef > vtx
Definition: block.h:65
std::vector< SeedSpec6 > vFixedSeeds
Definition: chainparams.h:112
A BlockHash is a unqiue identifier for a block.
Definition: blockhash.h:13
const CChainParams & Params()
Return the currently selected parameters.
BlockHash GetHash() const
Definition: block.cpp:11
Serialized script, used inside transaction inputs and outputs.
Definition: script.h:430
Consensus::Params consensus
Definition: chainparams.h:100
std::vector< uint8_t > ParseHex(const char *psz)
A mutable version of CTransaction.
Definition: transaction.h:297
std::string strNetworkID
Definition: chainparams.h:110
CMessageHeader::MessageMagic diskMagic
Definition: chainparams.h:101
static const std::string TESTNET
BlockHash BIP34Hash
Definition: params.h:66
uint64_t nPruneAfterHeight
Definition: chainparams.h:104
int magneticAnomalyHeight
Block height at which the magnetic anomaly activation becomes active.
Definition: params.h:78
bool m_is_test_chain
Definition: chainparams.h:115
int bit
Bit position to select the particular bit in nVersion.
Definition: params.h:28
CCheckpointData checkpointData
Definition: chainparams.h:117
void SelectBaseParams(const std::string &chain)
Sets the params returned by Params() to those for the given network.
static SeedSpec6 pnSeed6_main[]
List of fixed seed nodes for the bitcoin network by contrib/seeds/generate-seeds.py.
CMessageHeader::MessageMagic netMagic
Definition: chainparams.h:102
int64_t nDAAHalfLife
Definition: params.h:103
int32_t nVersion
Definition: block.h:25
int tachyonActivationTime
Unix time used for MTP activation of 15 May 2021 12:00:00 UTC upgrade.
Definition: params.h:86
static std::unique_ptr< CChainParams > globalChainParams
std::string cashaddrPrefix
Definition: chainparams.h:109
BlockHash hashPrevBlock
Definition: block.h:26
static CBlock CreateGenesisBlock(const char *pszTimestamp, const CScript &genesisOutputScript, uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const Amount genesisReward)
Definition: chainparams.cpp:19
bool fDefaultConsistencyChecks
Definition: chainparams.h:113
BIP9Deployment vDeployments[MAX_VERSION_BITS_DEPLOYMENTS]
Definition: params.h:94
uint32_t nBits
Definition: block.h:29