diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 892069dab0..4f2dbf953c 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -172,18 +172,24 @@ class CTestNetParams : public CChainParams { public: CTestNetParams() { strNetworkID = "test"; - consensus.nSubsidyHalvingInterval = 210000; - consensus.BIP34Height = 21111; - consensus.BIP34Hash = uint256S("0x0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8"); - consensus.BIP65Height = 581885; // 00000000007f6655f22f98e72ed80d8b06dc761d5da09df0fa1dc4be4f861eb6 - consensus.BIP66Height = 330776; // 000000002104c8c45e99a8853285a3b592602a3ccde2b832481da85e9e4ba182 - consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); - consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks - consensus.nPowTargetSpacing = 10 * 60; + consensus.nSubsidyHalvingInterval = 840000; + consensus.BIP34Height = 690000; + consensus.BIP34Hash = uint256S("0x000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8"); + consensus.BIP65Height = 690000; // 000000000000000004c2b624ed5d7756c508d90fd0da2c7c679febfa6c4735f0 + consensus.BIP66Height = 690000; // 00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931 + consensus.powLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); + consensus.nPowTargetTimespan = 3.5 * 24 * 60 * 60; // two weeks + consensus.nPowTargetSpacing = 2.5 * 60; consensus.fPowAllowMinDifficultyBlocks = true; + consensus.nMinNFactor = 10; + consensus.nMaxNFactor = 30; + consensus.nChainStartTime = 1389306217; + consensus.nKGWInterval = 12; + consensus.fRbfEnabled = false; consensus.fPowNoRetargeting = false; - consensus.nRuleChangeActivationThreshold = 1512; // 75% for testchains + consensus.nRuleChangeActivationThreshold = 1916; // 95% of 2016 consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008 consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008 @@ -201,27 +207,25 @@ class CTestNetParams : public CChainParams { // The best chain should have at least this much work. consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000198b4def2baa9338d6"); - pchMessageStart[0] = 0x0b; - pchMessageStart[1] = 0x11; - pchMessageStart[2] = 0x09; - pchMessageStart[3] = 0x07; - nDefaultPort = 18333; + pchMessageStart[0] = 'v'; + pchMessageStart[1] = 'e'; + pchMessageStart[2] = 'r'; + pchMessageStart[3] = 't'; + nDefaultPort = 15889; nPruneAfterHeight = 1000; - genesis = CreateGenesisBlock(1296688602, 414098458, 0x1d00ffff, 1, 50 * COIN); + genesis = CreateGenesisBlock(1481291250, 915027, 0x1e0ffff0, 1, 50 * COIN); consensus.hashGenesisBlock = genesis.GetHash(); - //assert(consensus.hashGenesisBlock == uint256S("0x000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943")); - //assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b")); + assert(consensus.hashGenesisBlock == uint256S("0xcee8f24feb7a64c8f07916976aa4855decac79b6741a8ec2e32e2747497ad2c9")); + assert(genesis.hashMerkleRoot == uint256S("0x4af38ca0e323c0a5226208a73b7589a52c030f234810cf51e13e3249fc0123e7")); vFixedSeeds.clear(); vSeeds.clear(); // nodes with support for servicebits filtering should be at the top - vSeeds.push_back(CDNSSeedData("testnetbitcoin.jonasschnelli.ch", "testnet-seed.bitcoin.jonasschnelli.ch", true)); - vSeeds.push_back(CDNSSeedData("petertodd.org", "seed.tbtc.petertodd.org", true)); - vSeeds.push_back(CDNSSeedData("bluematt.me", "testnet-seed.bluematt.me")); - vSeeds.push_back(CDNSSeedData("bitcoin.schildbach.de", "testnet-seed.bitcoin.schildbach.de")); + vSeeds.push_back(CDNSSeedData("fr1.vtconline.org", "fr1.vtconline.org", false)); - base58Prefixes[PUBKEY_ADDRESS] = std::vector(1,111); + + base58Prefixes[PUBKEY_ADDRESS] = std::vector(1,73); base58Prefixes[SCRIPT_ADDRESS] = std::vector(1,196); base58Prefixes[SECRET_KEY] = std::vector(1,239); base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x35)(0x87)(0xCF).convert_to_container >(); @@ -237,7 +241,7 @@ class CTestNetParams : public CChainParams { checkpointData = (CCheckpointData) { boost::assign::map_list_of - ( 546, uint256S("000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70")), + ( 0, uint256S("0xcee8f24feb7a64c8f07916976aa4855decac79b6741a8ec2e32e2747497ad2c9")), 1337966069, 1488, 300 diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index cb71a8b550..eb02ad3eb6 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -45,7 +45,7 @@ class CBaseTestNetParams : public CBaseChainParams public: CBaseTestNetParams() { - nRPCPort = 18332; + nRPCPort = 15888; strDataDir = "testnet3"; } }; diff --git a/src/pow.cpp b/src/pow.cpp index d2d4ce9692..4b943b1c4c 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -28,10 +28,27 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead int nHeight = pindexLast->nHeight + 1; if (Params().NetworkIDString() == CBaseChainParams::TESTNET) { + LogPrintf("Running On Testnet \n"); if (nHeight < 2116) { return GetNextWorkRequired_Bitcoin(pindexLast, pblock, params); } - return KimotoGravityWell(pindexLast, pblock, BlocksTargetSpacing, PastBlocksMin, PastBlocksMax); + + // Set this to the testnet fork block + // Testnet set to fork at 100 + if(pindexLast->nHeight+1 == 100) + { + LogPrintf("Getting diff at %i. Diff = 0\n", pindexLast->nHeight+1); + return 0x1e0ffff0; + } + // testnet to 12 block difficulty adjustment interval + if ((pindexLast->nHeight+1) % params.nKGWInterval != 0) + { + CBigNum bnNew; + bnNew.SetCompact(pindexLast->nBits); + if (bnNew > bnProofOfWorkLimit) { bnNew = bnProofOfWorkLimit; } + return bnNew.GetCompact(); + } + //return KimotoGravityWell(pindexLast, pblock, BlocksTargetSpacing, PastBlocksMin, PastBlocksMax); } else { @@ -176,6 +193,7 @@ unsigned int KimotoGravityWell(const CBlockIndex* pindexLast, const CBlockHeader bnNew *= PastRateActualSeconds; bnNew /= PastRateTargetSeconds; } + if (bnNew > bnProofOfWorkLimit) { bnNew = bnProofOfWorkLimit; }