Skip to content

Commit 70b320b

Browse files
nmarleyUdjinM6
authored andcommitted
Detect masternode mode from masternodeblsprivkey arg (#3188)
* Detect masternode mode from privkey arg The `masternode` argument seems redundant. This change enables masternode mode based on the presence (and validity) of the `masternodeblsprivkey` argument. * Deprecate -masternode option * Remove -masternode switch from functional tests * Move -masternode deprecate warning to better place
1 parent 1091ab3 commit 70b320b

File tree

3 files changed

+26
-29
lines changed

3 files changed

+26
-29
lines changed

src/init.cpp

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -600,8 +600,7 @@ std::string HelpMessage(HelpMessageMode mode)
600600
strUsage += HelpMessageOpt("-minsporkkeys=<n>", strprintf(_("Overrides minimum spork signers to change spork value. Only useful for regtest and devnet. Using this on mainnet or testnet will ban you.")));
601601

602602
strUsage += HelpMessageGroup(_("Masternode options:"));
603-
strUsage += HelpMessageOpt("-masternode", strprintf(_("Enable the client to act as a masternode (0-1, default: %u)"), 0));
604-
strUsage += HelpMessageOpt("-masternodeblsprivkey=<hex>", _("Set the masternode BLS private key"));
603+
strUsage += HelpMessageOpt("-masternodeblsprivkey=<hex>", _("Set the masternode BLS private key and enable the client to act as a masternode"));
605604

606605
#ifdef ENABLE_WALLET
607606
strUsage += HelpMessageGroup(_("PrivateSend options:"));
@@ -908,19 +907,19 @@ void InitParameterInteraction()
908907
LogPrintf("%s: parameter interaction: -whitebind set -> setting -listen=1\n", __func__);
909908
}
910909

911-
if (gArgs.GetBoolArg("-masternode", false)) {
910+
if (gArgs.IsArgSet("-masternodeblsprivkey")) {
912911
// masternodes MUST accept connections from outside
913912
gArgs.ForceSetArg("-listen", "1");
914-
LogPrintf("%s: parameter interaction: -masternode=1 -> setting -listen=1\n", __func__);
913+
LogPrintf("%s: parameter interaction: -masternodeblsprivkey=... -> setting -listen=1\n", __func__);
915914
#ifdef ENABLE_WALLET
916915
// masternode should not have wallet enabled
917916
gArgs.ForceSetArg("-disablewallet", "1");
918-
LogPrintf("%s: parameter interaction: -masternode=1 -> setting -disablewallet=1\n", __func__);
917+
LogPrintf("%s: parameter interaction: -masternodeblsprivkey=... -> setting -disablewallet=1\n", __func__);
919918
#endif // ENABLE_WALLET
920919
if (gArgs.GetArg("-maxconnections", DEFAULT_MAX_PEER_CONNECTIONS) < DEFAULT_MAX_PEER_CONNECTIONS) {
921920
// masternodes MUST be able to handle at least DEFAULT_MAX_PEER_CONNECTIONS connections
922921
gArgs.ForceSetArg("-maxconnections", itostr(DEFAULT_MAX_PEER_CONNECTIONS));
923-
LogPrintf("%s: parameter interaction: -masternode=1 -> setting -maxconnections=%d instead of specified -maxconnections=%d\n",
922+
LogPrintf("%s: parameter interaction: -masternodeblsprivkey=... -> setting -maxconnections=%d instead of specified -maxconnections=%d\n",
924923
__func__, DEFAULT_MAX_PEER_CONNECTIONS, gArgs.GetArg("-maxconnections", DEFAULT_MAX_PEER_CONNECTIONS));
925924
}
926925
}
@@ -1435,6 +1434,10 @@ bool AppInitParameterInteraction()
14351434
InitWarning("-maxorphantx is not supported anymore. Use -maxorphantxsize instead.");
14361435
}
14371436

1437+
if (gArgs.IsArgSet("-masternode")) {
1438+
InitWarning(_("-masternode option is deprecated and ignored, specifying -masternodeblsprivkey is enough to start this node as a masternode."));
1439+
}
1440+
14381441
return true;
14391442
}
14401443

@@ -1970,7 +1973,21 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
19701973
}
19711974

