From a1f272a205820e3d18bc7823eede47f140a8297c Mon Sep 17 00:00:00 2001 From: MasterDoge-dev Date: Wed, 22 Jul 2015 21:32:24 +0400 Subject: [PATCH] 1-click masternode --- src/chainparams.cpp | 4 +- src/chainparamsseeds.h | 250 +++++++++++++++++++++++++++++- src/init.cpp | 24 ++- src/qt/forms/masternodemanager.ui | 14 +- src/qt/masternodemanager.cpp | 181 +++++++++++++++++++-- src/qt/masternodemanager.h | 5 +- src/walletdb.cpp | 2 + src/walletdb.h | 2 + 8 files changed, 462 insertions(+), 20 deletions(-) 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); ) };