Untitled


SUBMITTED BY: Guest

DATE: June 8, 2014, 8:36 p.m.

FORMAT: C++

SIZE: 17.7 kB

HITS: 1035

  1. // Copyright (c) 2010 Satoshi Nakamoto
  2. // Copyright (c) 2009-2014 The Bitcoin developers
  3. // Copyright (c) 2013-2014 The Dogecoin developers
  4. // Copyright (c) 2014 The Inutoshi developers
  5. // Distributed under the MIT/X11 software license, see the accompanying
  6. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
  7. #include "chainparams.h"
  8. #include "assert.h"
  9. #include "core.h"
  10. #include "protocol.h"
  11. #include "util.h"
  12. #include <boost/assign/list_of.hpp>
  13. using namespace boost::assign;
  14. //
  15. // Main network
  16. //
  17. unsigned int pnSeed[] =
  18. {
  19. 0xdc7fa218, 0xb4b68d18, 0xd286166c, 0xb0bbb052, 0x5d9fe2bc, 0x0256c0ad, 0x4297d23e, 0x2cf5226c,
  20. 0xa80dfb94, 0xf1a134d0, 0x4215042e, 0x7c51486d, 0x3a51486d, 0xd5c63832, 0xde5b7e02, 0xdb176018,
  21. 0x332745ad, 0x7172c7c6, 0xfb90b742, 0x134dd9a2, 0x25e238ae, 0xc332ed40, 0x24a0a4c6, 0xcd5e0905,
  22. 0xcaca87dc, 0xe28ac836, 0xc79c2942, 0x672baa6b, 0xa2012363, 0xf848f160, 0x34747b6d, 0xe6f7f1c0,
  23. 0xbbc51955, 0x4e106d5b, 0x69e47046, 0x4ca0d54a, 0x6d0a65c6, 0x441d9c32, 0x436d5d81, 0xbdfffbce,
  24. 0x1cd2f2a2, 0x112daa6b, 0x30b85f47, 0x02100ab9, 0x2e044bad, 0x2071ff45, 0x5f98b54b, 0x55a40905,
  25. 0x651aaa6b, 0xe99ef2c5, 0x17c35ad0, 0x8db55d41, 0x587921cb, 0x3865ea2e, 0xba0d63c0, 0x8eb88b52,
  26. 0x7a80a7c7, 0x4d5c5747, 0x3fd4f3a2, 0xf825be43, 0x161eaa6b, 0x43eda52e, 0x03b422b0, 0x5c0e63c0,
  27. 0x6dfc47d4, 0x1a017ebc, 0xfb65c7c6, 0x535809b0, 0x8b58f181, 0x2454ed5e, 0x68220254, 0x7aaca143,
  28. 0x91c10a55, 0x8bd74ece, 0xd67ef118, 0x0a15aa46, 0xa0c1b1ad, 0x4052d74a, 0xede8494b, 0xd5c49452,
  29. 0x8fc97e18, 0x78c01c54, 0x2fbcf1c0, 0x335a046c, 0x3dc8834b, 0x6c550025, 0x278ab5d1, 0xc4422e4e,
  30. 0x45e2073a, 0xa83fbd41, 0x738d1581, 0x9a3c0cc3, 0xf48d5436, 0x5ba835c6, 0xc63aaa6b, 0xd33328bc,
  31. 0x9f703ab0, 0xee45ba36, 0x78417244, 0xf9e6e460, 0x288eb06c, 0x22a3e417, 0xdade69c6, 0x8b7bc447,
  32. 0x7975c244, 0x51ef4cb7, 0x48ecffad, 0x32bf0918, 0xa98baa51, 0xedf5fa60, 0xe0aca658, 0x68fca0d9,
  33. 0xe762c7c6, 0x1d2bc24e, 0x612d454b, 0x759fd295, 0xc218ef17, 0xb5c0b162, 0x5aaed56c, 0x1b52dc62,
  34. 0x416c2d05, 0x42fbbfc3, 0xdc63134c, 0xc1b9e2bc, 0x0bd7f74d, 0x5eb9e2bc, 0xaf05a843, 0xafdf2e32,
  35. 0x7d35bdd5, 0x8feeaa6b, 0x3e9e7d18, 0x47d1079d, 0x4d1d6a57, 0xc6cbffad, 0x0e80a7c7, 0x8dd0e8d8,
  36. 0x334a066b, 0x31fae3bc, 0x0669e53a, 0x632c784c, 0x30381cb9, 0xaea5d118, 0xb7ee9ade, 0x4c37175e,
  37. 0x9885f3a2, 0xbde5f6d8, 0xae62f3a2, 0xe276692e, 0xba5d1218, 0x511d5618, 0x7e81d78f, 0x14eb4c90,
  38. 0x44e5c780, 0xe2708abc, 0xe261d3c6, 0x7aca584a, 0x8c037786, 0x7e3baa6b, 0xb912d8a2, 0x170763c0,
  39. 0xbed1d23e, 0xdce46ccf, 0x5cdb1748, 0xc215f5ac, 0x99f7cabc, 0x4d658248, 0x3798bacd, 0x2dbb8932,
  40. 0xe93faa6b, 0x639f534b, 0x43f6754c, 0x0440bd44, 0x4919aa6b, 0x30644aad, 0xc96e9c4e, 0x421daa6b,
  41. 0x90760248, 0x096a1bc6, 0xba4b40ad, 0x3574fa5b, 0x20fe0732, 0x41535143, 0xdf843944, 0x103b8dd1,
  42. 0xde76a032, 0xf405e447, 0xcc86bb25, 0xb3b22e6c, 0x12c35ad0, 0xa330aa6b, 0x14e69544, 0x177becd1,
  43. 0xf32e484b, 0x15b1ce6d, 0x0d2c7662, 0x862d6441, 0xa2c39805, 0xc7eeaa6b, 0xf38f494c, 0x16d5b947,
  44. 0x9fb8e2bc, 0xe13e175e, 0x656c39ad, 0x7a384946, 0x10460905, 0x9cf870d1, 0xb375c60e, 0x481cba6a,
  45. 0x87ed6cd8, 0x2d7b67ae, 0x01540f48, 0x84028fc6, 0xdd85c144, 0x8f53ee54, 0x1a9e4fad, 0x84acc548,
  46. 0x52d51248, 0xac47ab43, 0xf16ab743, 0x65ab6f18, 0xa8f73060, 0x56c84832, 0x9c6a604a, 0x8ef1ffad,
  47. 0x4676a043, 0x6568c23e, 0x416ed459, 0xb586ec62, 0x122e98c2, 0x81a65618, 0x17db048e, 0x690f3b25,
  48. 0xb58c4e32, 0x8e69e297, 0xd4dcaf42, 0x5158ac43, 0x0f9da082, 0x6cbaee60, 0x9e115b82, 0x55dffe96,
  49. 0xa899f660, 0x846a0905, 0xf53a9252, 0xb283a4b8, 0x6db66b18, 0x867316b2, 0xdfad5753, 0x59995dd0,
  50. 0x5e1caa6b, 0x08b3f160, 0x056a1bc6, 0x9c5403ae, 0x738cae43, 0x77fd211b, 0xd8e3a951, 0x150aad43,
  51. 0x558809b0, 0xf04f454a, 0x09daf150, 0x3a433d63, 0xa4daf1c0, 0x4d551ac7, 0xd0edec69, 0xbe36f118,
  52. 0x5b76b818, 0x8d919bd8, 0xbc92ea52, 0xe8096ec3, 0x1895e2bc, 0xfd053360, 0x701c42ad, 0x9a8e9bd8,
  53. 0xac06aa6b, 0xc9851a56, 0x54f65e46, 0xb39e306c, 0x880763c0, 0x361f1fb0, 0x95a5b04c, 0x897319ad,
  54. 0xc1b9be46, 0xe6d89d9d, 0xa75cd443, 0xb7361147, 0x630b8b25, 0x5a2e4ea6, 0x203bbb4b, 0x5b4b6c18,
  55. 0x9dbbac43, 0x6d0663c0, 0x1f115536, 0x61d80718, 0xf4fde097, 0xfb50e162, 0x954a6276, 0x0006ee47,
  56. 0x30b26eae, 0xf5737358, 0xf9a5fdce, 0xf2c75d18, 0xfda64b25, 0xd565d1a2, 0xf055a743, 0x10aaa545,
  57. 0xa70c63c0, 0xa15a4450, 0xdbcb13ad, 0xdc705246, 0x02f7e9c7, 0xe57e6763, 0x65604ead, 0x07df1955,
  58. 0x882faa6b, 0xb4286b18, 0x539747c0, 0xc9b6a1c0, 0xb76e7f46, 0xf3418432, 0xd5bbb153, 0xb840d3a2,
  59. 0x6c0717d9, 0xb14109b0, 0x94076181, 0xf40aa953, 0x08de89c3, 0x06bdaa4d, 0x27efae32, 0x5ba4fe45,
  60. 0x1e7410cc, 0x57e847d4, 0xe5425177, 0xb50b714c, 0x06513532, 0xfde617c6, 0xe05c3532, 0x0af30852,
  61. 0xa2a33a60, 0x2cc7f3a2, 0x5777cf57, 0x313477d5, 0x311544c1, 0x49f4aa6b, 0xef01ef17, 0x07db33d4,
  62. 0x0a60c947, 0xe4174e4d, 0x34058a12, 0x411e3ab8, 0xfc4a9532, 0x5bcaf082, 0x55c21955, 0x489a32b6,
  63. 0xf1f7154c, 0x60fa9f6e, 0x4dc4ec57, 0x5fe7a743, 0x1309e552, 0x03e12c42, 0x07f4175e, 0xcb56aa43,
  64. 0x9d411787, 0xc1686041, 0xeec21955, 0xe97cf3a2, 0x11cc6044, 0xce9b2b47, 0x32bb53d4, 0xc7153b25,
  65. 0x7c24188d, 0x1640c947, 0x1606b941, 0x671d864b, 0xb4430118, 0x3c6641ad, 0xf99000c0, 0x57a745ad,
  66. 0xf098880e, 0x7cd14298, 0xb53316b2, 0x5b0749ae, 0x80c734c6, 0x5bb26318, 0xf5734761, 0xb5a0f1c0,
  67. 0x643f3cae, 0xd034324a, 0xd5ef81ae, 0xa383e447, 0x8c820298, 0xeba139ae, 0x1e73c80e, 0x0c3fe743,
  68. 0x8ac65918, 0x03104081, 0xa486bb25, 0x24165343, 0x15c67118, 0x6204f948, 0x4e3d5bc6, 0x3ef9f382,
  69. 0xe3e7524a, 0x9f10634c, 0xfba8794c, 0x0c2d306c, 0xb99df762, 0x3e1a4d47, 0x3f6c3951, 0xd373354d,
  70. 0xca206c4a, 0x6f454aad, 0x02f5af43, 0x0f35831f, 0x31bcd4ad, 0xfa34da48, 0x3a598cae, 0x26ef7f4c,
  71. 0xa104b648, 0x9cf2134c, 0xc5c2336c, 0x448f9c5b, 0x55b8f1c0, 0x115917ad, 0x33216f4b, 0x5c67692e,
  72. 0xd436c658, 0x7c22da36, 0x0ce9e217, 0xa62a3160, 0xb08803ae, 0xf918c162, 0x0e9c096c, 0xf250119c,
  73. 0x0d987f47, 0x40254832, 0x610df245, 0xa55cf3a2, 0xd4886e4a, 0xc172aa43, 0x1af4c04e, 0xbe2d47ae,
  74. 0x58a0cf45, 0xa414dc48, 0xdde3f3a2, 0x26562843, 0x9aea0455, 0xb1b63c44, 0xcef89963, 0x12005d4d,
  75. 0x21c21754, 0x18eef160, 0x4903a1cf, 0x9b023818, 0x4685336c, 0xc9f31556, 0xe6dd0a18, 0x099630ad,
  76. 0x10dabd32, 0xcaaf708c, 0xc53ebb25, 0x42657a90, 0x74e3614c, 0x365c4048, 0x7cf9f3a2, 0x7f2addb0,
  77. 0xe6bf09b0, 0x1165fa5b, 0xcef84e43, 0x895be7cf, 0xb2116c4a, 0xa423108a, 0xa3bec236, 0x196db14c,
  78. 0xe05f6f4f, 0x07ee0118, 0xdcb8f8ce, 0xbd5e7918, 0x2159ab4d, 0x8ae54170, 0x527b0905, 0x7c8d3d44,
  79. 0x0d552705, 0xe5b21cad, 0x1b8ae64e, 0xc79cab55, 0x4e88e2bc, 0x444c1581, 0x86147c4c, 0xb4222648,
  80. 0x4136daad, 0x437ea22e, 0x2b92694c, 0x154baa6b, 0x0555795b, 0x9b484232, 0x6944f181, 0x036a6259,
  81. 0x1808ff60, 0xb0403148, 0x7b5e1b59, 0xdd30fb62, 0x4583266c, 0xb289c96d, 0x35e4aa6b, 0x50a23532,
  82. 0x3f1263c0, 0x763aae6c, 0xa729c144, 0x5ee5c64c, 0x02bf35d0, 0x367f3ac6, 0xfe547940, 0x2e1ea353,
  83. 0xe798ee48, 0x6c058495, 0x755dd5cb, 0x2ca6ef63, 0x7a0574bc, 0x9ac81c2e, 0xa5b33e44, 0x4fe69953,
  84. 0xf9556d62, 0x086a1bc6, 0xac28126c, 0x4fa7e6ad, 0xd4293d3e, 0x4e4f764b, 0x718849ad, 0x8139ff18,
  85. 0x4c6118b9, 0x65444c90, 0x371eeda9, 0xe2b4c0ad, 0xcd01f5da, 0x7671c344, 0x3021f518, 0x26369c4b,
  86. 0xd7f6f360, 0xdb55336c, 0xccdc7d18, 0x51d732c6, 0x335b5b4c, 0x094c2d05, 0x0dd546a6, 0x83d33118,
  87. 0x33dcff6d, 0xfd40b64c, 0x86e93f18, 0x87e2c780, 0xf0e1c1b2, 0xc67be347, 0x1df9d243, 0x6a646dae,
  88. 0xb0833b47, 0x8f457e4c, 0x0dbbe2bc, 0x4ac048c6, 0x7cc2194c, 0x1c84bb25, 0xb66b8218, 0xe3ee027b,
  89. 0x5cd4048e, 0xadcb0b18, 0xdc036e18, 0xb62e7999, 0xdee95243, 0x1ccdc344, 0x91cde560, 0xc8e0f460,
  90. 0xbea0f1c0, 0x35747b6d, 0x9686bb25, 0x28ce3c47, 0xaf0e5e48, 0x87f58f4b, 0x124dd9a2, 0xa21463c0,
  91. 0xa8f94952, 0xf71fd586, 0xe6fa056c, 0x92b86bb8, 0x707d6981, 0x22870732, 0x116fef62, 0xe0fd3ead,
  92. 0x78c2814e, 0x95d882c3, 0xdb3cba32, 0xe8b0e2bc, 0xb9c69b18, 0xe29ed783, 0x26c01118, 0xcbcd8451,
  93. 0xf1d02e18, 0x1b55aead, 0xb5549bc0, 0x47baa232, 0xbcf8f1c0, 0xae29dbb2, 0x0b881cd2, 0x75c8bb25,
  94. };
  95. class CMainParams : public CChainParams {
  96. public:
  97. CMainParams() {
  98. // The message start string is designed to be unlikely to occur in normal data.
  99. // The characters are rarely used upper ASCII, not valid as UTF-8, and produce
  100. // a large 4-byte int at any alignment.
  101. pchMessageStart[0] = 0xc0;
  102. pchMessageStart[1] = 0xc0;
  103. pchMessageStart[2] = 0xc0;
  104. pchMessageStart[3] = 0xc0;
  105. vAlertPubKey = ParseHex("04d4da7a5dae4db797d9b0644d57a5cd50e05a70f36091cd62e2fc41c98ded06340be5a43a35e185690cd9cde5d72da8f6d065b499b06f51dcfba14aad859f443a");
  106. nDefaultPort = 22556;
  107. nRPCPort = 22555;
  108. bnProofOfWorkLimit = CBigNum(~uint256(0) >> 20);
  109. nSubsidyHalvingInterval = 210000;
  110. // Build the genesis block. Note that the output of the genesis coinbase cannot
  111. // be spent as it did not originally exist in the database.
  112. //
  113. // CBlock(hash=000000000019d6, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00ffff, nNonce=2083236893, vtx=1)
  114. // CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0)
  115. // CTxIn(COutPoint(000000, -1), coinbase 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73)
  116. // CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B)
  117. // vMerkleTree: 4a5e1e
  118. const char* pszTimestamp = "Nintondo";
  119. CTransaction txNew;
  120. txNew.vin.resize(1);
  121. txNew.vout.resize(1);
  122. txNew.vin[0].scriptSig = CScript() << 486604799 << CBigNum(4) << vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp));
  123. txNew.vout[0].nValue = 88 * COIN;
  124. txNew.vout[0].scriptPubKey = CScript() << ParseHex("040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9") << OP_CHECKSIG;
  125. genesis.vtx.push_back(txNew);
  126. genesis.hashPrevBlock = 0;
  127. genesis.hashMerkleRoot = genesis.BuildMerkleTree();
  128. genesis.nVersion = 1;
  129. genesis.nTime = 1386325540;
  130. genesis.nBits = 0x1e0ffff0;
  131. genesis.nNonce = 99943;
  132. hashGenesisBlock = genesis.GetHash();
  133. assert(hashGenesisBlock == uint256("0x1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691"));
  134. assert(genesis.hashMerkleRoot == uint256("0x5b2a3f53f605d62c53e62932dac6925e3d74afa5a4b459745c36d42d0ed26a69"));
  135. vSeeds.push_back(CDNSSeedData("dogecoin.com", "seed.dogecoin.com"));
  136. vSeeds.push_back(CDNSSeedData("mophides.com", "seed.mophides.com"));
  137. vSeeds.push_back(CDNSSeedData("dglibrary.org", "seed.dglibrary.org"));
  138. vSeeds.push_back(CDNSSeedData("dogechain.info", "seed.dogechain.info"));
  139. // Workaround for Boost not being quite compatible with C++11;
  140. std::vector<unsigned char> pka = list_of(30);
  141. base58Prefixes[PUBKEY_ADDRESS] = pka;
  142. std::vector<unsigned char> sca = list_of(22);
  143. base58Prefixes[SCRIPT_ADDRESS] = sca;
  144. std::vector<unsigned char> sk = list_of(158);
  145. base58Prefixes[SECRET_KEY] = sk;
  146. std::vector<unsigned char> epk = list_of(0x04)(0x88)(0xC4)(0x2E);
  147. base58Prefixes[EXT_PUBLIC_KEY] = epk;
  148. std::vector<unsigned char> esk = list_of(0x04)(0x88)(0xE1)(0xF4);
  149. base58Prefixes[EXT_SECRET_KEY] = esk;
  150. // Convert the pnSeeds array into usable address objects.
  151. for (unsigned int i = 0; i < ARRAYLEN(pnSeed); i++)
  152. {
  153. // It'll only connect to one or two seed nodes because once it connects,
  154. // it'll get a pile of addresses with newer timestamps.
  155. // Seed nodes are given a random 'last seen time' of between one and two
  156. // weeks ago.
  157. const uint64_t nOneWeek = 7*24*60*60;
  158. struct in_addr ip;
  159. memcpy(&ip, &pnSeed[i], sizeof(ip));
  160. CAddress addr(CService(ip, GetDefaultPort()));
  161. addr.nTime = GetTime() - GetRand(nOneWeek) - nOneWeek;
  162. vFixedSeeds.push_back(addr);
  163. }
  164. }
  165. virtual const CBlock& GenesisBlock() const { return genesis; }
  166. virtual Network NetworkID() const { return CChainParams::MAIN; }
  167. virtual const vector<CAddress>& FixedSeeds() const {
  168. return vFixedSeeds;
  169. }
  170. protected:
  171. CBlock genesis;
  172. vector<CAddress> vFixedSeeds;
  173. };
  174. static CMainParams mainParams;
  175. //
  176. // Testnet (v3)
  177. //
  178. class CTestNetParams : public CMainParams {
  179. public:
  180. CTestNetParams() {
  181. // The message start string is designed to be unlikely to occur in normal data.
  182. // The characters are rarely used upper ASCII, not valid as UTF-8, and produce
  183. // a large 4-byte int at any alignment.
  184. pchMessageStart[0] = 0xfc;
  185. pchMessageStart[1] = 0xc1;
  186. pchMessageStart[2] = 0xb7;
  187. pchMessageStart[3] = 0xdc;
  188. vAlertPubKey = ParseHex("042756726da3c7ef515d89212ee1705023d14be389e25fe15611585661b9a20021908b2b80a3c7200a0139dd2b26946606aab0eef9aa7689a6dc2c7eee237fa834");
  189. nDefaultPort = 44556;
  190. nRPCPort = 44555;
  191. strDataDir = "testnet3";
  192. // Modify the testnet genesis block so the timestamp is valid for a later start.
  193. genesis.nTime = 1391503289;
  194. genesis.nNonce = 997879;
  195. hashGenesisBlock = genesis.GetHash();
  196. assert(hashGenesisBlock == uint256("0xbb0a78264637406b6360aad926284d544d7049f45189db5664f3c4d07350559e"));
  197. vFixedSeeds.clear();
  198. vSeeds.clear();
  199. vSeeds.push_back(CDNSSeedData("testdoge.lionservers.de", "testdoge-seed.lionservers.de"));
  200. vSeeds.push_back(CDNSSeedData("lionservers.de", "testdoge-seed-static.lionservers.de"));
  201. // Boost sucks, and should not be used. Workaround for Boost not being compatible with C++11;
  202. std::vector<unsigned char> pka = list_of(113);
  203. base58Prefixes[PUBKEY_ADDRESS] = pka;
  204. std::vector<unsigned char> sca = list_of(196);
  205. base58Prefixes[SCRIPT_ADDRESS] = sca;
  206. std::vector<unsigned char> sk = list_of(241);
  207. base58Prefixes[SECRET_KEY] = sk;
  208. std::vector<unsigned char> epk = list_of(0x04)(0x35)(0xD1)(0xDF);
  209. base58Prefixes[EXT_PUBLIC_KEY] = epk;
  210. std::vector<unsigned char> esk = list_of(0x04)(0x35)(0x75)(0xA4);
  211. base58Prefixes[EXT_SECRET_KEY] = esk;
  212. }
  213. virtual Network NetworkID() const { return CChainParams::TESTNET; }
  214. };
  215. static CTestNetParams testNetParams;
  216. //
  217. // Regression test
  218. //
  219. class CRegTestParams : public CTestNetParams {
  220. public:
  221. CRegTestParams() {
  222. pchMessageStart[0] = 0xfa;
  223. pchMessageStart[1] = 0xbf;
  224. pchMessageStart[2] = 0xb5;
  225. pchMessageStart[3] = 0xda;
  226. nSubsidyHalvingInterval = 150;
  227. bnProofOfWorkLimit = CBigNum(~uint256(0) >> 1);
  228. genesis.nTime = 1296688602;
  229. genesis.nBits = 0x207fffff;
  230. genesis.nNonce = 2;
  231. hashGenesisBlock = genesis.GetHash();
  232. nDefaultPort = 18444;
  233. strDataDir = "regtest";
  234. assert(hashGenesisBlock == uint256("0x3d2160a3b5dc4a9d62e7e66a295f70313ac808440ef7400d6c0772171ce973a5"));
  235. vSeeds.clear(); // Regtest mode doesn't have any DNS seeds.
  236. }
  237. virtual bool RequireRPCPassword() const { return false; }
  238. virtual Network NetworkID() const { return CChainParams::REGTEST; }
  239. };
  240. static CRegTestParams regTestParams;
  241. static CChainParams *pCurrentParams = &mainParams;
  242. const CChainParams &Params() {
  243. return *pCurrentParams;
  244. }
  245. void SelectParams(CChainParams::Network network) {
  246. switch (network) {
  247. case CChainParams::MAIN:
  248. pCurrentParams = &mainParams;
  249. break;
  250. case CChainParams::TESTNET:
  251. pCurrentParams = &testNetParams;
  252. break;
  253. case CChainParams::REGTEST:
  254. pCurrentParams = &regTestParams;
  255. break;
  256. default:
  257. assert(false && "Unimplemented network");
  258. return;
  259. }
  260. }
  261. bool SelectParamsFromCommandLine() {
  262. bool fRegTest = GetBoolArg("-regtest", false);
  263. bool fTestNet = GetBoolArg("-testnet", false);
  264. if (fTestNet && fRegTest) {
  265. return false;
  266. }
  267. if (fRegTest) {
  268. SelectParams(CChainParams::REGTEST);
  269. } else if (fTestNet) {
  270. SelectParams(CChainParams::TESTNET);
  271. } else {
  272. SelectParams(CChainParams::MAIN);
  273. }
  274. return true;
  275. }

comments powered by Disqus