diff --git a/src/chainparams.cpp b/src/chainparams.cpp
index 569effe..e41fc78 100644
--- a/src/chainparams.cpp
+++ b/src/chainparams.cpp
@@ -56,8 +56,8 @@ class CMainParams : public CChainParams {
vAlertPubKey = ParseHex("04bd92e9f7ec8b3c48ebb27b743ff19cc131b06b18dcac8663d75ee0cc55878057ce9989dd1c82ba13b5277c0d058dd3241ebdeefab91f38300bda1cf8fabf3ad2");
- nDefaultPort = 76007;
- nRPCPort = 76008;
+ nDefaultPort = 2589;
+ nRPCPort = 2588;
bnProofOfWorkLimit = CBigNum(~uint256(0) >> 20);
const char* pszTimestamp = "MasterDoge FIXED";
diff --git a/src/chainparamsseeds.h b/src/chainparamsseeds.h
index 7e04321..c3ad6e0 100644
--- a/src/chainparamsseeds.h
+++ b/src/chainparamsseeds.h
@@ -6,8 +6,254 @@
// Each line contains a 16-byte IPv6 address and a port.
// IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.
static SeedSpec6 pnSeed6_main[] = {
- {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x05,0x87,0x68,0x42}, 26007}
-
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x64,0x02,0xb3,0x8d}, 9997},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x64,0xf3,0x75,0x92}, 3336},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x65,0x0e,0xb8,0x36}, 1043},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x65,0x36,0x8c,0x90}, 9346},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0x71,0x0e,0x4f}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0x83,0xa0,0x77}, 34267},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0x83,0xa0,0x77}, 49673},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0x83,0xa0,0x77}, 55900},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0xee,0x98,0x63}, 10471},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0xee,0x98,0x63}, 49331},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0xee,0x98,0x63}, 51437},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0xee,0x98,0x63}, 55807},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0xee,0x98,0x63}, 56909},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0xee,0x98,0x63}, 58688},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0x34,0x27,0x93}, 2226},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x68,0x43,0x17,0x9a}, 9998},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x69,0x74,0xac,0x90}, 8007},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x69,0x5f,0x66,0xca}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6a,0x2d,0x87,0xce}, 1041},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6b,0x53,0xb2,0xaa}, 3301},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0xa6,0xb4,0x38}, 2223},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0xde,0xfe,0xd4}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0xe7,0x58,0x65}, 56088},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x67,0xe0}, 36673},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10471},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10472},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10473},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10474},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10475},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10476},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10477},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10478},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10479},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 10480},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45628},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45629},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45630},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45631},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45632},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45633},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45635},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45636},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45637},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x3d,0x63,0xcd}, 45638},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6c,0x5b,0x4d,0x89}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x6e,0x62,0x6b,0xfc}, 8002},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x70,0x7e,0x41,0xa4}, 52658},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x70,0x7e,0x41,0xa4}, 59407},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x70,0x7e,0x41,0xa4}, 62312},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x71,0xb3,0xa6,0x3b}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x75,0x8f,0x7b,0xbf}, 9996},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x78,0x27,0x77,0xfc}, 1316},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x78,0x35,0x6c,0x44}, 9347},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x79,0x73,0x51,0x0b}, 9995},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x7b,0x3f,0xf8,0x6e}, 51323},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x7c,0xf1,0x82,0x79}, 7909},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x7e,0x21,0x9d,0x2f}, 9348},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x7f,0x00,0x00,0x01}, 10100},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x7f,0x00,0x00,0x01}, 11221},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x7f,0x00,0x00,0x01}, 22112},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x83,0xd0,0xb4,0x96}, 9917},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x84,0xf8,0xd3,0xe4}, 1047},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x89,0xb5,0xda,0x8d}, 9992},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x89,0x5c,0xdb,0x0e}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0e,0xd0,0x9b,0xd9}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0e,0x26,0x48,0xda}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x8c,0x02,0xc3,0x06}, 8881},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x8e,0xa5,0x2b,0x2a}, 9911},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x8e,0x4a,0x74,0x30}, 9914},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x90,0x2d,0x0d,0xa9}, 6667},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x95,0x06,0xb4,0x47}, 4444},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x97,0xd1,0xd0,0xd9}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x99,0x74,0x43,0xd0}, 7907},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xa9,0x8a,0xc4}, 9993},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x9a,0xb9,0xae,0xea}, 6662},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa0,0x92,0xf1,0x71}, 6663},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa0,0x5d,0xb4,0x72}, 9996},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa2,0x01,0x2d,0xf3}, 7905},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa2,0x3a,0x2c,0x06}, 9994},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa4,0x4f,0xcb,0x67}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa5,0x8c,0xbd,0x0a}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa7,0x72,0x0d,0x8c}, 10471},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa7,0x87,0x4f,0x75}, 8889},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xa7,0x29,0xa2,0x0c}, 9915},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xaa,0x80,0x34,0x3a}, 9918},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xab,0xde,0x2e,0x53}, 8003},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xac,0x9b,0x02,0xdc}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb0,0x96,0x4b,0xb9}, 9993},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb1,0xfc,0xc4,0xa9}, 7903},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb5,0x35,0x76,0x11}, 7906},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb6,0xbc,0x13,0x8c}, 2224},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb6,0xe8,0xe8,0xf7}, 9341},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb8,0xbc,0xbf,0xd6}, 64801},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xb8,0xf3,0x5b,0xbd}, 1048},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xbc,0x68,0x08,0x94}, 59302},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xbc,0x68,0x08,0x94}, 59312},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xbf,0xc9,0xf2,0xb2}, 2227},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc0,0x9f,0xb5,0x96}, 2221},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc0,0x4d,0x96,0xe6}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc0,0x63,0x20,0xbb}, 47687},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc2,0xcf,0x2b,0xc4}, 1049},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc3,0x9a,0xa2,0x8c}, 21616},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc4,0x6b,0x70,0xf9}, 6661},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc5,0x9a,0x18,0x60}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc6,0x90,0x69,0xf1}, 62184},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc6,0xf1,0xd3,0x0f}, 7908},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x02,0x55,0x10,0x6d}, 3308},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x14,0xd8,0xca,0x9c}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x14,0x53,0x6a,0x03}, 8001},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc8,0xe7,0x41,0x73}, 8006},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc9,0xc7,0xc5,0x2a}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xc9,0xdd,0xc5,0x94}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xca,0x4a,0xb3,0x5a}, 9994},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xcc,0x57,0x74,0x33}, 8888},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xcd,0xc0,0xf9,0x93}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xcd,0xed,0x8f,0x1b}, 49853},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xce,0x74,0x00,0x6d}, 3334},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xcf,0xcc,0x01,0xc4}, 8884},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd0,0x2c,0xef,0xd7}, 3338},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd1,0x07,0x4c,0x41}, 6668},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x15,0x46,0xae,0xfd}, 2225},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd2,0xd1,0x97,0xc6}, 8885},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd4,0x2d,0x39,0xb5}, 9998},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd8,0x49,0x98,0xa0}, 4446},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xd9,0x4d,0x5a,0xbb}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xda,0x4b,0xd2,0xa4}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xdc,0xa4,0xab,0x93}, 3332},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xdc,0xec,0xb2,0x46}, 9991},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xdd,0xc2,0xa7,0x6a}, 6666},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xe0,0xe5,0x9f,0x16}, 9991},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xe6,0x43,0x6e,0x43}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xe9,0x8c,0x74,0x68}, 2222},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xee,0xd9,0x7f,0x2a}, 3304},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xee,0x1c,0xf7,0x69}, 9913},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x18,0xa6,0x7f,0x1c}, 11091},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x18,0xa6,0x7f,0x1c}, 11179},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x18,0xa6,0x7f,0x1c}, 11759},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x18,0xa6,0x7f,0x1c}, 11779},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x18,0xa6,0x7f,0x1c}, 31321},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x18,0xa6,0x7f,0x1c}, 31405},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xf0,0xf1,0x9d,0x43}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xf2,0x65,0x18,0x40}, 3309},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xf2,0x85,0x18,0x24}, 9343},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xf3,0x06,0xd1,0xd1}, 9342},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xf7,0xd4,0xcd,0x58}, 3307},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xf7,0x5b,0xae,0x06}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xfb,0xa2,0x82,0x3c}, 7902},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xfd,0x8b,0xe9,0x56}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xfe,0x68,0xab,0x97}, 3337},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xfe,0xc1,0xd0,0xf7}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x03,0x9a,0x02,0xc1}, 3335},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x1e,0x7f,0xfd,0x4a}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x1e,0x21,0x0e,0x05}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x1f,0xd7,0x4c,0xab}, 2589},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x20,0xf5,0x2d,0x89}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x21,0xfc,0x61,0x21}, 1042},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x25,0xfb,0x03,0xe7}, 51990},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x25,0xfb,0x03,0xe7}, 52861},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x26,0xf6,0xd8,0x33}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x27,0xf6,0x33,0xaa}, 8005},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x27,0x5e,0x63,0x77}, 9919},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x04,0x79,0xef,0x4d}, 4441},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x29,0x99,0x39,0xce}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x29,0x3f,0xcc,0xf0}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2a,0xd2,0x78,0xaa}, 6669},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2a,0xf7,0xaf,0x66}, 6664},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2b,0x43,0xa7,0xda}, 9995},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2b,0x56,0x98,0xfe}, 9916},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2d,0x3f,0x6a,0xd1}, 64640},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2d,0x4a,0xdf,0x7c}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2e,0x65,0x06,0xc7}, 4445},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x2f,0x0c,0xf2,0x19}, 2228},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x30,0xc9,0xdf,0x79}, 9990},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x05,0x55,0xe6,0x40}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x32,0x1b,0x39,0x11}, 52311},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x32,0x1b,0x39,0x11}, 52326},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x32,0x1b,0x39,0x11}, 52331},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x33,0x68,0x80,0x59}, 2229},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x36,0xe4,0x3c,0x39}, 4449},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x36,0x30,0x49,0xb3}, 8882},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x37,0x53,0xaf,0x04}, 7900},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x39,0xa9,0x0f,0x9b}, 1044},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x3b,0x6c,0xae,0xb7}, 4447},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x3b,0xf5,0x43,0x53}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x3e,0xea,0x37,0x20}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x3f,0xf8,0xed,0xf4}, 4443},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x42,0x0c,0x1d,0xd8}, 9992},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x07,0xa6,0x42,0xde}, 3303},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x47,0x8a,0x1f,0x74}, 7901},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x47,0x2e,0xe0,0xa5}, 3305},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x49,0x8d,0xf4,0x40}, 9997},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4a,0xdd,0x4f,0x7f}, 7904},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4b,0x82,0xa3,0x33}, 49794},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4b,0x82,0xa3,0x33}, 61197},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4b,0x82,0xa3,0x33}, 61628},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4b,0x82,0xa3,0x33}, 9994},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4b,0x2a,0x92,0x74}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4c,0xa1,0xa0,0x7a}, 3302},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4f,0x6c,0x02,0xe3}, 58931},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4f,0x6c,0x02,0xe3}, 9912},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4f,0x6c,0x02,0xe3}, 9913},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4f,0x6c,0x02,0xe3}, 9914},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4f,0x7f,0xe6,0x4a}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x4f,0xfa,0x37,0xd1}, 63835},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x08,0x37,0xee,0x74}, 3331},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x50,0xb4,0xee,0xf1}, 9912},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x50,0xe6,0xe2,0x08}, 8883},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x50,0xf6,0x9c,0xa7}, 9344},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x51,0x0d,0x24,0x8e}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x51,0xb5,0x08,0x81}, 8008},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0x36,0xad,0x11}, 54831},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0x36,0xad,0x11}, 54834},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0x36,0xad,0x11}, 54835},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0x36,0xad,0x11}, 54836},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0x36,0xad,0x11}, 54837},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0x36,0xad,0x11}, 54838},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0x36,0xad,0x11}, 54840},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0x5a,0x95,0x39}, 10100},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x55,0xa9,0x89,0x54}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x55,0xaf,0xf2,0x0f}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x55,0x62,0x0d,0x47}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x57,0xaf,0xe9,0xa7}, 8887},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x57,0xd4,0xb9,0xcc}, 9345},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x58,0x3f,0xcb,0xf9}, 4442},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x09,0xcf,0x5f,0x34}, 8004},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5a,0x64,0xfd,0x32}, 8009},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5c,0x13,0xf2,0xc8}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5d,0xe8,0x51,0x40}, 51817},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0x13,0x99,0x94}, 3306},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0x2c,0x86,0xb7}, 4410},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0x31,0x31,0xf3}, 4448},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x5f,0x53,0x1f,0x3f}, 58702},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x60,0x9b,0xba,0x3d}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x61,0xbe,0x20,0x76}, 3333},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x62,0xbf,0x5f,0x45}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x62,0xc1,0x02,0x9a}, 10471},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x62,0xc1,0x02,0x9a}, 56993},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x62,0xc1,0x02,0x9a}, 59229},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x62,0x40,0x48,0x4c}, 6665},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x63,0x7c,0x48,0xb8}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x63,0x80,0x67,0x3e}, 9999},
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x63,0xdf,0x4d,0x40}, 3339},
+ {{0x2a,0x01,0x0e,0x35,0x2e,0xb5,0x98,0xb0,0x59,0xbd,0x05,0x68,0x49,0x61,0xd4,0x8a}, 15714},
+ {{0x20,0x01,0x41,0xd0,0x00,0x52,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc5}, 15714},
+ {{0x26,0x07,0x53,0x00,0x00,0x60,0x44,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}, 15714},
+ {{0x26,0x07,0x53,0x00,0x00,0x60,0x46,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 15714},
+ {{0x26,0x07,0x53,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xa8}, 15714},
+ {{0x26,0x10,0x01,0xc0,0x00,0x00,0x00,0x06,0x02,0x1e,0xc9,0xff,0xfe,0xdd,0xea,0x1b}, 15714}
};
static SeedSpec6 pnSeed6_test[] = {
diff --git a/src/init.cpp b/src/init.cpp
index 51d8c5b..3e34b15 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1005,11 +1005,33 @@ bool AppInit2(boost::thread_group& threadGroup)
if (fServer)
StartRPCThreads();
+
+BOOST_FOREACH(PAIRTYPE(std::string, CMNodeConfig) node, pwalletMain->mapMyMNodes)
+{
+ CMNodeConfig c = node.second;
+ if(c.isLocal)
+ {
+ strMasterNodeAddr = c.sAddress;
+ strMasterNodePrivKey = c.sMasternodePrivKey;
+
+ CKey keyds;
+ CPubKey pubkeyds;
+ std::string errorMessage;
+ if(!darkSendSigner.SetKey(strMasterNodePrivKey, errorMessage, keyds, pubkeyds))
+ {
+ return InitError("Invalid masternodeprivkey. Please see documenation.");
+ }
+
+ activeMasternode.pubKeyMasternode = pubkeyds;
+ fMasterNode = true;
+ break;
+ }
+}
#ifdef ENABLE_WALLET
// Mine proof-of-stake blocks in the background
if (!GetBoolArg("-staking", true))
LogPrintf("Staking disabled\n");
- else if (pwalletMain)
+ else if (pwalletMain && !fMasterNode)
threadGroup.create_thread(boost::bind(&ThreadStakeMiner, pwalletMain));
#endif
diff --git a/src/qt/forms/masternodemanager.ui b/src/qt/forms/masternodemanager.ui
index 2d21686..f99d6c3 100644
--- a/src/qt/forms/masternodemanager.ui
+++ b/src/qt/forms/masternodemanager.ui
@@ -34,7 +34,7 @@
-
- 0
+ 1
@@ -142,6 +142,13 @@
+ -
+
+
+ Create &Local
+
+
+
-
@@ -196,6 +203,11 @@
Status
+
+
+ Local
+
+
Collateral Address
diff --git a/src/qt/masternodemanager.cpp b/src/qt/masternodemanager.cpp
index 7367059..19a663a 100644
--- a/src/qt/masternodemanager.cpp
+++ b/src/qt/masternodemanager.cpp
@@ -13,7 +13,7 @@
#include "wallet.h"
#include "init.h"
#include "guiutil.h"
-
+#include "net.h"
#include
#include
#include
@@ -48,11 +48,11 @@ MasternodeManager::MasternodeManager(QWidget *parent) :
connect(timer, SIGNAL(timeout()), this, SLOT(updateNodeList()));
timer->start(30000);
- LOCK(cs_pcnodes);
- BOOST_FOREACH(PAIRTYPE(std::string, CMNodeConfig) node, pwalletMain->mapMyMNodes)
- {
- updateMNode(QString::fromStdString(node.second.sAlias), QString::fromStdString(node.second.sAddress), QString::fromStdString(node.second.sMasternodePrivKey), QString::fromStdString(node.second.sCollateralAddress));
- }
+
+
+
+
+
updateNodeList();
}
@@ -69,12 +69,16 @@ static void NotifyMNodeUpdated(MasternodeManager *page, CMNodeConfig nodeConfig)
QString addr = QString::fromStdString(nodeConfig.sAddress);
QString privkey = QString::fromStdString(nodeConfig.sMasternodePrivKey);
QString collateral = QString::fromStdString(nodeConfig.sCollateralAddress);
+ QString local = "No";
+ if(nodeConfig.isLocal)
+ local = "Yes";
QMetaObject::invokeMethod(page, "updateMNode", Qt::QueuedConnection,
Q_ARG(QString, alias),
Q_ARG(QString, addr),
Q_ARG(QString, privkey),
- Q_ARG(QString, collateral)
+ Q_ARG(QString, collateral),
+ Q_ARG(QString, local)
);
}
@@ -102,9 +106,9 @@ void MasternodeManager::on_tableWidget_2_itemSelectionChanged()
}
}
-void MasternodeManager::updateMNode(QString alias, QString addr, QString privkey, QString collateral)
+void MasternodeManager::updateMNode(QString alias, QString addr, QString privkey, QString collateral, QString local)
{
- LOCK(cs_pcnodes);
+ LOCK(cs_node);
bool bFound = false;
int nodeRow = 0;
for(int i=0; i < ui->tableWidget_2->rowCount(); i++)
@@ -124,11 +128,13 @@ void MasternodeManager::updateMNode(QString alias, QString addr, QString privkey
QTableWidgetItem *addrItem = new QTableWidgetItem(addr);
QTableWidgetItem *statusItem = new QTableWidgetItem("");
QTableWidgetItem *collateralItem = new QTableWidgetItem(collateral);
+ QTableWidgetItem *localItem = new QTableWidgetItem(local);
ui->tableWidget_2->setItem(nodeRow, 0, aliasItem);
ui->tableWidget_2->setItem(nodeRow, 1, addrItem);
ui->tableWidget_2->setItem(nodeRow, 2, statusItem);
- ui->tableWidget_2->setItem(nodeRow, 3, collateralItem);
+ ui->tableWidget_2->setItem(nodeRow, 3, localItem);
+ ui->tableWidget_2->setItem(nodeRow, 4, collateralItem);
}
static QString seconds_to_DHMS(quint32 duration)
@@ -185,8 +191,19 @@ void MasternodeManager::updateNodeList()
}
ui->countLabel->setText(QString::number(ui->tableWidget->rowCount()));
-}
+ if(pwalletMain)
+ {
+ LOCK(cs_node);
+ BOOST_FOREACH(PAIRTYPE(std::string, CMNodeConfig) node, pwalletMain->mapMyMNodes)
+ {
+ QString local = "No";
+ if(node.second.isLocal)
+ local = "Yes";
+ updateMNode(QString::fromStdString(node.second.sAlias), QString::fromStdString(node.second.sAddress), QString::fromStdString(node.second.sMasternodePrivKey), QString::fromStdString(node.second.sCollateralAddress), local);
+ }
+ }
+}
void MasternodeManager::setClientModel(ClientModel *model)
{
@@ -279,11 +296,151 @@ void MasternodeManager::on_removeButton_clicked()
ui->tableWidget_2->setRowCount(0);
BOOST_FOREACH(PAIRTYPE(std::string, CMNodeConfig) node, pwalletMain->mapMyMNodes)
{
- updateMNode(QString::fromStdString(node.second.sAlias), QString::fromStdString(node.second.sAddress), QString::fromStdString(node.second.sMasternodePrivKey), QString::fromStdString(node.second.sCollateralAddress));
+ QString local = "No";
+ if(node.second.isLocal)
+ local = "Yes";
+ updateMNode(QString::fromStdString(node.second.sAlias), QString::fromStdString(node.second.sAddress), QString::fromStdString(node.second.sMasternodePrivKey), QString::fromStdString(node.second.sCollateralAddress), local);
}
}
}
+void MasternodeManager::on_localButton_clicked()
+{
+ bool bAlreadyHaveLocalTree = false;
+ // Check if a local masternode already exists
+ BOOST_FOREACH(PAIRTYPE(std::string, CMNodeConfig) node, pwalletMain->mapMyMNodes)
+ {
+ if(node.second.isLocal)
+ {
+ bAlreadyHaveLocalTree = true;
+ break;
+ }
+ }
+ if(bAlreadyHaveLocalTree)
+ {
+ QMessageBox msg;
+ msg.setText("A local masternode already exists.");
+ msg.exec();
+ return;
+ }
+
+ // Only create once the external IP is known
+ if(GetLocalAddress(NULL).ToStringIP() == "0.0.0.0")
+ {
+ QMessageBox msg;
+ msg.setText("The local external IP is not yet detected. Please try again in a few minutes.");
+ msg.exec();
+ return;
+ }
+
+ if(pwalletMain->GetBalance() < 20000.1*COIN)
+ {
+ QMessageBox msg;
+ msg.setText("You must have at least 20000.1 MDOGE to cover the 20000 MDOGE collateral for a Masternode and the tx fee.");
+ msg.exec();
+ return;
+ }
+
+ if (pwalletMain->IsLocked())
+ {
+ QMessageBox msg;
+ msg.setText("Your wallet must be unlocked so that the 20000 MDOGE collateral can be sent.");
+ msg.exec();
+ return;
+ }
+
+ // Automatically create an entry for the local address
+ CMNodeConfig c;
+ c.sAlias = "Local Masternode";
+ c.sAddress = GetLocalAddress(NULL).ToStringIPPort();
+ CKey secret;
+ secret.MakeNewKey(false);
+ c.sMasternodePrivKey = CBitcoinSecret(secret).ToString();
+
+ CWalletDB walletdb(pwalletMain->strWalletFile);
+ CAccount account;
+ walletdb.ReadAccount(c.sAlias, account);
+ bool bKeyUsed = false;
+ bool bForceNew = false;
+
+ // Check if the current key has been used
+ if (account.vchPubKey.IsValid())
+ {
+ CScript scriptPubKey;
+ scriptPubKey.SetDestination(account.vchPubKey.GetID());
+ for (map::iterator it = pwalletMain->mapWallet.begin();
+ it != pwalletMain->mapWallet.end() && account.vchPubKey.IsValid();
+ ++it)
+ {
+ const CWalletTx& wtx = (*it).second;
+ BOOST_FOREACH(const CTxOut& txout, wtx.vout)
+ if (txout.scriptPubKey == scriptPubKey)
+ bKeyUsed = true;
+ }
+ }
+
+ // Generate a new key
+ if (!account.vchPubKey.IsValid() || bForceNew || bKeyUsed)
+
+ {
+ if (!pwalletMain->GetKeyFromPool(account.vchPubKey))
+ {
+ QMessageBox msg;
+ msg.setText("Keypool ran out, please call keypoolrefill first.");
+ msg.exec();
+ return;
+ }
+ pwalletMain->SetAddressBookName(account.vchPubKey.GetID(), c.sAlias);
+ walletdb.WriteAccount(c.sAlias, account);
+
+ }
+
+ c.sCollateralAddress = CBitcoinAddress(account.vchPubKey.GetID()).ToString();
+
+ c.isLocal = true;
+
+ pwalletMain->mapMyMNodes.insert(make_pair(c.sAddress, c));
+ walletdb.WriteMNodeConfig(c.sAddress, c);
+ uiInterface.NotifyMNodeChanged(c);
+
+ strMasterNodeAddr = c.sAddress;
+ strMasterNodePrivKey = c.sMasternodePrivKey;
+
+ CKey keyds;
+ CPubKey pubkeyds;
+ std::string errorMessage;
+ if(!darkSendSigner.SetKey(strMasterNodePrivKey, errorMessage, keyds, pubkeyds))
+ {
+ QMessageBox msg;
+ msg.setText("Invalid masternodeprivkey. Please see documenation.");
+ msg.exec();
+ return;
+ }
+
+ activeMasternode.pubKeyMasternode = pubkeyds;
+ fMasterNode = true;
+
+ CWalletTx wtx;
+ std::string sNarr;
+
+ string strError = pwalletMain->SendMoneyToDestination(CBitcoinAddress(account.vchPubKey.GetID()).Get(), 20000*COIN, sNarr, wtx);
+ if (strError != "")
+ {
+ QMessageBox msg;
+ msg.setText(QString::fromStdString(strError));
+ msg.exec();
+ return;
+ }
+ else
+ {
+ QMessageBox msg;
+ std::string sMsg = "Local Masternode created and 20000 MDOGE sent to the collateral address. Transaction hash:\n";
+ sMsg += wtx.GetHash().GetHex();
+ msg.setText(QString::fromStdString(sMsg));
+ msg.exec();
+ return;
+ }
+}
void MasternodeManager::on_startButton_clicked()
{
// start the node
diff --git a/src/qt/masternodemanager.h b/src/qt/masternodemanager.h
index f5f5521..5f31737 100644
--- a/src/qt/masternodemanager.h
+++ b/src/qt/masternodemanager.h
@@ -32,7 +32,7 @@ class MasternodeManager : public QWidget
public slots:
void updateNodeList();
- void updateMNode(QString alias, QString addr, QString privkey, QString collateral);
+ void updateMNode(QString alias, QString addr, QString privkey, QString collateral, QString local);
signals:
@@ -41,7 +41,7 @@ public slots:
Ui::MasternodeManager *ui;
ClientModel *clientModel;
WalletModel *walletModel;
- CCriticalSection cs_pcnodes;
+ CCriticalSection cs_node;
void subscribeToCoreSignals();
void unsubscribeFromCoreSignals();
@@ -50,6 +50,7 @@ private slots:
void on_createButton_clicked();
void on_editButton_clicked();
void on_getConfigButton_clicked();
+ void on_localButton_clicked();
void on_startButton_clicked();
void on_stopButton_clicked();
void on_startAllButton_clicked();
diff --git a/src/walletdb.cpp b/src/walletdb.cpp
index d9d452e..9940c1e 100644
--- a/src/walletdb.cpp
+++ b/src/walletdb.cpp
@@ -364,6 +364,7 @@ bool
ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
CWalletScanState &wss, string& strType, string& strErr)
{
+
try {
// Unserialize
// Taking advantage of the fact that pair serialization
@@ -624,6 +625,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
return true;
}
+
static bool IsKeyType(string strType)
{
return (strType== "key" || strType == "wkey" ||
diff --git a/src/walletdb.h b/src/walletdb.h
index 7c412f6..7646b63 100644
--- a/src/walletdb.h
+++ b/src/walletdb.h
@@ -98,6 +98,7 @@ class CMNodeConfig
std::string sAddress;
std::string sCollateralAddress;
std::string sMasternodePrivKey;
+ bool isLocal;
CMNodeConfig()
{
@@ -110,6 +111,7 @@ class CMNodeConfig
READWRITE(sAddress);
READWRITE(sCollateralAddress);
READWRITE(sMasternodePrivKey);
+ READWRITE(isLocal);
)
};