|
9 | 9 | #include "tinyformat.h" |
10 | 10 | #include "util.h" |
11 | 11 | #include "utilstrencodings.h" |
| 12 | +#include "arith_uint256.h" |
12 | 13 |
|
13 | 14 | #include <assert.h> |
14 | 15 |
|
@@ -227,6 +228,64 @@ class CTestNetParams : public CChainParams { |
227 | 228 | }; |
228 | 229 | static CTestNetParams testNetParams; |
229 | 230 |
|
| 231 | +/** |
| 232 | + * Segnet |
| 233 | + */ |
| 234 | +class CSegNetParams : public CChainParams { |
| 235 | +public: |
| 236 | + CSegNetParams() { |
| 237 | + strNetworkID = "segnet4"; |
| 238 | + consensus.nSubsidyHalvingInterval = 210000; |
| 239 | + consensus.nMajorityEnforceBlockUpgrade = 7; |
| 240 | + consensus.nMajorityRejectBlockOutdated = 9; |
| 241 | + consensus.nMajorityWindow = 10; |
| 242 | + consensus.BIP34Height = -1; |
| 243 | + consensus.BIP34Hash = uint256(); |
| 244 | + consensus.powLimit = uint256S("000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); // 512x lower min difficulty than mainnet |
| 245 | + consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks |
| 246 | + consensus.nPowTargetSpacing = 10 * 60; |
| 247 | + consensus.fPowAllowMinDifficultyBlocks = true; |
| 248 | + consensus.fPowNoRetargeting = false; |
| 249 | + pchMessageStart[0] = 0xdc; |
| 250 | + pchMessageStart[1] = 0xab; |
| 251 | + pchMessageStart[2] = 0xa1; |
| 252 | + pchMessageStart[3] = 0xc4; |
| 253 | + nDefaultPort = 28901; |
| 254 | + nPruneAfterHeight = 1000; |
| 255 | + consensus.nRuleChangeActivationThreshold = 108; // 75% for testchains |
| 256 | + consensus.nMinerConfirmationWindow = 144; // Faster than normal for segnet (144 instead of 2016) |
| 257 | + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; |
| 258 | + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008 |
| 259 | + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008 |
| 260 | + consensus.vDeployments[Consensus::DEPLOYMENT_CSV].bit = 0; |
| 261 | + consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nStartTime = 0; |
| 262 | + consensus.vDeployments[Consensus::DEPLOYMENT_CSV].nTimeout = 999999999999ULL; |
| 263 | + |
| 264 | + genesis = CreateGenesisBlock(1452831101, 0, UintToArith256(consensus.powLimit).GetCompact(), 1, 50 * COIN); |
| 265 | + consensus.hashGenesisBlock = genesis.GetHash(); |
| 266 | + |
| 267 | + vFixedSeeds.clear(); |
| 268 | + vSeeds.clear(); |
| 269 | + |
| 270 | + base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,30); |
| 271 | + base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,50); |
| 272 | + base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,158); |
| 273 | + base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x05)(0x35)(0x87)(0xCF).convert_to_container<std::vector<unsigned char> >(); |
| 274 | + base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x05)(0x35)(0x83)(0x94).convert_to_container<std::vector<unsigned char> >(); |
| 275 | + |
| 276 | + vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_seg, pnSeed6_seg + ARRAYLEN(pnSeed6_seg)); |
| 277 | + |
| 278 | + fMiningRequiresPeers = true; |
| 279 | + fDefaultConsistencyChecks = false; |
| 280 | + fRequireStandard = false; |
| 281 | + fMineBlocksOnDemand = false; |
| 282 | + fTestnetToBeDeprecatedFieldRPC = true; |
| 283 | + |
| 284 | + // checkpointData is empty |
| 285 | + } |
| 286 | +}; |
| 287 | +static CSegNetParams segNetParams; |
| 288 | + |
230 | 289 | /** |
231 | 290 | * Regression test |
232 | 291 | */ |
@@ -304,6 +363,8 @@ CChainParams& Params(const std::string& chain) |
304 | 363 | return mainParams; |
305 | 364 | else if (chain == CBaseChainParams::TESTNET) |
306 | 365 | return testNetParams; |
| 366 | + else if (chain == CBaseChainParams::SEGNET) |
| 367 | + return segNetParams; |
307 | 368 | else if (chain == CBaseChainParams::REGTEST) |
308 | 369 | return regTestParams; |
309 | 370 | else |
|
0 commit comments