Anoncoin  0.9.4
P2P Digital Currency
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 // Copyright (c) 2013-2015 The Anoncoin Core developers
4 // Distributed under the MIT/X11 software license, see the accompanying
5 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
6 
7 #ifndef ANONCOIN_CHAIN_PARAMS_H
8 #define ANONCOIN_CHAIN_PARAMS_H
9 
10 // Many builder specific things set in the config file, ENABLE_WALLET is a good example.
11 // Don't forget to include it this way in your source or header files. GR Note: The
12 // latter is now my preferred method, with a note in the source file about how the builder
13 // config file has now been loaded.
14 #if defined(HAVE_CONFIG_H)
15 #include "config/anoncoin-config.h"
16 #endif
17 
18 #include "bignum.h"
19 #include "uint256.h"
20 
21 #include <vector>
22 
23 using namespace std;
24 
25 #define MESSAGE_START_SIZE 4
26 typedef unsigned char MessageStartChars[MESSAGE_START_SIZE];
27 
28 class CAddress;
29 class CBlock;
30 
31 // DNS seeds
32 // Each pair gives a source name and a seed name.
33 // The first name is used as information source for addrman.
34 // The second name should resolve to a list of seed addresses.
35 struct CDNSSeedData {
36  string name, host;
37  CDNSSeedData(const string &strName, const string &strHost) : name(strName), host(strHost) {}
38 };
39 
48 {
49 public:
50  enum Network {
54 
55  MAX_NETWORK_TYPES
56  };
57 
58  enum Base58Type {
64 
65  MAX_BASE58_TYPES
66  };
67 
69  SCRYPT_ANC, // Always needs to be the default, and compatible with blocks on the chain from genesis onward...
72 
73  MAX_ALGO_TYPES
74  };
75 
76  const uint256& HashGenesisBlock() const { return hashGenesisBlock; }
77  const MessageStartChars& MessageStart() const { return pchMessageStart; }
78  const vector<unsigned char>& AlertKey() const { return vAlertPubKey; }
79  int GetDefaultPort() const { return nDefaultPort; }
80  const CBigNum& ProofOfWorkLimit( MinedWithAlgo mwa = SCRYPT_ANC ) const { return bnProofOfWorkLimit[ mwa ]; }
81  virtual const CBlock& GenesisBlock() const = 0;
82  virtual bool RequireRPCPassword() const { return true; }
83  const string& DataDir() const { return strDataDir; }
84  virtual Network NetworkID() const = 0;
85  std::string NetworkIDString() const { return strNetworkID; }
86  const vector<CDNSSeedData>& DNSSeeds() const { return vSeeds; }
87 #ifdef ENABLE_I2PSAM
88  const vector<CDNSSeedData>& i2pDNSSeeds() const { return i2pvSeeds; }
89 #endif
90  const std::vector<unsigned char> &Base58Prefix(Base58Type type) const { return base58Prefixes[type]; }
91  virtual const vector<CAddress>& FixedSeeds() const = 0;
92  int RPCPort() const { return nRPCPort; }
93 protected:
95 
98  // Raw pub key bytes for the broadcast alert signing key.
99  vector<unsigned char> vAlertPubKey;
101  int nRPCPort;
102  CBigNum bnProofOfWorkLimit[ MAX_ALGO_TYPES ];
103  string strDataDir;
104  vector<CDNSSeedData> vSeeds;
105 #ifdef ENABLE_I2PSAM
106  vector<CDNSSeedData> i2pvSeeds;
107 #endif
108  std::vector<unsigned char> base58Prefixes[MAX_BASE58_TYPES];
109  std::string strNetworkID;
110 };
111 
116 const CChainParams &Params();
117 
119 void SelectParams(CChainParams::Network network);
120 
126 
127 inline bool TestNet() {
128  // Note: it's deliberate that this returns "false" for regression test mode.
129  return Params().NetworkID() == CChainParams::TESTNET;
130 }
131 
132 inline bool RegTest() {
133  return Params().NetworkID() == CChainParams::REGTEST;
134 }
135 
136 #endif
const vector< CDNSSeedData > & DNSSeeds() const
Definition: chainparams.h:86
CDNSSeedData(const string &strName, const string &strHost)
Definition: chainparams.h:37
const string & DataDir() const
Definition: chainparams.h:83
vector< unsigned char > vAlertPubKey
Definition: chainparams.h:99
string strDataDir
Definition: chainparams.h:103
Definition: core.h:394
bool TestNet()
Definition: chainparams.h:127
CChainParams defines various tweakable parameters of a given instance of the Anoncoin system...
Definition: chainparams.h:47
virtual bool RequireRPCPassword() const
Definition: chainparams.h:82
bool RegTest()
Definition: chainparams.h:132
const std::vector< unsigned char > & Base58Prefix(Base58Type type) const
Definition: chainparams.h:90
std::string NetworkIDString() const
Definition: chainparams.h:85
int GetDefaultPort() const
Definition: chainparams.h:79
#define MESSAGE_START_SIZE
Definition: chainparams.h:25
C++ wrapper for BIGNUM (OpenSSL bignum)
Definition: bignum.h:57
A CService with information about it as peer.
Definition: protocol.h:91
int RPCPort() const
Definition: chainparams.h:92
bool SelectParamsFromCommandLine()
Looks for -regtest or -testnet and then calls SelectParams as appropriate.
Network
Definition: netbase.h:29
uint256 hashGenesisBlock
Definition: chainparams.h:96
vector< CDNSSeedData > vSeeds
Definition: chainparams.h:104
256-bit unsigned integer
Definition: uint256.h:532
const CChainParams & Params()
Return the currently selected parameters.
string name
Definition: chainparams.h:36
const vector< unsigned char > & AlertKey() const
Definition: chainparams.h:78
std::string strNetworkID
Definition: chainparams.h:109
MessageStartChars pchMessageStart
Definition: chainparams.h:97
void SelectParams(CChainParams::Network network)
Sets the params returned by Params() to those for the given network.
virtual Network NetworkID() const =0
const CBigNum & ProofOfWorkLimit(MinedWithAlgo mwa=SCRYPT_ANC) const
Definition: chainparams.h:80
const uint256 & HashGenesisBlock() const
Definition: chainparams.h:76
const MessageStartChars & MessageStart() const
Definition: chainparams.h:77
unsigned char MessageStartChars[MESSAGE_START_SIZE]
Definition: chainparams.h:26