19721975
// ********************************************************* Step 10a: Prepare Masternode related stuff
1973-
fMasternodeMode = gArgs.GetBoolArg("-masternode", false);
1976+
fMasternodeMode = false;
1977+
std::string strMasterNodeBLSPrivKey = gArgs.GetArg("-masternodeblsprivkey", "");
1978+
if (!strMasterNodeBLSPrivKey.empty()) {
1979+
auto binKey = ParseHex(strMasterNodeBLSPrivKey);
1980+
CBLSSecretKey keyOperator;
1981+
keyOperator.SetBuf(binKey);
1982+
if (!keyOperator.IsValid()) {
1983+
return InitError(_("Invalid masternodeblsprivkey. Please see documentation."));
1984+
}
1985+
fMasternodeMode = true;
1986+
activeMasternodeInfo.blsKeyOperator = std::make_unique<CBLSSecretKey>(keyOperator);
1987+
activeMasternodeInfo.blsPubKeyOperator = std::make_unique<CBLSPublicKey>(activeMasternodeInfo.blsKeyOperator->GetPublicKey());
1988+
LogPrintf("MASTERNODE:\n");
1989+
LogPrintf(" blsPubKeyOperator: %s\n", keyOperator.GetPublicKey().ToString());
1990+
}
19741991

19751992
if(fLiteMode && fMasternodeMode) {
19761993
return InitError(_("You can not start a masternode in lite mode."));
@@ -1982,25 +1999,6 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
19821999
return InitError(_("You can not start a masternode with wallet enabled."));
19832000
}
19842001
#endif //ENABLE_WALLET
1985-
1986-
LogPrintf("MASTERNODE:\n");
1987-
1988-
std::string strMasterNodeBLSPrivKey = gArgs.GetArg("-masternodeblsprivkey", "");
1989-
if(!strMasterNodeBLSPrivKey.empty()) {
1990-
auto binKey = ParseHex(strMasterNodeBLSPrivKey);
1991-
CBLSSecretKey keyOperator;
1992-
keyOperator.SetBuf(binKey);
1993-
if (keyOperator.IsValid()) {
1994-
activeMasternodeInfo.blsKeyOperator = std::make_unique<CBLSSecretKey>(keyOperator);
1995-
activeMasternodeInfo.blsPubKeyOperator = std::make_unique<CBLSPublicKey>(activeMasternodeInfo.blsKeyOperator->GetPublicKey());
1996-
LogPrintf(" blsPubKeyOperator: %s\n", keyOperator.GetPublicKey().ToString());
1997-
} else {
1998-
return InitError(_("Invalid masternodeblsprivkey. Please see documentation."));
1999-
}
2000-
} else {
2001-
return InitError(_("You must specify a masternodeblsprivkey in the configuration. Please see documentation for help."));
2002-
}
2003-
20042002
// Create and register activeMasternodeManager, will init later in ThreadImport
20052003
activeMasternodeManager = new CActiveMasternodeManager();
20062004
RegisterValidationInterface(activeMasternodeManager);

test/functional/dip3-deterministicmns.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ def register_mn(self, node, mn):
260260
def start_mn(self, mn):
261261
while len(self.nodes) <= mn.idx:
262262
self.add_nodes(1)
263-
extra_args = ['-masternode=1', '-masternodeblsprivkey=%s' % mn.blsMnkey]
263+
extra_args = ['-masternodeblsprivkey=%s' % mn.blsMnkey]
264264
self.start_node(mn.idx, extra_args = self.extra_args + extra_args)
265265
force_finish_mnsync(self.nodes[mn.idx])
266266
for i in range(0, len(self.nodes)):

test/functional/test_framework/test_framework.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -574,8 +574,7 @@ def start_masternodes(self):
574574
executor = ThreadPoolExecutor(max_workers=20)
575575

576576
def do_start(idx):
577-
args = ['-masternode=1',
578-
'-masternodeblsprivkey=%s' % self.mninfo[idx].keyOperator] + self.extra_args
577+
args = ['-masternodeblsprivkey=%s' % self.mninfo[idx].keyOperator] + self.extra_args
579578
self.start_node(idx + start_idx, extra_args=args)
580579
self.mninfo[idx].nodeIdx = idx + start_idx
581580
self.mninfo[idx].node = self.nodes[idx + start_idx]

0 commit comments

Comments
 (0)