|
|
@ -5,7 +5,6 @@ |
|
|
|
|
|
|
|
|
|
|
|
#include "chainparams.h" |
|
|
|
#include "chainparams.h" |
|
|
|
|
|
|
|
|
|
|
|
#include "random.h" |
|
|
|
|
|
|
|
#include "util.h" |
|
|
|
#include "util.h" |
|
|
|
#include "utilstrencodings.h" |
|
|
|
#include "utilstrencodings.h" |
|
|
|
|
|
|
|
|
|
|
@ -15,35 +14,11 @@ |
|
|
|
|
|
|
|
|
|
|
|
using namespace std; |
|
|
|
using namespace std; |
|
|
|
|
|
|
|
|
|
|
|
struct SeedSpec6 { |
|
|
|
|
|
|
|
uint8_t addr[16]; |
|
|
|
|
|
|
|
uint16_t port; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "chainparamsseeds.h" |
|
|
|
#include "chainparamsseeds.h" |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Main network |
|
|
|
* Main network |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
//! Convert the pnSeeds6 array into usable address objects.
|
|
|
|
|
|
|
|
static void convertSeed6(std::vector<CAddress> &vSeedsOut, const SeedSpec6 *data, unsigned int count) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// It'll only connect to one or two seed nodes because once it connects,
|
|
|
|
|
|
|
|
// it'll get a pile of addresses with newer timestamps.
|
|
|
|
|
|
|
|
// Seed nodes are given a random 'last seen time' of between one and two
|
|
|
|
|
|
|
|
// weeks ago.
|
|
|
|
|
|
|
|
const int64_t nOneWeek = 7*24*60*60; |
|
|
|
|
|
|
|
for (unsigned int i = 0; i < count; i++) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
struct in6_addr ip; |
|
|
|
|
|
|
|
memcpy(&ip, data[i].addr, sizeof(ip)); |
|
|
|
|
|
|
|
CAddress addr(CService(ip, data[i].port)); |
|
|
|
|
|
|
|
addr.nTime = GetTime() - GetRand(nOneWeek) - nOneWeek; |
|
|
|
|
|
|
|
vSeedsOut.push_back(addr); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* What makes a good checkpoint block? |
|
|
|
* What makes a good checkpoint block? |
|
|
|
* + Is surrounded by blocks with reasonable timestamps |
|
|
|
* + Is surrounded by blocks with reasonable timestamps |
|
|
@ -164,7 +139,7 @@ public: |
|
|
|
base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x88)(0xB2)(0x1E).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x88)(0xB2)(0x1E).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x88)(0xAD)(0xE4).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x88)(0xAD)(0xE4).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
|
|
|
|
|
|
|
|
convertSeed6(vFixedSeeds, pnSeed6_main, ARRAYLEN(pnSeed6_main)); |
|
|
|
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main)); |
|
|
|
|
|
|
|
|
|
|
|
fRequireRPCPassword = true; |
|
|
|
fRequireRPCPassword = true; |
|
|
|
fMiningRequiresPeers = true; |
|
|
|
fMiningRequiresPeers = true; |
|
|
@ -220,7 +195,7 @@ public: |
|
|
|
base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x35)(0x87)(0xCF).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x35)(0x87)(0xCF).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x35)(0x83)(0x94).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x35)(0x83)(0x94).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
|
|
|
|
|
|
|
|
convertSeed6(vFixedSeeds, pnSeed6_test, ARRAYLEN(pnSeed6_test)); |
|
|
|
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test)); |
|
|
|
|
|
|
|
|
|
|
|
fRequireRPCPassword = true; |
|
|
|
fRequireRPCPassword = true; |
|
|
|
fMiningRequiresPeers = true; |
|
|
|
fMiningRequiresPeers = true; |
|
|
|