diff --git a/contrib/seeds/generate-seeds.py b/contrib/seeds/generate-seeds.py --- a/contrib/seeds/generate-seeds.py +++ b/contrib/seeds/generate-seeds.py @@ -126,8 +126,9 @@ sys.exit(1) g = sys.stdout indir = sys.argv[1] - g.write('#ifndef BITCOIN_CHAINPARAMSSEEDS_H\n') - g.write('#define BITCOIN_CHAINPARAMSSEEDS_H\n') + g.write('#include \n') + g.write('#include \n') + g.write('#include \n') g.write('/**\n') g.write(' * List of fixed seed nodes for the bitcoin network\n') g.write(' * @{} by contrib/seeds/generate-seeds.py\n'.format('generated')) @@ -141,7 +142,20 @@ g.write('\n') with open(os.path.join(indir, 'nodes_test.txt'), 'r', encoding="utf8") as f: process_nodes(g, f, 'pnSeed6_test', 18333) - g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n') + g.write( + 'std::vector FixedSeedsList(const std::string &chain) {\n') + g.write(' if (chain == CBaseChainParams::MAIN) {\n') + g.write(' return std::vector(\n') + g.write(' pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main));\n') + g.write(' }\n') + g.write(' if (chain == CBaseChainParams::TESTNET) {\n') + g.write(' return std::vector(\n') + g.write(' pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test));\n') + g.write(' }\n') + g.write(' throw std::runtime_error(\n') + g.write( + ' strprintf("%s: Unknown or unsupported chain %s.", __func__, chain));\n') + g.write('}\n') if __name__ == '__main__': diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -440,6 +440,7 @@ cashaddrenc.cpp chainparams.cpp chainparamsconstants.cpp + chainparamsseeds.cpp config.cpp consensus/merkle.cpp coins.cpp diff --git a/src/chainparams.h b/src/chainparams.h --- a/src/chainparams.h +++ b/src/chainparams.h @@ -142,4 +142,6 @@ const CCheckpointData &CheckpointData(const std::string &chain); +std::vector FixedSeedsList(const std::string &chain); + #endif // BITCOIN_CHAINPARAMS_H diff --git a/src/chainparams.cpp b/src/chainparams.cpp --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -7,7 +7,6 @@ #include #include -#include #include #include #include @@ -200,9 +199,7 @@ base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E}; base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4}; cashaddrPrefix = "bitcoincash"; - - vFixedSeeds = std::vector( - pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main)); + vFixedSeeds = FixedSeedsList(CBaseChainParams::MAIN); fDefaultConsistencyChecks = false; fRequireStandard = true; @@ -344,8 +341,7 @@ base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF}; base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94}; cashaddrPrefix = "bchtest"; - vFixedSeeds = std::vector( - pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test)); + vFixedSeeds = FixedSeedsList(CBaseChainParams::TESTNET); fDefaultConsistencyChecks = false; fRequireStandard = false; diff --git a/src/chainparamsseeds.h b/src/chainparamsseeds.cpp rename from src/chainparamsseeds.h rename to src/chainparamsseeds.cpp --- a/src/chainparamsseeds.h +++ b/src/chainparamsseeds.cpp @@ -1,5 +1,6 @@ -#ifndef BITCOIN_CHAINPARAMSSEEDS_H -#define BITCOIN_CHAINPARAMSSEEDS_H +#include +#include +#include /** * List of fixed seed nodes for the bitcoin network * @generated by contrib/seeds/generate-seeds.py @@ -122,4 +123,15 @@ {{0x20,0x01,0x0b,0xc8,0x18,0x28,0x13,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}, 18433}, {{0x26,0x01,0x06,0x02,0x8d,0x80,0x0b,0x63,0xdc,0x6d,0x61,0xff,0xfe,0x9f,0x7f,0x29}, 18333} }; -#endif // BITCOIN_CHAINPARAMSSEEDS_H +std::vector FixedSeedsList(const std::string &chain) { + if (chain == CBaseChainParams::MAIN) { + return std::vector( + pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main)); + } + if (chain == CBaseChainParams::TESTNET) { + return std::vector( + pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test)); + } + throw std::runtime_error( + strprintf("%s: Unknown or unsupported chain %s.", __func__, chain)); +}