Master Core  v0.0.9 - 2abfd2849db8ba7a83957c64eb976b406713c123
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
chainparams.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2013 The Bitcoin developers
3 // Distributed under the MIT/X11 software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #ifndef BITCOIN_CHAIN_PARAMS_H
7 #define BITCOIN_CHAIN_PARAMS_H
8 
9 #include "bignum.h"
10 #include "uint256.h"
11 
12 #include <vector>
13 
14 using namespace std;
15 
16 #define MESSAGE_START_SIZE 4
17 typedef unsigned char MessageStartChars[MESSAGE_START_SIZE];
18 
19 class CAddress;
20 class CBlock;
21 
22 struct CDNSSeedData {
23  string name, host;
24  CDNSSeedData(const string &strName, const string &strHost) : name(strName), host(strHost) {}
25 };
26 
35 {
36 public:
37  enum Network {
41 
42  MAX_NETWORK_TYPES
43  };
44 
45  enum Base58Type {
51 
52  MAX_BASE58_TYPES
53  };
54 
55  const uint256& HashGenesisBlock() const { return hashGenesisBlock; }
56  const MessageStartChars& MessageStart() const { return pchMessageStart; }
57  const vector<unsigned char>& AlertKey() const { return vAlertPubKey; }
58  int GetDefaultPort() const { return nDefaultPort; }
59  const CBigNum& ProofOfWorkLimit() const { return bnProofOfWorkLimit; }
60  int SubsidyHalvingInterval() const { return nSubsidyHalvingInterval; }
61  virtual const CBlock& GenesisBlock() const = 0;
62  virtual bool RequireRPCPassword() const { return true; }
63  const string& DataDir() const { return strDataDir; }
64  virtual Network NetworkID() const = 0;
65  const vector<CDNSSeedData>& DNSSeeds() const { return vSeeds; }
66  const std::vector<unsigned char> &Base58Prefix(Base58Type type) const { return base58Prefixes[type]; }
67  virtual const vector<CAddress>& FixedSeeds() const = 0;
68  int RPCPort() const { return nRPCPort; }
69 protected:
71 
74  // Raw pub key bytes for the broadcast alert signing key.
75  vector<unsigned char> vAlertPubKey;
77  int nRPCPort;
80  string strDataDir;
81  vector<CDNSSeedData> vSeeds;
82  std::vector<unsigned char> base58Prefixes[MAX_BASE58_TYPES];
83 };
84 
89 const CChainParams &Params();
90 
93 
99 
100 inline bool TestNet() {
101  // Note: it's deliberate that this returns "false" for regression test mode.
102  return Params().NetworkID() == CChainParams::TESTNET;
103 }
104 
105 inline bool RegTest() {
106  return Params().NetworkID() == CChainParams::REGTEST;
107 }
108 
109 #endif
const vector< CDNSSeedData > & DNSSeeds() const
Definition: chainparams.h:65
CDNSSeedData(const string &strName, const string &strHost)
Definition: chainparams.h:24
const string & DataDir() const
Definition: chainparams.h:63
vector< unsigned char > vAlertPubKey
Definition: chainparams.h:75
string strDataDir
Definition: chainparams.h:80
int nDefaultPort
Definition: chainparams.h:76
Definition: core.h:396
CBigNum bnProofOfWorkLimit
Definition: chainparams.h:78
bool TestNet()
Definition: chainparams.h:100
const CBigNum & ProofOfWorkLimit() const
Definition: chainparams.h:59
STL namespace.
CChainParams defines various tweakable parameters of a given instance of the Bitcoin system...
Definition: chainparams.h:34
virtual bool RequireRPCPassword() const
Definition: chainparams.h:62
bool RegTest()
Definition: chainparams.h:105
const std::vector< unsigned char > & Base58Prefix(Base58Type type) const
Definition: chainparams.h:66
int GetDefaultPort() const
Definition: chainparams.h:58
#define MESSAGE_START_SIZE
Definition: chainparams.h:16
C++ wrapper for BIGNUM (OpenSSL bignum)
Definition: bignum.h:57
A CService with information about it as peer.
Definition: protocol.h:68
int RPCPort() const
Definition: chainparams.h:68
bool SelectParamsFromCommandLine()
Looks for -regtest or -testnet and then calls SelectParams as appropriate.
int SubsidyHalvingInterval() const
Definition: chainparams.h:60
Network
Definition: netbase.h:26
uint256 hashGenesisBlock
Definition: chainparams.h:72
vector< CDNSSeedData > vSeeds
Definition: chainparams.h:81
256-bit unsigned integer
Definition: uint256.h:531
const CChainParams & Params()
Return the currently selected parameters.
string name
Definition: chainparams.h:23
const vector< unsigned char > & AlertKey() const
Definition: chainparams.h:57
MessageStartChars pchMessageStart
Definition: chainparams.h:73
void SelectParams(CChainParams::Network network)
Sets the params returned by Params() to those for the given network.
virtual Network NetworkID() const =0
const uint256 & HashGenesisBlock() const
Definition: chainparams.h:55
int nSubsidyHalvingInterval
Definition: chainparams.h:79
const MessageStartChars & MessageStart() const
Definition: chainparams.h:56
unsigned char MessageStartChars[MESSAGE_START_SIZE]
Definition: chainparams.h:17