From c8c52de3a05b617bc399e2dd45901e74237b7fc1 Mon Sep 17 00:00:00 2001 From: jtimon Date: Wed, 4 Jun 2014 12:51:29 +0200 Subject: [PATCH] Replace virtual methods with static attributes, chainparams.h depends on protocol.h instead of the other way around --- src/alert.cpp | 1 + src/chainparams.cpp | 51 +++++++++++++++++++++++---------------------- src/chainparams.h | 38 ++++++++++++++++++++------------- src/protocol.cpp | 1 + src/protocol.h | 3 ++- 5 files changed, 53 insertions(+), 41 deletions(-) diff --git a/src/alert.cpp b/src/alert.cpp index 99164d63e59..638f0d7a1c1 100644 --- a/src/alert.cpp +++ b/src/alert.cpp @@ -5,6 +5,7 @@ #include "alert.h" +#include "chainparams.h" #include "key.h" #include "net.h" #include "ui_interface.h" diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 109ee02b0a0..3f4d7f7064b 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -6,8 +6,6 @@ #include "chainparams.h" #include "assert.h" -#include "core.h" -#include "protocol.h" #include "util.h" #include @@ -100,6 +98,7 @@ unsigned int pnSeed[] = class CMainParams : public CChainParams { public: CMainParams() { + networkID = CChainParams::MAIN; // 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 4-byte int at any alignment. @@ -171,27 +170,25 @@ public: addr.nTime = GetTime() - GetRand(nOneWeek) - nOneWeek; vFixedSeeds.push_back(addr); } - } - - virtual const CBlock& GenesisBlock() const { return genesis; } - virtual Network NetworkID() const { return CChainParams::MAIN; } - virtual const vector& FixedSeeds() const { - return vFixedSeeds; + fRequireRPCPassword = true; + fMiningRequiresPeers = true; + fDefaultCheckMemPool = false; + fAllowMinDifficultyBlocks = false; + fRequireStandard = true; + fRPCisTestNet = false; + fMineBlocksOnDemand = false; } -protected: - CBlock genesis; - vector vFixedSeeds; }; static CMainParams mainParams; - // // Testnet (v3) // class CTestNetParams : public CMainParams { public: CTestNetParams() { + networkID = CChainParams::TESTNET; // 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 4-byte int at any alignment. @@ -223,22 +220,25 @@ public: base58Prefixes[SECRET_KEY] = list_of(239); base58Prefixes[EXT_PUBLIC_KEY] = list_of(0x04)(0x35)(0x87)(0xCF); base58Prefixes[EXT_SECRET_KEY] = list_of(0x04)(0x35)(0x83)(0x94); - } - virtual bool AllowMinDifficultyBlocks() const { return true; } - virtual bool RequireStandard() const { return false; } - virtual bool RPCisTestNet() const { return true; } - virtual Network NetworkID() const { return CChainParams::TESTNET; } + fRequireRPCPassword = true; + fMiningRequiresPeers = true; + fDefaultCheckMemPool = false; + fAllowMinDifficultyBlocks = true; + fRequireStandard = false; + fRPCisTestNet = true; + fMineBlocksOnDemand = false; + } }; static CTestNetParams testNetParams; - // // Regression test // class CRegTestParams : public CTestNetParams { public: CRegTestParams() { + networkID = CChainParams::REGTEST; pchMessageStart[0] = 0xfa; pchMessageStart[1] = 0xbf; pchMessageStart[2] = 0xb5; @@ -258,14 +258,15 @@ public: assert(hashGenesisBlock == uint256("0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206")); vSeeds.clear(); // Regtest mode doesn't have any DNS seeds. - } - virtual bool RequireRPCPassword() const { return false; } - virtual bool MiningRequiresPeers() const { return false; } - virtual bool MineBlocksOnDemand() const { return true; } - virtual bool DefaultCheckMemPool() const { return true; } - virtual bool RequireStandard() const { return false; } - virtual Network NetworkID() const { return CChainParams::REGTEST; } + fRequireRPCPassword = false; + fMiningRequiresPeers = false; + fDefaultCheckMemPool = true; + fAllowMinDifficultyBlocks = true; + fRequireStandard = false; + fRPCisTestNet = true; + fMineBlocksOnDemand = true; + } }; static CRegTestParams regTestParams; diff --git a/src/chainparams.h b/src/chainparams.h index 653ca20f017..988e3ac3a49 100644 --- a/src/chainparams.h +++ b/src/chainparams.h @@ -7,17 +7,15 @@ #define BITCOIN_CHAIN_PARAMS_H #include "uint256.h" +#include "core.h" +#include "protocol.h" #include using namespace std; -#define MESSAGE_START_SIZE 4 typedef unsigned char MessageStartChars[MESSAGE_START_SIZE]; -class CAddress; -class CBlock; - struct CDNSSeedData { string name, host; CDNSSeedData(const string &strName, const string &strHost) : name(strName), host(strHost) {} @@ -64,26 +62,26 @@ public: /* Used if GenerateBitcoins is called with a negative number of threads */ int DefaultMinerThreads() const { return nMinerThreads; } - virtual const CBlock& GenesisBlock() const = 0; - virtual bool RequireRPCPassword() const { return true; } + const CBlock& GenesisBlock() const { return genesis; }; + bool RequireRPCPassword() const { return fRequireRPCPassword; } /* Make miner wait to have peers to avoid wasting work */ - virtual bool MiningRequiresPeers() const { return true; } + bool MiningRequiresPeers() const { return fMiningRequiresPeers; } /* Default value for -checkmempool argument */ - virtual bool DefaultCheckMemPool() const { return false; } + bool DefaultCheckMemPool() const { return fDefaultCheckMemPool; } /* Allow mining of a min-difficulty block */ - virtual bool AllowMinDifficultyBlocks() const { return false; } + bool AllowMinDifficultyBlocks() const { return fAllowMinDifficultyBlocks; } /* Make standard checks */ - virtual bool RequireStandard() const { return true; } + bool RequireStandard() const { return fRequireStandard; } /* Make standard checks */ - virtual bool RPCisTestNet() const { return false; } + bool RPCisTestNet() const { return fRPCisTestNet; } const string& DataDir() const { return strDataDir; } /* Make miner stop after a block is found. In RPC, don't return * until nGenProcLimit blocks are generated */ - virtual bool MineBlocksOnDemand() const { return false; } - virtual Network NetworkID() const = 0; + bool MineBlocksOnDemand() const { return fMineBlocksOnDemand; } + Network NetworkID() const { return networkID; } const vector& DNSSeeds() const { return vSeeds; } - const std::vector &Base58Prefix(Base58Type type) const { return base58Prefixes[type]; } - virtual const vector& FixedSeeds() const = 0; + const std::vector& Base58Prefix(Base58Type type) const { return base58Prefixes[type]; } + const vector& FixedSeeds() const { return vFixedSeeds; } int RPCPort() const { return nRPCPort; } protected: CChainParams() {} @@ -103,6 +101,16 @@ protected: int nMinerThreads; vector vSeeds; std::vector base58Prefixes[MAX_BASE58_TYPES]; + Network networkID; + CBlock genesis; + vector vFixedSeeds; + bool fRequireRPCPassword; + bool fMiningRequiresPeers; + bool fDefaultCheckMemPool; + bool fAllowMinDifficultyBlocks; + bool fRequireStandard; + bool fRPCisTestNet; + bool fMineBlocksOnDemand; }; /** diff --git a/src/protocol.cpp b/src/protocol.cpp index c77a92f0206..87b2f238735 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -5,6 +5,7 @@ #include "protocol.h" +#include "chainparams.h" #include "util.h" #ifndef WIN32 diff --git a/src/protocol.h b/src/protocol.h index e6f105fe5c0..6de5d05a723 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -10,7 +10,6 @@ #ifndef __INCLUDED_PROTOCOL_H__ #define __INCLUDED_PROTOCOL_H__ -#include "chainparams.h" #include "netbase.h" #include "serialize.h" #include "uint256.h" @@ -19,6 +18,8 @@ #include #include +#define MESSAGE_START_SIZE 4 + /** Message header. * (4) message start. * (12) command.