diff --git a/src/init.cpp b/src/init.cpp index a84ced95..31051138 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -273,7 +273,8 @@ std::string HelpMessage() strUsage += " -checklevel= " + _("How thorough the block verification is (0-6, default: 1)") + "\n"; strUsage += " -loadblock= " + _("Imports blocks from external blk000?.dat file") + "\n"; strUsage += " -maxorphanblocks= " + strprintf(_("Keep at most unconnectable blocks in memory (default: %u)"), DEFAULT_MAX_ORPHAN_BLOCKS) + "\n"; - strUsage += " -backtoblock= " + _("Rollback local block chain to block height ") + "\n"; + strUsage += " -backtoblock= " + _("Rollback local block chain to block height ") + "\n"; + strUsage += " -maxblockheight= " + _("Stop sync when block height reaches ") + "\n"; strUsage += "\n" + _("Block creation options:") + "\n"; strUsage += " -blockminsize= " + _("Set minimum block size in bytes (default: 0)") + "\n"; @@ -466,9 +467,6 @@ bool AppInit2(boost::thread_group& threadGroup) // Check for -debugnet (deprecated) if (GetBoolArg("-debugnet", false)) InitWarning(_("Warning: Deprecated argument -debugnet ignored, use -debug=net")); - // Check for -socks - as this is a privacy risk to continue, exit here - if (mapArgs.count("-socks")) - return InitError(_("Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported.")); if (fDaemon) fServer = true; else @@ -797,14 +795,7 @@ bool AppInit2(boost::thread_group& threadGroup) // ********************************************************* Step 7: load blockchain - if (GetBoolArg("-loadblockindextest", false)) - { - CTxDB txdb("r"); - txdb.LoadBlockIndex(); - PrintBlockTree(); - return false; - } - + maxBlockHeight = GetArg("-maxblockheight", -1); uiInterface.InitMessage(_("Loading block index...")); nStart = GetTimeMillis(); diff --git a/src/main.cpp b/src/main.cpp index c7e86f6d..3bbeb0cb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3017,7 +3017,6 @@ void Misbehaving(NodeId pnode, int howmuch) bool ProcessBlock(CNode* pfrom, CBlock* pblock) { AssertLockHeld(cs_main); - // Check for duplicate uint256 hash = pblock->GetHash(); if (mapBlockIndex.count(hash)) @@ -3766,6 +3765,10 @@ void static ProcessGetData(CNode* pfrom) bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) { + // this is a snapshot node. will only sync until certain block + if (maxBlockHeight != -1 && pindexBest->nHeight >= maxBlockHeight) { + return; + } RandAddSeedPerfmon(); LogPrint("net", "received: %s (%u bytes)\n", strCommand, vRecv.size()); if (mapArgs.count("-dropmessagestest") && GetRand(atoi(mapArgs["-dropmessagestest"])) == 0) diff --git a/src/masternodeman.cpp b/src/masternodeman.cpp index 99836f51..f4d0dc60 100644 --- a/src/masternodeman.cpp +++ b/src/masternodeman.cpp @@ -606,6 +606,10 @@ void CMasternodeMan::ProcessMasternodeConnections() void CMasternodeMan::ProcessMessage(CNode* pfrom, std::string& strCommand, CDataStream& vRecv) { + // this is a snapshot node. will only sync until certain block + if (maxBlockHeight != -1 && pindexBest->nHeight >= maxBlockHeight) { + return; + } //Normally would disable functionality, NEED this enabled for staking. //if(fLiteMode) return; diff --git a/src/util.cpp b/src/util.cpp index 6459e4e7..9acdde1e 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -114,6 +114,7 @@ string strRollbackToBlock = ""; int64_t nMasterNodeChecksDelayBaseTime = 0; //MasterNode peer IP advanced relay system toggle bool fMnAdvRelay = false; +int maxBlockHeight = -1; // Init OpenSSL library multithreading support static CCriticalSection** ppmutexOpenSSL; diff --git a/src/util.h b/src/util.h index d0441e77..6ff69b78 100644 --- a/src/util.h +++ b/src/util.h @@ -151,6 +151,8 @@ extern std::string strRollbackToBlock; extern int64_t nMasterNodeChecksDelayBaseTime; //MasterNode peer IP advanced relay system toggle extern bool fMnAdvRelay; +//will sync until this block height. default -1 which represents disabled +extern int maxBlockHeight; void RandAddSeed(); void RandAddSeedPerfmon();