42 txNew.
vin[0].scriptSig =
CScript() << 486604799 <<
CScriptNum(4) << std::vector<unsigned char>((
const unsigned char*)pszTimestamp, (
const unsigned char*)pszTimestamp + strlen(pszTimestamp));
43 txNew.
vout[0].nValue = genesisReward;
44 txNew.
vout[0].scriptPubKey = genesisOutputScript;
47 genesis.
nTime = nTime;
48 genesis.
nBits = nBits;
70 const char* pszTimestamp =
"The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
71 const CScript genesisOutputScript =
CScript() <<
"04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f"_hex <<
OP_CHECKSIG;
72 return CreateGenesisBlock(pszTimestamp, genesisOutputScript, nTime, nNonce, nBits, nVersion, genesisReward);
82 consensus.signet_blocks =
false;
83 consensus.signet_challenge.clear();
84 consensus.nSubsidyHalvingInterval = 210000;
85 consensus.script_flag_exceptions.emplace(
87 consensus.script_flag_exceptions.emplace(
89 consensus.BIP34Height = 227931;
90 consensus.BIP34Hash =
uint256{
"000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8"};
91 consensus.BIP65Height = 388381;
92 consensus.BIP66Height = 363725;
93 consensus.CSVHeight = 419328;
94 consensus.SegwitHeight = 481824;
95 consensus.MinBIP9WarningHeight = 483840;
96 consensus.powLimit =
uint256{
"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"};
97 consensus.nPowTargetTimespan = 14 * 24 * 60 * 60;
98 consensus.nPowTargetSpacing = 10 * 60;
99 consensus.fPowAllowMinDifficultyBlocks =
false;
100 consensus.enforce_BIP94 =
false;
101 consensus.fPowNoRetargeting =
false;
117 consensus.nMinimumChainWork =
uint256{
"0000000000000000000000000000000000000001128750f82f4c366153a3a030"};
118 consensus.defaultAssumeValid =
uint256{
"00000000000000000000ccebd6d74d9194d8dcdc1d177c478e094bfad51ba5ac"};
125 pchMessageStart[0] = 0xf9;
126 pchMessageStart[1] = 0xbe;
127 pchMessageStart[2] = 0xb4;
128 pchMessageStart[3] = 0xd9;
130 nPruneAfterHeight = 100000;
131 m_assumed_blockchain_size = 856;
132 m_assumed_chain_state_size = 14;
135 consensus.hashGenesisBlock = genesis.GetHash();
136 assert(consensus.hashGenesisBlock ==
uint256{
"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"});
137 assert(genesis.hashMerkleRoot ==
uint256{
"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"});
144 vSeeds.emplace_back(
"seed.bitcoin.sipa.be.");
145 vSeeds.emplace_back(
"dnsseed.bluematt.me.");
146 vSeeds.emplace_back(
"seed.bitcoin.jonasschnelli.ch.");
147 vSeeds.emplace_back(
"seed.btc.petertodd.net.");
148 vSeeds.emplace_back(
"seed.bitcoin.sprovoost.nl.");
149 vSeeds.emplace_back(
"dnsseed.emzy.de.");
150 vSeeds.emplace_back(
"seed.bitcoin.wiz.biz.");
151 vSeeds.emplace_back(
"seed.mainnet.achownodes.xyz.");
153 base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,0);
154 base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,5);
155 base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,128);
156 base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E};
157 base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4};
163 fDefaultConsistencyChecks =
false;
164 m_is_mockable_chain =
false;
166 m_assumeutxo_data = {
169 .hash_serialized = AssumeutxoHash{uint256{"a2a5521b1b5ab65f67818e5e8eccabb7171a517f9e2382208f77687310768f96"}}, 170 .m_chain_tx_count = 991032194, 171 .blockhash = uint256{"0000000000000000000320283a032748cef8227873ff4872689bf23f1cda83a5"}, 175 .hash_serialized =
AssumeutxoHash{
uint256{
"dbd190983eaf433ef7c15f78a278ae42c00ef52e0fd2a54953782175fbadcea9"}},
176 .m_chain_tx_count = 1145604538,
177 .blockhash =
uint256{
"000000000000000000010b17283c3c400507969a9c2afd1dcf2082ec5cca2880"},
181 .hash_serialized = AssumeutxoHash{uint256{"4daf8a17b4902498c5787966a2b51c613acdab5df5db73f196fa59a4da2f1568"}}, 182 .m_chain_tx_count = 1226586151, 183 .blockhash = uint256{"0000000000000000000108970acb9522ffd516eae17acddcb1bd16469194a821"}, 187 .hash_serialized =
AssumeutxoHash{
uint256{
"e4b90ef9eae834f56c4b64d2d50143cee10ad87994c614d7d04125e2a6025050"}},
188 .m_chain_tx_count = 1305397408,
189 .blockhash =
uint256{
"0000000000000000000147034958af1652b2b91bba607beacc5e72a56f0fb5ee"},
196 .tx_count = 1315805869,
197 .dTxRate = 5.40111006496122,
203 .redownload_buffer_size = 15218,
215 consensus.signet_blocks =
false;
216 consensus.signet_challenge.clear();
217 consensus.nSubsidyHalvingInterval = 210000;
218 consensus.script_flag_exceptions.emplace(
220 consensus.BIP34Height = 21111;
221 consensus.BIP34Hash =
uint256{
"0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8"};
222 consensus.BIP65Height = 581885;
223 consensus.BIP66Height = 330776;
224 consensus.CSVHeight = 770112;
225 consensus.SegwitHeight = 834624;
226 consensus.MinBIP9WarningHeight = 836640;
227 consensus.powLimit =
uint256{
"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"};
228 consensus.nPowTargetTimespan = 14 * 24 * 60 * 60;
229 consensus.nPowTargetSpacing = 10 * 60;
230 consensus.fPowAllowMinDifficultyBlocks =
true;
231 consensus.enforce_BIP94 =
false;
232 consensus.fPowNoRetargeting =
false;
248 consensus.nMinimumChainWork =
uint256{
"0000000000000000000000000000000000000000000017dde1c649f3708d14b6"};
249 consensus.defaultAssumeValid =
uint256{
"000000007a61e4230b28ac5cb6b5e5a0130de37ac1faf2f8987d2fa6505b67f4"};
251 pchMessageStart[0] = 0x0b;
252 pchMessageStart[1] = 0x11;
253 pchMessageStart[2] = 0x09;
254 pchMessageStart[3] = 0x07;
255 nDefaultPort = 18333;
256 nPruneAfterHeight = 1000;
257 m_assumed_blockchain_size = 245;
258 m_assumed_chain_state_size = 19;
261 consensus.hashGenesisBlock = genesis.GetHash();
262 assert(consensus.hashGenesisBlock ==
uint256{
"000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"});
263 assert(genesis.hashMerkleRoot ==
uint256{
"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"});
268 vSeeds.emplace_back(
"testnet-seed.bitcoin.jonasschnelli.ch.");
269 vSeeds.emplace_back(
"seed.tbtc.petertodd.net.");
270 vSeeds.emplace_back(
"seed.testnet.bitcoin.sprovoost.nl.");
271 vSeeds.emplace_back(
"testnet-seed.bluematt.me.");
272 vSeeds.emplace_back(
"seed.testnet.achownodes.xyz.");
274 base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
275 base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
276 base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
277 base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
278 base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
284 fDefaultConsistencyChecks =
false;
285 m_is_mockable_chain =
false;
287 m_assumeutxo_data = {
290 .hash_serialized =
AssumeutxoHash{
uint256{
"f841584909f68e47897952345234e37fcd9128cd818f41ee6c3ca68db8071be7"}},
291 .m_chain_tx_count = 66484552,
292 .blockhash =
uint256{
"0000000000000093bcb68c03a9a168ae252572d348a2eaeba2cdf9231d73206f"},
296 .hash_serialized =
AssumeutxoHash{
uint256{
"ce6bb677bb2ee9789c4a1c9d73e6683c53fc20e8fdbedbdaaf468982a0c8db2a"}},
297 .m_chain_tx_count = 536078574,
298 .blockhash =
uint256{
"00000000000000f4971a7fb37fbdff89315b69a2e1920c467654a382f0d64786"},
305 .tx_count = 536108416,
306 .dTxRate = 0.02691479016257117,
312 .redownload_buffer_size = 14460,
324 consensus.signet_blocks =
false;
325 consensus.signet_challenge.clear();
326 consensus.nSubsidyHalvingInterval = 210000;
327 consensus.BIP34Height = 1;
328 consensus.BIP34Hash =
uint256{};
329 consensus.BIP65Height = 1;
330 consensus.BIP66Height = 1;
331 consensus.CSVHeight = 1;
332 consensus.SegwitHeight = 1;
333 consensus.MinBIP9WarningHeight = 0;
334 consensus.powLimit =
uint256{
"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"};
335 consensus.nPowTargetTimespan = 14 * 24 * 60 * 60;
336 consensus.nPowTargetSpacing = 10 * 60;
337 consensus.fPowAllowMinDifficultyBlocks =
true;
338 consensus.enforce_BIP94 =
true;
339 consensus.fPowNoRetargeting =
false;
356 consensus.nMinimumChainWork =
uint256{
"0000000000000000000000000000000000000000000009a0fe15d0177d086304"};
357 consensus.defaultAssumeValid =
uint256{
"0000000002368b1e4ee27e2e85676ae6f9f9e69579b29093e9a82c170bf7cf8a"};
359 pchMessageStart[0] = 0x1c;
360 pchMessageStart[1] = 0x16;
361 pchMessageStart[2] = 0x3f;
362 pchMessageStart[3] = 0x28;
363 nDefaultPort = 48333;
364 nPruneAfterHeight = 1000;
365 m_assumed_blockchain_size = 31;
366 m_assumed_chain_state_size = 2;
368 const char* testnet4_genesis_msg =
"03/May/2024 000000000000000000001ebd58c244970b3aa9d783bb001011fbe8ea8e98e00e";
369 const CScript testnet4_genesis_script =
CScript() <<
"000000000000000000000000000000000000000000000000000000000000000000"_hex <<
OP_CHECKSIG;
371 testnet4_genesis_script,
377 consensus.hashGenesisBlock = genesis.GetHash();
378 assert(consensus.hashGenesisBlock ==
uint256{
"00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043"});
379 assert(genesis.hashMerkleRoot ==
uint256{
"7aa0a7ae1e223414cb807e40cd57e667b718e42aaf9306db9102fe28912b7b4e"});
384 vSeeds.emplace_back(
"seed.testnet4.bitcoin.sprovoost.nl.");
385 vSeeds.emplace_back(
"seed.testnet4.wiz.biz.");
387 base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
388 base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
389 base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
390 base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
391 base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
397 fDefaultConsistencyChecks =
false;
398 m_is_mockable_chain =
false;
400 m_assumeutxo_data = {
403 .hash_serialized = AssumeutxoHash{uint256{"784fb5e98241de66fdd429f4392155c9e7db5c017148e66e8fdbc95746f8b9b5"}}, 404 .m_chain_tx_count = 11347043, 405 .blockhash = uint256{"0000000002ebe8bcda020e0dd6ccfbdfac531d2f6a81457191b99fc2df2dbe3b"}, 409 .hash_serialized =
AssumeutxoHash{
uint256{
"10b05d05ad468d0971162e1b222a4aa66caca89da2bb2a93f8f37fb29c4794b0"}},
410 .m_chain_tx_count = 14141057,
411 .blockhash =
uint256{
"000000000bd2317e51b3c5794981c35ba894ce27d3e772d5c39ecd9cbce01dc8"},
418 .tx_count = 14191421,
419 .dTxRate = 0.01848579579528412,
425 .redownload_buffer_size = 16092,
437 std::vector<uint8_t> bin;
442 bin =
"512103ad5e0edad18cb1f0fc0d28a3d4f1f3e445640337489abb10404f2d1e086be430210359ef5021964fe22d6f8e05b2463c9540ce96883fe3b278760f048f5189f2e6c452ae"_hex_v_u8;
444 vSeeds.emplace_back(
"seed.signet.bitcoin.sprovoost.nl.");
445 vSeeds.emplace_back(
"seed.signet.achownodes.xyz.");
447 consensus.nMinimumChainWork =
uint256{
"00000000000000000000000000000000000000000000000000000b463ea0a4b8"};
448 consensus.defaultAssumeValid =
uint256{
"00000008414aab61092ef93f1aacc54cf9e9f16af29ddad493b908a01ff5c329"};
449 m_assumed_blockchain_size = 24;
450 m_assumed_chain_state_size = 4;
454 .tx_count = 28676833,
455 .dTxRate = 0.06736623436338929,
459 consensus.nMinimumChainWork =
uint256{};
460 consensus.defaultAssumeValid =
uint256{};
461 m_assumed_blockchain_size = 0;
462 m_assumed_chain_state_size = 0;
472 vSeeds = *options.
seeds;
476 consensus.signet_blocks =
true;
477 consensus.signet_challenge.assign(bin.begin(), bin.end());
478 consensus.nSubsidyHalvingInterval = 210000;
479 consensus.BIP34Height = 1;
480 consensus.BIP34Hash =
uint256{};
481 consensus.BIP65Height = 1;
482 consensus.BIP66Height = 1;
483 consensus.CSVHeight = 1;
484 consensus.SegwitHeight = 1;
485 consensus.nPowTargetTimespan = 14 * 24 * 60 * 60;
486 consensus.nPowTargetSpacing = 10 * 60;
487 consensus.fPowAllowMinDifficultyBlocks =
false;
488 consensus.enforce_BIP94 =
false;
489 consensus.fPowNoRetargeting =
false;
490 consensus.MinBIP9WarningHeight = 0;
491 consensus.powLimit =
uint256{
"00000377ae000000000000000000000000000000000000000000000000000000"};
509 h << consensus.signet_challenge;
511 std::copy_n(hash.
begin(), 4, pchMessageStart.begin());
513 nDefaultPort = 38333;
514 nPruneAfterHeight = 1000;
517 consensus.hashGenesisBlock = genesis.GetHash();
518 assert(consensus.hashGenesisBlock ==
uint256{
"00000008819873e925422c1ff0f99f7cc9bbb232af63a077a480a3633bee1ef6"});
519 assert(genesis.hashMerkleRoot ==
uint256{
"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"});
521 m_assumeutxo_data = {
524 .hash_serialized = AssumeutxoHash{uint256{"fe0a44309b74d6b5883d246cb419c6221bcccf0b308c9b59b7d70783dbdf928a"}}, 525 .m_chain_tx_count = 2289496, 526 .blockhash = uint256{"0000003ca3c99aff040f2563c2ad8f8ec88bd0fd6b8f0895cfaf1ef90353a62c"}, 530 .hash_serialized =
AssumeutxoHash{
uint256{
"97267e000b4b876800167e71b9123f1529d13b14308abec2888bbd2160d14545"}},
531 .m_chain_tx_count = 28547497,
532 .blockhash =
uint256{
"0000000577f2741bb30cd9d39d6d71b023afbeb9764f6260786a97969d5c9ac0"},
536 base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
537 base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
538 base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
539 base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
540 base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
544 fDefaultConsistencyChecks =
false;
545 m_is_mockable_chain =
false;
550 .redownload_buffer_size = 15724,
565 consensus.signet_blocks =
false;
566 consensus.signet_challenge.clear();
567 consensus.nSubsidyHalvingInterval = 150;
568 consensus.BIP34Height = 1;
569 consensus.BIP34Hash =
uint256();
570 consensus.BIP65Height = 1;
571 consensus.BIP66Height = 1;
572 consensus.CSVHeight = 1;
573 consensus.SegwitHeight = 0;
574 consensus.MinBIP9WarningHeight = 0;
575 consensus.powLimit =
uint256{
"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"};
576 consensus.nPowTargetTimespan = 24 * 60 * 60;
577 consensus.nPowTargetSpacing = 10 * 60;
578 consensus.fPowAllowMinDifficultyBlocks =
true;
580 consensus.fPowNoRetargeting =
true;
596 consensus.nMinimumChainWork =
uint256{};
597 consensus.defaultAssumeValid =
uint256{};
599 pchMessageStart[0] = 0xfa;
600 pchMessageStart[1] = 0xbf;
601 pchMessageStart[2] = 0xb5;
602 pchMessageStart[3] = 0xda;
603 nDefaultPort = 18444;
604 nPruneAfterHeight = opts.
fastprune ? 100 : 1000;
605 m_assumed_blockchain_size = 0;
606 m_assumed_chain_state_size = 0;
611 consensus.SegwitHeight =
int{height};
614 consensus.BIP34Height =
int{height};
617 consensus.BIP66Height =
int{height};
620 consensus.BIP65Height =
int{height};
623 consensus.CSVHeight =
int{height};
629 consensus.vDeployments[deployment_pos].nStartTime = version_bits_params.start_time;
630 consensus.vDeployments[deployment_pos].nTimeout = version_bits_params.timeout;
631 consensus.vDeployments[deployment_pos].min_activation_height = version_bits_params.min_activation_height;
635 consensus.hashGenesisBlock = genesis.GetHash();
636 assert(consensus.hashGenesisBlock ==
uint256{
"0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"});
637 assert(genesis.hashMerkleRoot ==
uint256{
"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"});
641 vSeeds.emplace_back(
"dummySeed.invalid.");
643 fDefaultConsistencyChecks =
true;
644 m_is_mockable_chain =
true;
646 m_assumeutxo_data = {
649 .hash_serialized =
AssumeutxoHash{
uint256{
"b952555c8ab81fec46f3d4253b7af256d766ceb39fb7752b9d18cdf4a0141327"}},
650 .m_chain_tx_count = 111,
651 .blockhash =
uint256{
"6affe030b7965ab538f820a56ef56c8149b7dc1d1c144af57113be080db7c397"},
656 .hash_serialized =
AssumeutxoHash{
uint256{
"17dcc016d188d16068907cdeb38b75691a118d43053b8cd6a25969419381d13a"}},
657 .m_chain_tx_count = 201,
658 .blockhash =
uint256{
"385901ccbd69dff6bbd00065d01fb8a9e464dede7cfe0372443884f9b1dcf6b9"},
663 .hash_serialized =
AssumeutxoHash{
uint256{
"d2b051ff5e8eef46520350776f4100dd710a63447a8e01d917e92e79751a63e2"}},
664 .m_chain_tx_count = 334,
665 .blockhash =
uint256{
"7cc695046fec709f8c9394b6f928f81e81fd3ac20977bb68760fa1faa7916ea2"},
675 base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
676 base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
677 base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
678 base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
679 base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
686 .redownload_buffer_size = 7017,
693 return std::make_unique<const SigNetParams>(options);
698 return std::make_unique<const CRegTestParams>(options);
703 return std::make_unique<const CMainParams>();
708 return std::make_unique<const CTestNetParams>();
713 return std::make_unique<const CTestNet4Params>();
718 std::vector<int> heights;
719 heights.reserve(m_assumeutxo_data.size());
721 for (
const auto&
data : m_assumeutxo_data) {
722 heights.emplace_back(
data.height);
735 if (std::ranges::equal(message, mainnet_msg)) {
737 }
else if (std::ranges::equal(message, testnet_msg)) {
739 }
else if (std::ranges::equal(message, testnet4_msg)) {
741 }
else if (std::ranges::equal(message, regtest_msg)) {
743 }
else if (std::ranges::equal(message, signet_msg)) {
static constexpr int64_t NO_TIMEOUT
Constant for nTimeout very far in the future.
static std::unique_ptr< const CChainParams > TestNet4()
Main network on which people trade goods and services.
std::unordered_map< Consensus::DeploymentPos, VersionBitsParameters > version_bits_parameters
static const uint8_t chainparams_seed_testnet4[]
static constexpr int64_t ALWAYS_ACTIVE
Special value for nStartTime indicating that the deployment is always active.
static const uint8_t chainparams_seed_test[]
CChainParams defines various tweakable parameters of a given instance of the Bitcoin system...
int64_t nTime
UNIX timestamp of last known number of transactions.
Testnet (v4): public test network which is reset from time to time.
static std::unique_ptr< const CChainParams > Main()
static std::unique_ptr< const CChainParams > RegTest(const RegTestOptions &options)
constexpr unsigned char * begin()
int64_t CAmount
Amount in satoshis (Can be negative)
std::array< uint8_t, 4 > MessageStartChars
Signet: test network with an additional consensus parameter (see BIP325).
std::vector< int > GetAvailableSnapshotHeights() const
static const uint8_t chainparams_seed_main[]
List of fixed seed nodes for the bitcoin network AUTOGENERATED by contrib/seeds/generate-seeds.py.
SigNetParams(const SigNetOptions &options)
static const uint8_t chainparams_seed_signet[]
A writer stream (for serialization) that computes a 256-bit hash.
Regression test: intended for private networks only.
Holds various statistics on transactions within a chain.
RegTestOptions holds configurations for creating a regtest CChainParams.
uint256 BlockMerkleRoot(const CBlock &block, bool *mutated)
std::optional< std::vector< std::string > > seeds
static constexpr int64_t NEVER_ACTIVE
Special value for nStartTime indicating that the deployment is never active.
""_hex is a compile-time user-defined literal returning a std::array<std::byte>, equivalent to ParseH...
std::vector< CTxOut > vout
SigNetOptions holds configurations for creating a signet CChainParams.
static CTransactionRef MakeTransactionRef(Tx &&txIn)
Testnet (v3): public test network which is reset from time to time.
std::vector< CTransactionRef > vtx
std::unordered_map< Consensus::BuriedDeployment, int > activation_heights
static std::unique_ptr< const CChainParams > SigNet(const SigNetOptions &options)
static std::unique_ptr< const CChainParams > TestNet()
Serialized script, used inside transaction inputs and outputs.
std::optional< ChainType > GetNetworkForMagic(const MessageStartChars &message)
static CBlock CreateGenesisBlock(const char *pszTimestamp, const CScript &genesisOutputScript, uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const CAmount &genesisReward)
A mutable version of CTransaction.
std::optional< std::vector< uint8_t > > challenge
CRegTestParams(const RegTestOptions &opts)
static constexpr script_verify_flags SCRIPT_VERIFY_NONE
Script verification flags.
std::string HexStr(const std::span< const uint8_t > s)
Convert a span of bytes to a lower-case hexadecimal string.
static constexpr CAmount COIN
The amount of satoshis in one BTC.