diff --git a/src/chainparams.h b/src/chainparams.h --- a/src/chainparams.h +++ b/src/chainparams.h @@ -99,6 +99,21 @@ ChainTxData chainTxData; }; +class CMainParams : public CChainParams { +public: + CMainParams(); +}; + +class CTestNetParams : public CChainParams { +public: + CTestNetParams(); +}; + +class CRegTestParams : public CChainParams { +public: + CRegTestParams(); +}; + /** * Creates and returns a std::unique_ptr of the chosen chain. * @returns a CChainParams* of the chosen chain. diff --git a/src/chainparams.cpp b/src/chainparams.cpp --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -80,404 +80,395 @@ * timestamp before) * + Contains no strange transactions */ -class CMainParams : public CChainParams { -public: - CMainParams() { - strNetworkID = "main"; - consensus.nSubsidyHalvingInterval = 210000; - consensus.BIP34Height = 227931; - consensus.BIP34Hash = uint256S( - "000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8"); - // 000000000000000004c2b624ed5d7756c508d90fd0da2c7c679febfa6c4735f0 - consensus.BIP65Height = 388381; - // 00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931 - consensus.BIP66Height = 363725; - // 000000000000000004a1b34462cb8aeebd5799177f7a29cf28f2d1961716b5b5 - consensus.CSVHeight = 419328; - consensus.powLimit = uint256S( - "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); - // two weeks - consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; - consensus.nPowTargetSpacing = 10 * 60; - consensus.fPowAllowMinDifficultyBlocks = false; - consensus.fPowNoRetargeting = false; - // 95% of 2016 - consensus.nRuleChangeActivationThreshold = 1916; - // nPowTargetTimespan / nPowTargetSpacing - consensus.nMinerConfirmationWindow = 2016; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; - // January 1, 2008 - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = - 1199145601; - // December 31, 2008 - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = - 1230767999; - - // The best chain should have at least this much work. - consensus.nMinimumChainWork = uint256S( - "000000000000000000000000000000000000000000e2440d9db8afdd1d82263d"); - - // By default assume that the signatures in ancestors of this block are - // valid. - consensus.defaultAssumeValid = uint256S( - "00000000000000000227f86232670e3ffe0f8849b2e211f6854df01c07e75862"); - - // August 1, 2017 hard fork - consensus.uahfHeight = 478558; - - // November 13, 2017 hard fork - consensus.daaHeight = 504031; - - // November 15, 2018 hard fork - consensus.magneticAnomalyHeight = 556766; - - // Wed, 15 May 2019 12:00:00 UTC hard fork - consensus.greatWallActivationTime = 1557921600; - - // Nov 15, 2019 12:00:00 UTC protocol upgrade - consensus.gravitonActivationTime = 1573819200; - - /** - * The message start string is designed to be unlikely to occur in - * normal data. The characters are rarely used upper ASCII, not valid as - * UTF-8, and produce a large 32-bit integer with any alignment. - */ - diskMagic[0] = 0xf9; - diskMagic[1] = 0xbe; - diskMagic[2] = 0xb4; - diskMagic[3] = 0xd9; - netMagic[0] = 0xe3; - netMagic[1] = 0xe1; - netMagic[2] = 0xf3; - netMagic[3] = 0xe8; - nDefaultPort = 8333; - nPruneAfterHeight = 100000; - - genesis = CreateGenesisBlock(1231006505, 2083236893, 0x1d00ffff, 1, - 50 * COIN); - consensus.hashGenesisBlock = genesis.GetHash(); - assert(consensus.hashGenesisBlock == - uint256S("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1" - "b60a8ce26f")); - assert(genesis.hashMerkleRoot == - uint256S("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b" - "7afdeda33b")); - - // Note that of those which support the service bits prefix, most only - // support a subset of possible options. This is fine at runtime as - // we'll fall back to using them as a oneshot if they dont support the - // service bits we want, but we should get them updated to support all - // service bits wanted by any release ASAP to avoid it where possible. - // Bitcoin ABC seeder - vSeeds.emplace_back("seed.bitcoinabc.org"); - // bitcoinforks seeders - vSeeds.emplace_back("seed-abc.bitcoinforks.org"); - // BU backed seeder - vSeeds.emplace_back("btccash-seeder.bitcoinunlimited.info"); - // Bitprim - vSeeds.emplace_back("seed.bitprim.org"); - // Amaury SÉCHET - vSeeds.emplace_back("seed.deadalnix.me"); - // criptolayer.net - vSeeds.emplace_back("seeder.criptolayer.net"); - - base58Prefixes[PUBKEY_ADDRESS] = std::vector(1, 0); - base58Prefixes[SCRIPT_ADDRESS] = std::vector(1, 5); - base58Prefixes[SECRET_KEY] = std::vector(1, 128); - base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E}; - base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4}; - cashaddrPrefix = "bitcoincash"; - - vFixedSeeds = std::vector( - pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main)); - - fDefaultConsistencyChecks = false; - fRequireStandard = true; - fMineBlocksOnDemand = false; - - checkpointData = { - .mapCheckpoints = { - {11111, uint256S("0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee" - "92559f542fdb26e7c1d")}, - {33333, uint256S("000000002dd5588a74784eaa7ab0507a18ad16a236e7b" - "1ce69f00d7ddfb5d0a6")}, - {74000, uint256S("0000000000573993a3c9e41ce34471c079dcf5f52a0e8" - "24a81e7f953b8661a20")}, - {105000, uint256S("00000000000291ce28027faea320c8d2b054b2e0fe44" - "a773f3eefb151d6bdc97")}, - {134444, uint256S("00000000000005b12ffd4cd315cd34ffd4a594f430ac" - "814c91184a0d42d2b0fe")}, - {168000, uint256S("000000000000099e61ea72015e79632f216fe6cb33d7" - "899acb35b75c8303b763")}, - {193000, uint256S("000000000000059f452a5f7340de6682a977387c1701" - "0ff6e6c3bd83ca8b1317")}, - {210000, uint256S("000000000000048b95347e83192f69cf0366076336c6" - "39f9b7228e9ba171342e")}, - {216116, uint256S("00000000000001b4f4b433e81ee46494af945cf96014" - "816a4e2370f11b23df4e")}, - {225430, uint256S("00000000000001c108384350f74090433e7fcf79a606" - "b8e797f065b130575932")}, - {250000, uint256S("000000000000003887df1f29024b06fc2200b55f8af8" - "f35453d7be294df2d214")}, - {279000, uint256S("0000000000000001ae8c72a0b0c301f67e3afca10e81" - "9efa9041e458e9bd7e40")}, - {295000, uint256S("00000000000000004d9b4ef50f0f9d686fd69db2e03a" - "f35a100370c64632a983")}, - // UAHF fork block. - {478558, uint256S("0000000000000000011865af4122fe3b144e2cbeea86" - "142e8ff2fb4107352d43")}, - // Nov, 13 DAA activation block. - {504031, uint256S("0000000000000000011ebf65b60d0a3de80b8175be70" - "9d653b4c1a1beeb6ab9c")}, - // Monolith activation. - {530359, uint256S("0000000000000000011ada8bd08f46074f44a8f15539" - "6f43e38acf9501c49103")}, - // Magnetic anomaly activation. - {556767, uint256S("0000000000000000004626ff6e3b936941d341c5932e" - "ce4357eeccac44e6d56c")}, - }}; - - // Data as of block - // 000000000000000001d2ce557406b017a928be25ee98906397d339c3f68eec5d - // (height 523992). - chainTxData = ChainTxData{ - // UNIX timestamp of last known number of transactions. - 1522608016, - // Total number of transactions between genesis and that timestamp - // (the tx=... number in the SetBestChain debug.log lines) - 248589038, - // Estimated number of transactions per second after that timestamp. - 3.2}; - } -}; +CMainParams::CMainParams() { + strNetworkID = "main"; + consensus.nSubsidyHalvingInterval = 210000; + consensus.BIP34Height = 227931; + consensus.BIP34Hash = uint256S( + "000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8"); + // 000000000000000004c2b624ed5d7756c508d90fd0da2c7c679febfa6c4735f0 + consensus.BIP65Height = 388381; + // 00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931 + consensus.BIP66Height = 363725; + // 000000000000000004a1b34462cb8aeebd5799177f7a29cf28f2d1961716b5b5 + consensus.CSVHeight = 419328; + consensus.powLimit = uint256S( + "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); + // two weeks + consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; + consensus.nPowTargetSpacing = 10 * 60; + consensus.fPowAllowMinDifficultyBlocks = false; + consensus.fPowNoRetargeting = false; + // 95% of 2016 + consensus.nRuleChangeActivationThreshold = 1916; + // nPowTargetTimespan / nPowTargetSpacing + consensus.nMinerConfirmationWindow = 2016; + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; + // January 1, 2008 + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = + 1199145601; + // December 31, 2008 + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = + 1230767999; + + // The best chain should have at least this much work. + consensus.nMinimumChainWork = uint256S( + "000000000000000000000000000000000000000000e2440d9db8afdd1d82263d"); + + // By default assume that the signatures in ancestors of this block are + // valid. + consensus.defaultAssumeValid = uint256S( + "00000000000000000227f86232670e3ffe0f8849b2e211f6854df01c07e75862"); + + // August 1, 2017 hard fork + consensus.uahfHeight = 478558; + + // November 13, 2017 hard fork + consensus.daaHeight = 504031; + + // November 15, 2018 hard fork + consensus.magneticAnomalyHeight = 556766; + + // Wed, 15 May 2019 12:00:00 UTC hard fork + consensus.greatWallActivationTime = 1557921600; + + // Nov 15, 2019 12:00:00 UTC protocol upgrade + consensus.gravitonActivationTime = 1573819200; + + /** + * The message start string is designed to be unlikely to occur in + * normal data. The characters are rarely used upper ASCII, not valid as + * UTF-8, and produce a large 32-bit integer with any alignment. + */ + diskMagic[0] = 0xf9; + diskMagic[1] = 0xbe; + diskMagic[2] = 0xb4; + diskMagic[3] = 0xd9; + netMagic[0] = 0xe3; + netMagic[1] = 0xe1; + netMagic[2] = 0xf3; + netMagic[3] = 0xe8; + nDefaultPort = 8333; + nPruneAfterHeight = 100000; + + genesis = + CreateGenesisBlock(1231006505, 2083236893, 0x1d00ffff, 1, 50 * COIN); + consensus.hashGenesisBlock = genesis.GetHash(); + assert(consensus.hashGenesisBlock == + uint256S("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1" + "b60a8ce26f")); + assert(genesis.hashMerkleRoot == + uint256S("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b" + "7afdeda33b")); + + // Note that of those which support the service bits prefix, most only + // support a subset of possible options. This is fine at runtime as + // we'll fall back to using them as a oneshot if they dont support the + // service bits we want, but we should get them updated to support all + // service bits wanted by any release ASAP to avoid it where possible. + // Bitcoin ABC seeder + vSeeds.emplace_back("seed.bitcoinabc.org"); + // bitcoinforks seeders + vSeeds.emplace_back("seed-abc.bitcoinforks.org"); + // BU backed seeder + vSeeds.emplace_back("btccash-seeder.bitcoinunlimited.info"); + // Bitprim + vSeeds.emplace_back("seed.bitprim.org"); + // Amaury SÉCHET + vSeeds.emplace_back("seed.deadalnix.me"); + // criptolayer.net + vSeeds.emplace_back("seeder.criptolayer.net"); + + base58Prefixes[PUBKEY_ADDRESS] = std::vector(1, 0); + base58Prefixes[SCRIPT_ADDRESS] = std::vector(1, 5); + base58Prefixes[SECRET_KEY] = std::vector(1, 128); + base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E}; + base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4}; + cashaddrPrefix = "bitcoincash"; + + vFixedSeeds = std::vector(pnSeed6_main, + pnSeed6_main + ARRAYLEN(pnSeed6_main)); + + fDefaultConsistencyChecks = false; + fRequireStandard = true; + fMineBlocksOnDemand = false; + + checkpointData = { + .mapCheckpoints = { + {11111, uint256S("0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee" + "92559f542fdb26e7c1d")}, + {33333, uint256S("000000002dd5588a74784eaa7ab0507a18ad16a236e7b" + "1ce69f00d7ddfb5d0a6")}, + {74000, uint256S("0000000000573993a3c9e41ce34471c079dcf5f52a0e8" + "24a81e7f953b8661a20")}, + {105000, uint256S("00000000000291ce28027faea320c8d2b054b2e0fe44" + "a773f3eefb151d6bdc97")}, + {134444, uint256S("00000000000005b12ffd4cd315cd34ffd4a594f430ac" + "814c91184a0d42d2b0fe")}, + {168000, uint256S("000000000000099e61ea72015e79632f216fe6cb33d7" + "899acb35b75c8303b763")}, + {193000, uint256S("000000000000059f452a5f7340de6682a977387c1701" + "0ff6e6c3bd83ca8b1317")}, + {210000, uint256S("000000000000048b95347e83192f69cf0366076336c6" + "39f9b7228e9ba171342e")}, + {216116, uint256S("00000000000001b4f4b433e81ee46494af945cf96014" + "816a4e2370f11b23df4e")}, + {225430, uint256S("00000000000001c108384350f74090433e7fcf79a606" + "b8e797f065b130575932")}, + {250000, uint256S("000000000000003887df1f29024b06fc2200b55f8af8" + "f35453d7be294df2d214")}, + {279000, uint256S("0000000000000001ae8c72a0b0c301f67e3afca10e81" + "9efa9041e458e9bd7e40")}, + {295000, uint256S("00000000000000004d9b4ef50f0f9d686fd69db2e03a" + "f35a100370c64632a983")}, + // UAHF fork block. + {478558, uint256S("0000000000000000011865af4122fe3b144e2cbeea86" + "142e8ff2fb4107352d43")}, + // Nov, 13 DAA activation block. + {504031, uint256S("0000000000000000011ebf65b60d0a3de80b8175be70" + "9d653b4c1a1beeb6ab9c")}, + // Monolith activation. + {530359, uint256S("0000000000000000011ada8bd08f46074f44a8f15539" + "6f43e38acf9501c49103")}, + // Magnetic anomaly activation. + {556767, uint256S("0000000000000000004626ff6e3b936941d341c5932e" + "ce4357eeccac44e6d56c")}, + }}; + + // Data as of block + // 000000000000000001d2ce557406b017a928be25ee98906397d339c3f68eec5d + // (height 523992). + chainTxData = ChainTxData{ + // UNIX timestamp of last known number of transactions. + 1522608016, + // Total number of transactions between genesis and that timestamp + // (the tx=... number in the SetBestChain debug.log lines) + 248589038, + // Estimated number of transactions per second after that timestamp. + 3.2}; +} /** * Testnet (v3) */ -class CTestNetParams : public CChainParams { -public: - CTestNetParams() { - strNetworkID = "test"; - consensus.nSubsidyHalvingInterval = 210000; - consensus.BIP34Height = 21111; - consensus.BIP34Hash = uint256S( - "0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8"); - // 00000000007f6655f22f98e72ed80d8b06dc761d5da09df0fa1dc4be4f861eb6 - consensus.BIP65Height = 581885; - // 000000002104c8c45e99a8853285a3b592602a3ccde2b832481da85e9e4ba182 - consensus.BIP66Height = 330776; - // 00000000025e930139bac5c6c31a403776da130831ab85be56578f3fa75369bb - consensus.CSVHeight = 770112; - consensus.powLimit = uint256S( - "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); - // two weeks - consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; - consensus.nPowTargetSpacing = 10 * 60; - consensus.fPowAllowMinDifficultyBlocks = true; - consensus.fPowNoRetargeting = false; - // 75% for testchains - consensus.nRuleChangeActivationThreshold = 1512; - // nPowTargetTimespan / nPowTargetSpacing - consensus.nMinerConfirmationWindow = 2016; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; - // January 1, 2008 - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = - 1199145601; - // December 31, 2008 - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = - 1230767999; - - // The best chain should have at least this much work. - consensus.nMinimumChainWork = uint256S( - "000000000000000000000000000000000000000000000043cb761ba833f844c5"); - - // By default assume that the signatures in ancestors of this block are - // valid. - consensus.defaultAssumeValid = uint256S( - "00000000000002cb911c0a756a24c2fe6c1a29acaede3569ce430b95d8ff012d"); - - // August 1, 2017 hard fork - consensus.uahfHeight = 1155875; - - // November 13, 2017 hard fork - consensus.daaHeight = 1188697; - - // November 15, 2018 hard fork - consensus.magneticAnomalyHeight = 1267996; - - // Wed, 15 May 2019 12:00:00 UTC hard fork - consensus.greatWallActivationTime = 1557921600; - - // Nov 15, 2019 12:00:00 UTC protocol upgrade - consensus.gravitonActivationTime = 1573819200; - - diskMagic[0] = 0x0b; - diskMagic[1] = 0x11; - diskMagic[2] = 0x09; - diskMagic[3] = 0x07; - netMagic[0] = 0xf4; - netMagic[1] = 0xe5; - netMagic[2] = 0xf3; - netMagic[3] = 0xf4; - nDefaultPort = 18333; - nPruneAfterHeight = 1000; - - genesis = - CreateGenesisBlock(1296688602, 414098458, 0x1d00ffff, 1, 50 * COIN); - consensus.hashGenesisBlock = genesis.GetHash(); - assert(consensus.hashGenesisBlock == - uint256S("000000000933ea01ad0ee984209779baaec3ced90fa3f408719526" - "f8d77f4943")); - assert(genesis.hashMerkleRoot == - uint256S("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b" - "7afdeda33b")); - - vFixedSeeds.clear(); - vSeeds.clear(); - // nodes with support for servicebits filtering should be at the top - // Bitcoin ABC seeder - vSeeds.emplace_back("testnet-seed.bitcoinabc.org"); - // bitcoinforks seeders - vSeeds.emplace_back("testnet-seed-abc.bitcoinforks.org"); - // Bitprim - vSeeds.emplace_back("testnet-seed.bitprim.org"); - // Amaury SÉCHET - vSeeds.emplace_back("testnet-seed.deadalnix.me"); - // criptolayer.net - vSeeds.emplace_back("testnet-seeder.criptolayer.net"); - - base58Prefixes[PUBKEY_ADDRESS] = std::vector(1, 111); - base58Prefixes[SCRIPT_ADDRESS] = std::vector(1, 196); - base58Prefixes[SECRET_KEY] = std::vector(1, 239); - base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF}; - base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94}; - cashaddrPrefix = "bchtest"; - vFixedSeeds = std::vector( - pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test)); - - fDefaultConsistencyChecks = false; - fRequireStandard = false; - fMineBlocksOnDemand = false; - - checkpointData = { - .mapCheckpoints = { - {546, uint256S("000000002a936ca763904c3c35fce2f3556c559c0214345" - "d31b1bcebf76acb70")}, - // UAHF fork block. - {1155875, uint256S("00000000f17c850672894b9a75b63a1e72830bbd5f4" - "c8889b5c1a80e7faef138")}, - // Nov, 13. DAA activation block. - {1188697, uint256S("0000000000170ed0918077bde7b4d36cc4c91be69fa" - "09211f748240dabe047fb")}, - }}; - - // Data as of block - // 000000000005b07ecf85563034d13efd81c1a29e47e22b20f4fc6919d5b09cd6 - // (height 1223263) - chainTxData = ChainTxData{1522608381, 15052068, 0.15}; - } -}; +CTestNetParams::CTestNetParams() { + strNetworkID = "test"; + consensus.nSubsidyHalvingInterval = 210000; + consensus.BIP34Height = 21111; + consensus.BIP34Hash = uint256S( + "0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8"); + // 00000000007f6655f22f98e72ed80d8b06dc761d5da09df0fa1dc4be4f861eb6 + consensus.BIP65Height = 581885; + // 000000002104c8c45e99a8853285a3b592602a3ccde2b832481da85e9e4ba182 + consensus.BIP66Height = 330776; + // 00000000025e930139bac5c6c31a403776da130831ab85be56578f3fa75369bb + consensus.CSVHeight = 770112; + consensus.powLimit = uint256S( + "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); + // two weeks + consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; + consensus.nPowTargetSpacing = 10 * 60; + consensus.fPowAllowMinDifficultyBlocks = true; + consensus.fPowNoRetargeting = false; + // 75% for testchains + consensus.nRuleChangeActivationThreshold = 1512; + // nPowTargetTimespan / nPowTargetSpacing + consensus.nMinerConfirmationWindow = 2016; + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; + // January 1, 2008 + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = + 1199145601; + // December 31, 2008 + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = + 1230767999; + + // The best chain should have at least this much work. + consensus.nMinimumChainWork = uint256S( + "000000000000000000000000000000000000000000000043cb761ba833f844c5"); + + // By default assume that the signatures in ancestors of this block are + // valid. + consensus.defaultAssumeValid = uint256S( + "00000000000002cb911c0a756a24c2fe6c1a29acaede3569ce430b95d8ff012d"); + + // August 1, 2017 hard fork + consensus.uahfHeight = 1155875; + + // November 13, 2017 hard fork + consensus.daaHeight = 1188697; + + // November 15, 2018 hard fork + consensus.magneticAnomalyHeight = 1267996; + + // Wed, 15 May 2019 12:00:00 UTC hard fork + consensus.greatWallActivationTime = 1557921600; + + // Nov 15, 2019 12:00:00 UTC protocol upgrade + consensus.gravitonActivationTime = 1573819200; + + diskMagic[0] = 0x0b; + diskMagic[1] = 0x11; + diskMagic[2] = 0x09; + diskMagic[3] = 0x07; + netMagic[0] = 0xf4; + netMagic[1] = 0xe5; + netMagic[2] = 0xf3; + netMagic[3] = 0xf4; + nDefaultPort = 18333; + nPruneAfterHeight = 1000; + + genesis = + CreateGenesisBlock(1296688602, 414098458, 0x1d00ffff, 1, 50 * COIN); + consensus.hashGenesisBlock = genesis.GetHash(); + assert(consensus.hashGenesisBlock == + uint256S("000000000933ea01ad0ee984209779baaec3ced90fa3f408719526" + "f8d77f4943")); + assert(genesis.hashMerkleRoot == + uint256S("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b" + "7afdeda33b")); + + vFixedSeeds.clear(); + vSeeds.clear(); + // nodes with support for servicebits filtering should be at the top + // Bitcoin ABC seeder + vSeeds.emplace_back("testnet-seed.bitcoinabc.org"); + // bitcoinforks seeders + vSeeds.emplace_back("testnet-seed-abc.bitcoinforks.org"); + // Bitprim + vSeeds.emplace_back("testnet-seed.bitprim.org"); + // Amaury SÉCHET + vSeeds.emplace_back("testnet-seed.deadalnix.me"); + // criptolayer.net + vSeeds.emplace_back("testnet-seeder.criptolayer.net"); + + base58Prefixes[PUBKEY_ADDRESS] = std::vector(1, 111); + base58Prefixes[SCRIPT_ADDRESS] = std::vector(1, 196); + base58Prefixes[SECRET_KEY] = std::vector(1, 239); + base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF}; + base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94}; + cashaddrPrefix = "bchtest"; + vFixedSeeds = std::vector(pnSeed6_test, + pnSeed6_test + ARRAYLEN(pnSeed6_test)); + + fDefaultConsistencyChecks = false; + fRequireStandard = false; + fMineBlocksOnDemand = false; + + checkpointData = { + .mapCheckpoints = { + {546, uint256S("000000002a936ca763904c3c35fce2f3556c559c0214345" + "d31b1bcebf76acb70")}, + // UAHF fork block. + {1155875, uint256S("00000000f17c850672894b9a75b63a1e72830bbd5f4" + "c8889b5c1a80e7faef138")}, + // Nov, 13. DAA activation block. + {1188697, uint256S("0000000000170ed0918077bde7b4d36cc4c91be69fa" + "09211f748240dabe047fb")}, + }}; + + // Data as of block + // 000000000005b07ecf85563034d13efd81c1a29e47e22b20f4fc6919d5b09cd6 + // (height 1223263) + chainTxData = ChainTxData{1522608381, 15052068, 0.15}; +} /** * Regression test */ -class CRegTestParams : public CChainParams { -public: - CRegTestParams() { - strNetworkID = "regtest"; - consensus.nSubsidyHalvingInterval = 150; - // BIP34 has not activated on regtest (far in the future so block v1 are - // not rejected in tests) - consensus.BIP34Height = 100000000; - consensus.BIP34Hash = uint256(); - // BIP65 activated on regtest (Used in rpc activation tests) - consensus.BIP65Height = 1351; - // BIP66 activated on regtest (Used in rpc activation tests) - consensus.BIP66Height = 1251; - // CSV activated on regtest (Used in rpc activation tests) - consensus.CSVHeight = 576; - consensus.powLimit = uint256S( - "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); - // two weeks - consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; - consensus.nPowTargetSpacing = 10 * 60; - consensus.fPowAllowMinDifficultyBlocks = true; - consensus.fPowNoRetargeting = true; - // 75% for testchains - consensus.nRuleChangeActivationThreshold = 108; - // Faster than normal for regtest (144 instead of 2016) - consensus.nMinerConfirmationWindow = 144; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 0; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = - 999999999999ULL; - - // The best chain should have at least this much work. - consensus.nMinimumChainWork = uint256S("0x00"); - - // By default assume that the signatures in ancestors of this block are - // valid. - consensus.defaultAssumeValid = uint256S("0x00"); - - // UAHF is always enabled on regtest. - consensus.uahfHeight = 0; - - // November 13, 2017 hard fork is always on on regtest. - consensus.daaHeight = 0; - - // November 15, 2018 hard fork is always on on regtest. - consensus.magneticAnomalyHeight = 0; - - // Wed, 15 May 2019 12:00:00 UTC hard fork - consensus.greatWallActivationTime = 1557921600; - - // Nov 15, 2019 12:00:00 UTC protocol upgrade - consensus.gravitonActivationTime = 1573819200; - - diskMagic[0] = 0xfa; - diskMagic[1] = 0xbf; - diskMagic[2] = 0xb5; - diskMagic[3] = 0xda; - netMagic[0] = 0xda; - netMagic[1] = 0xb5; - netMagic[2] = 0xbf; - netMagic[3] = 0xfa; - nDefaultPort = 18444; - nPruneAfterHeight = 1000; - - genesis = CreateGenesisBlock(1296688602, 2, 0x207fffff, 1, 50 * COIN); - consensus.hashGenesisBlock = genesis.GetHash(); - assert(consensus.hashGenesisBlock == - uint256S("0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b" - "1a11466e2206")); - assert(genesis.hashMerkleRoot == - uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab212" - "7b7afdeda33b")); - - //!< Regtest mode doesn't have any fixed seeds. - vFixedSeeds.clear(); - //!< Regtest mode doesn't have any DNS seeds. - vSeeds.clear(); - - fDefaultConsistencyChecks = true; - fRequireStandard = false; - fMineBlocksOnDemand = true; - - checkpointData = {.mapCheckpoints = { - {0, uint256S("0f9188f13cb7b2c71f2a335e3a4fc328bf5" - "beb436012afca590b1a11466e2206")}, - }}; - - chainTxData = ChainTxData{0, 0, 0}; - - base58Prefixes[PUBKEY_ADDRESS] = std::vector(1, 111); - base58Prefixes[SCRIPT_ADDRESS] = std::vector(1, 196); - base58Prefixes[SECRET_KEY] = std::vector(1, 239); - base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF}; - base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94}; - cashaddrPrefix = "bchreg"; - } -}; +CRegTestParams::CRegTestParams() { + strNetworkID = "regtest"; + consensus.nSubsidyHalvingInterval = 150; + // BIP34 has not activated on regtest (far in the future so block v1 are + // not rejected in tests) + consensus.BIP34Height = 100000000; + consensus.BIP34Hash = uint256(); + // BIP65 activated on regtest (Used in rpc activation tests) + consensus.BIP65Height = 1351; + // BIP66 activated on regtest (Used in rpc activation tests) + consensus.BIP66Height = 1251; + // CSV activated on regtest (Used in rpc activation tests) + consensus.CSVHeight = 576; + consensus.powLimit = uint256S( + "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); + // two weeks + consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; + consensus.nPowTargetSpacing = 10 * 60; + consensus.fPowAllowMinDifficultyBlocks = true; + consensus.fPowNoRetargeting = true; + // 75% for testchains + consensus.nRuleChangeActivationThreshold = 108; + // Faster than normal for regtest (144 instead of 2016) + consensus.nMinerConfirmationWindow = 144; + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 0; + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = + 999999999999ULL; + + // The best chain should have at least this much work. + consensus.nMinimumChainWork = uint256S("0x00"); + + // By default assume that the signatures in ancestors of this block are + // valid. + consensus.defaultAssumeValid = uint256S("0x00"); + + // UAHF is always enabled on regtest. + consensus.uahfHeight = 0; + + // November 13, 2017 hard fork is always on on regtest. + consensus.daaHeight = 0; + + // November 15, 2018 hard fork is always on on regtest. + consensus.magneticAnomalyHeight = 0; + + // Wed, 15 May 2019 12:00:00 UTC hard fork + consensus.greatWallActivationTime = 1557921600; + + // Nov 15, 2019 12:00:00 UTC protocol upgrade + consensus.gravitonActivationTime = 1573819200; + + diskMagic[0] = 0xfa; + diskMagic[1] = 0xbf; + diskMagic[2] = 0xb5; + diskMagic[3] = 0xda; + netMagic[0] = 0xda; + netMagic[1] = 0xb5; + netMagic[2] = 0xbf; + netMagic[3] = 0xfa; + nDefaultPort = 18444; + nPruneAfterHeight = 1000; + + genesis = CreateGenesisBlock(1296688602, 2, 0x207fffff, 1, 50 * COIN); + consensus.hashGenesisBlock = genesis.GetHash(); + assert(consensus.hashGenesisBlock == + uint256S("0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b" + "1a11466e2206")); + assert(genesis.hashMerkleRoot == + uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab212" + "7b7afdeda33b")); + + //!< Regtest mode doesn't have any fixed seeds. + vFixedSeeds.clear(); + //!< Regtest mode doesn't have any DNS seeds. + vSeeds.clear(); + + fDefaultConsistencyChecks = true; + fRequireStandard = false; + fMineBlocksOnDemand = true; + + checkpointData = {.mapCheckpoints = { + {0, uint256S("0f9188f13cb7b2c71f2a335e3a4fc328bf5" + "beb436012afca590b1a11466e2206")}, + }}; + + chainTxData = ChainTxData{0, 0, 0}; + + base58Prefixes[PUBKEY_ADDRESS] = std::vector(1, 111); + base58Prefixes[SCRIPT_ADDRESS] = std::vector(1, 196); + base58Prefixes[SECRET_KEY] = std::vector(1, 239); + base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF}; + base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94}; + cashaddrPrefix = "bchreg"; +} static std::unique_ptr globalChainParams;