Merge pull request #6381
c4973aa
Chainparams: CTestNetParams and CRegTestParams extend directly from CChainParams (Jorge Timón)d3cf546
Chainparams: Introduce CreateGenesisBlock() static function (Jorge Timón)
This commit is contained in:
commit
45d1f5932b
@ -16,6 +16,45 @@ using namespace std;
|
|||||||
|
|
||||||
#include "chainparamsseeds.h"
|
#include "chainparamsseeds.h"
|
||||||
|
|
||||||
|
static CBlock CreateGenesisBlock(const char* pszTimestamp, CScript genesisOutputScript, uint32_t nTime=1231006505, uint32_t nNonce=2083236893, uint32_t nBits=0x1d00ffff, int32_t nVersion=1, const CAmount& genesisReward=50 * COIN)
|
||||||
|
{
|
||||||
|
CMutableTransaction txNew;
|
||||||
|
txNew.nVersion = 1;
|
||||||
|
txNew.vin.resize(1);
|
||||||
|
txNew.vout.resize(1);
|
||||||
|
txNew.vin[0].scriptSig = CScript() << 486604799 << CScriptNum(4) << vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp));
|
||||||
|
txNew.vout[0].nValue = genesisReward;
|
||||||
|
txNew.vout[0].scriptPubKey = genesisOutputScript;
|
||||||
|
|
||||||
|
CBlock genesis;
|
||||||
|
genesis.nTime = nTime;
|
||||||
|
genesis.nBits = nBits;
|
||||||
|
genesis.nNonce = nNonce;
|
||||||
|
genesis.nVersion = nVersion;
|
||||||
|
genesis.vtx.push_back(txNew);
|
||||||
|
genesis.hashPrevBlock.SetNull();
|
||||||
|
genesis.hashMerkleRoot = genesis.BuildMerkleTree();
|
||||||
|
return genesis;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the genesis block. Note that the output of its generation
|
||||||
|
* transaction cannot be spent since it did not originally exist in the
|
||||||
|
* database.
|
||||||
|
*
|
||||||
|
* CBlock(hash=000000000019d6, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00ffff, nNonce=2083236893, vtx=1)
|
||||||
|
* CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0)
|
||||||
|
* CTxIn(COutPoint(000000, -1), coinbase 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73)
|
||||||
|
* CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B)
|
||||||
|
* vMerkleTree: 4a5e1e
|
||||||
|
*/
|
||||||
|
static CBlock CreateGenesisBlock(uint32_t nTime=1231006505, uint32_t nNonce=2083236893, uint32_t nBits=0x1d00ffff, int32_t nVersion=1, const CAmount& genesisReward=50 * COIN)
|
||||||
|
{
|
||||||
|
const char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
|
||||||
|
CScript genesisOutputScript = CScript() << ParseHex("04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f") << OP_CHECKSIG;
|
||||||
|
return CreateGenesisBlock(pszTimestamp, genesisOutputScript, nTime, nNonce, nBits, nVersion, genesisReward);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main network
|
* Main network
|
||||||
*/
|
*/
|
||||||
@ -52,33 +91,7 @@ public:
|
|||||||
nDefaultPort = 8333;
|
nDefaultPort = 8333;
|
||||||
nPruneAfterHeight = 100000;
|
nPruneAfterHeight = 100000;
|
||||||
|
|
||||||
/**
|
genesis = CreateGenesisBlock();
|
||||||
* Build the genesis block. Note that the output of its generation
|
|
||||||
* transaction cannot be spent since it did not originally exist in the
|
|
||||||
* database.
|
|
||||||
*
|
|
||||||
* CBlock(hash=000000000019d6, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00ffff, nNonce=2083236893, vtx=1)
|
|
||||||
* CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0)
|
|
||||||
* CTxIn(COutPoint(000000, -1), coinbase 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73)
|
|
||||||
* CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B)
|
|
||||||
* vMerkleTree: 4a5e1e
|
|
||||||
*/
|
|
||||||
const char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
|
|
||||||
CMutableTransaction txNew;
|
|
||||||
txNew.nVersion = 1;
|
|
||||||
txNew.vin.resize(1);
|
|
||||||
txNew.vout.resize(1);
|
|
||||||
txNew.vin[0].scriptSig = CScript() << 486604799 << CScriptNum(4) << vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp));
|
|
||||||
txNew.vout[0].nValue = 50 * COIN;
|
|
||||||
txNew.vout[0].scriptPubKey = CScript() << ParseHex("04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f") << OP_CHECKSIG;
|
|
||||||
genesis.vtx.push_back(txNew);
|
|
||||||
genesis.hashPrevBlock.SetNull();
|
|
||||||
genesis.hashMerkleRoot = genesis.BuildMerkleTree();
|
|
||||||
genesis.nVersion = 1;
|
|
||||||
genesis.nTime = 1231006505;
|
|
||||||
genesis.nBits = 0x1d00ffff;
|
|
||||||
genesis.nNonce = 2083236893;
|
|
||||||
|
|
||||||
consensus.hashGenesisBlock = genesis.GetHash();
|
consensus.hashGenesisBlock = genesis.GetHash();
|
||||||
assert(consensus.hashGenesisBlock == uint256S("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"));
|
assert(consensus.hashGenesisBlock == uint256S("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"));
|
||||||
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
|
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
|
||||||
@ -131,13 +144,17 @@ static CMainParams mainParams;
|
|||||||
/**
|
/**
|
||||||
* Testnet (v3)
|
* Testnet (v3)
|
||||||
*/
|
*/
|
||||||
class CTestNetParams : public CMainParams {
|
class CTestNetParams : public CChainParams {
|
||||||
public:
|
public:
|
||||||
CTestNetParams() {
|
CTestNetParams() {
|
||||||
strNetworkID = "test";
|
strNetworkID = "test";
|
||||||
|
consensus.nSubsidyHalvingInterval = 210000;
|
||||||
consensus.nMajorityEnforceBlockUpgrade = 51;
|
consensus.nMajorityEnforceBlockUpgrade = 51;
|
||||||
consensus.nMajorityRejectBlockOutdated = 75;
|
consensus.nMajorityRejectBlockOutdated = 75;
|
||||||
consensus.nMajorityWindow = 100;
|
consensus.nMajorityWindow = 100;
|
||||||
|
consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||||
|
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
|
||||||
|
consensus.nPowTargetSpacing = 10 * 60;
|
||||||
consensus.fPowAllowMinDifficultyBlocks = true;
|
consensus.fPowAllowMinDifficultyBlocks = true;
|
||||||
pchMessageStart[0] = 0x0b;
|
pchMessageStart[0] = 0x0b;
|
||||||
pchMessageStart[1] = 0x11;
|
pchMessageStart[1] = 0x11;
|
||||||
@ -147,9 +164,7 @@ public:
|
|||||||
nDefaultPort = 18333;
|
nDefaultPort = 18333;
|
||||||
nPruneAfterHeight = 1000;
|
nPruneAfterHeight = 1000;
|
||||||
|
|
||||||
//! Modify the testnet genesis block so the timestamp is valid for a later start.
|
genesis = CreateGenesisBlock(1296688602, 414098458);
|
||||||
genesis.nTime = 1296688602;
|
|
||||||
genesis.nNonce = 414098458;
|
|
||||||
consensus.hashGenesisBlock = genesis.GetHash();
|
consensus.hashGenesisBlock = genesis.GetHash();
|
||||||
assert(consensus.hashGenesisBlock == uint256S("0x000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"));
|
assert(consensus.hashGenesisBlock == uint256S("0x000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"));
|
||||||
|
|
||||||
@ -189,7 +204,7 @@ static CTestNetParams testNetParams;
|
|||||||
/**
|
/**
|
||||||
* Regression test
|
* Regression test
|
||||||
*/
|
*/
|
||||||
class CRegTestParams : public CTestNetParams {
|
class CRegTestParams : public CChainParams {
|
||||||
public:
|
public:
|
||||||
CRegTestParams() {
|
CRegTestParams() {
|
||||||
strNetworkID = "regtest";
|
strNetworkID = "regtest";
|
||||||
@ -198,13 +213,14 @@ public:
|
|||||||
consensus.nMajorityRejectBlockOutdated = 950;
|
consensus.nMajorityRejectBlockOutdated = 950;
|
||||||
consensus.nMajorityWindow = 1000;
|
consensus.nMajorityWindow = 1000;
|
||||||
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||||
|
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
|
||||||
|
consensus.nPowTargetSpacing = 10 * 60;
|
||||||
|
consensus.fPowAllowMinDifficultyBlocks = true;
|
||||||
pchMessageStart[0] = 0xfa;
|
pchMessageStart[0] = 0xfa;
|
||||||
pchMessageStart[1] = 0xbf;
|
pchMessageStart[1] = 0xbf;
|
||||||
pchMessageStart[2] = 0xb5;
|
pchMessageStart[2] = 0xb5;
|
||||||
pchMessageStart[3] = 0xda;
|
pchMessageStart[3] = 0xda;
|
||||||
genesis.nTime = 1296688602;
|
genesis = CreateGenesisBlock(1296688602, 2, 0x207fffff);
|
||||||
genesis.nBits = 0x207fffff;
|
|
||||||
genesis.nNonce = 2;
|
|
||||||
consensus.hashGenesisBlock = genesis.GetHash();
|
consensus.hashGenesisBlock = genesis.GetHash();
|
||||||
nDefaultPort = 18444;
|
nDefaultPort = 18444;
|
||||||
assert(consensus.hashGenesisBlock == uint256S("0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"));
|
assert(consensus.hashGenesisBlock == uint256S("0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"));
|
||||||
@ -226,6 +242,11 @@ public:
|
|||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
|
||||||
|
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
|
||||||
|
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
|
||||||
|
base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x35)(0x87)(0xCF).convert_to_container<std::vector<unsigned char> >();
|
||||||
|
base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x35)(0x83)(0x94).convert_to_container<std::vector<unsigned char> >();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
static CRegTestParams regTestParams;
|
static CRegTestParams regTestParams;
|
||||||
|
@ -25,7 +25,7 @@ static CBaseMainParams mainParams;
|
|||||||
/**
|
/**
|
||||||
* Testnet (v3)
|
* Testnet (v3)
|
||||||
*/
|
*/
|
||||||
class CBaseTestNetParams : public CBaseMainParams
|
class CBaseTestNetParams : public CBaseChainParams
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CBaseTestNetParams()
|
CBaseTestNetParams()
|
||||||
@ -39,11 +39,12 @@ static CBaseTestNetParams testNetParams;
|
|||||||
/*
|
/*
|
||||||
* Regression test
|
* Regression test
|
||||||
*/
|
*/
|
||||||
class CBaseRegTestParams : public CBaseTestNetParams
|
class CBaseRegTestParams : public CBaseChainParams
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CBaseRegTestParams()
|
CBaseRegTestParams()
|
||||||
{
|
{
|
||||||
|
nRPCPort = 18332;
|
||||||
strDataDir = "regtest";
|
strDataDir = "regtest";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user