mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 12:32:48 +01:00
Masternodes must have required services enabled (#3350)
* Masternodes must have required services enabled * Add a comment about missing bits * Refactor *InitParameterInteraction parts to follow surrounding code logic Changes: - move all related param interactions to appropriate places; - try to softly set required params, complain and fail to start later if smth is not ok. * Drop redundant code
This commit is contained in:
parent
c6911354a1
commit
c9881d0fc7
@ -67,6 +67,13 @@ void CMNAuth::ProcessMessage(CNode* pnode, const std::string& strCommand, CDataS
|
||||
return;
|
||||
}
|
||||
|
||||
if ((~pnode->nServices) & (NODE_NETWORK | NODE_BLOOM)) {
|
||||
// either NODE_NETWORK or NODE_BLOOM bit is missiing in node's services
|
||||
LOCK(cs_main);
|
||||
Misbehaving(pnode->GetId(), 100, "mnauth from a node with invalid services");
|
||||
return;
|
||||
}
|
||||
|
||||
if (mnauth.proRegTxHash.IsNull()) {
|
||||
LOCK(cs_main);
|
||||
Misbehaving(pnode->GetId(), 100, "empty mnauth proRegTxHash");
|
||||
|
47
src/init.cpp
47
src/init.cpp
@ -902,23 +902,6 @@ void InitParameterInteraction()
|
||||
LogPrintf("%s: parameter interaction: -whitebind set -> setting -listen=1\n", __func__);
|
||||
}
|
||||
|
||||
if (gArgs.IsArgSet("-masternodeblsprivkey")) {
|
||||
// masternodes MUST accept connections from outside
|
||||
gArgs.ForceSetArg("-listen", "1");
|
||||
LogPrintf("%s: parameter interaction: -masternodeblsprivkey=... -> setting -listen=1\n", __func__);
|
||||
#ifdef ENABLE_WALLET
|
||||
// masternode should not have wallet enabled
|
||||
gArgs.ForceSetArg("-disablewallet", "1");
|
||||
LogPrintf("%s: parameter interaction: -masternodeblsprivkey=... -> setting -disablewallet=1\n", __func__);
|
||||
#endif // ENABLE_WALLET
|
||||
if (gArgs.GetArg("-maxconnections", DEFAULT_MAX_PEER_CONNECTIONS) < DEFAULT_MAX_PEER_CONNECTIONS) {
|
||||
// masternodes MUST be able to handle at least DEFAULT_MAX_PEER_CONNECTIONS connections
|
||||
gArgs.ForceSetArg("-maxconnections", itostr(DEFAULT_MAX_PEER_CONNECTIONS));
|
||||
LogPrintf("%s: parameter interaction: -masternodeblsprivkey=... -> setting -maxconnections=%d instead of specified -maxconnections=%d\n",
|
||||
__func__, DEFAULT_MAX_PEER_CONNECTIONS, gArgs.GetArg("-maxconnections", DEFAULT_MAX_PEER_CONNECTIONS));
|
||||
}
|
||||
}
|
||||
|
||||
if (gArgs.IsArgSet("-connect")) {
|
||||
// when only connecting to trusted nodes, do not seed via DNS, or listen by default
|
||||
if (gArgs.SoftSetBoolArg("-dnsseed", false))
|
||||
@ -1458,6 +1441,27 @@ bool AppInitParameterInteraction()
|
||||
InitWarning(_("-masternode option is deprecated and ignored, specifying -masternodeblsprivkey is enough to start this node as a masternode."));
|
||||
}
|
||||
|
||||
if (gArgs.IsArgSet("-masternodeblsprivkey")) {
|
||||
if (!gArgs.GetBoolArg("-listen", DEFAULT_LISTEN)) {
|
||||
return InitError("Masternode must accept connections from outside, set -listen=1");
|
||||
}
|
||||
if (!gArgs.GetBoolArg("-txindex", DEFAULT_TXINDEX)) {
|
||||
return InitError("Masternode must have transaction index enabled, set -txindex=1");
|
||||
}
|
||||
if (!gArgs.GetBoolArg("-peerbloomfilters", DEFAULT_PEERBLOOMFILTERS)) {
|
||||
return InitError("Masternode must have bloom filters enabled, set -peerbloomfilters=1");
|
||||
}
|
||||
if (gArgs.GetArg("-prune", 0) > 0) {
|
||||
return InitError("Masternode must have no pruning enabled, set -prune=0");
|
||||
}
|
||||
if (gArgs.GetArg("-maxconnections", DEFAULT_MAX_PEER_CONNECTIONS) < DEFAULT_MAX_PEER_CONNECTIONS) {
|
||||
return InitError(strprintf("Masternode must be able to handle at least %d connections, set -maxconnections=%d", DEFAULT_MAX_PEER_CONNECTIONS, DEFAULT_MAX_PEER_CONNECTIONS));
|
||||
}
|
||||
if (gArgs.GetBoolArg("-litemode", false)) {
|
||||
return InitError(_("You can not start a masternode in lite mode."));
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2043,16 +2047,7 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
|
||||
LogPrintf(" blsPubKeyOperator: %s\n", keyOperator.GetPublicKey().ToString());
|
||||
}
|
||||
|
||||
if(fLiteMode && fMasternodeMode) {
|
||||
return InitError(_("You can not start a masternode in lite mode."));
|
||||
}
|
||||
|
||||
if(fMasternodeMode) {
|
||||
#ifdef ENABLE_WALLET
|
||||
if (!vpwallets.empty()) {
|
||||
return InitError(_("You can not start a masternode with wallet enabled."));
|
||||
}
|
||||
#endif //ENABLE_WALLET
|
||||
// Create and register activeMasternodeManager, will init later in ThreadImport
|
||||
activeMasternodeManager = new CActiveMasternodeManager();
|
||||
RegisterValidationInterface(activeMasternodeManager);
|
||||
|
@ -66,12 +66,18 @@ std::string GetWalletHelpString(bool showDebug)
|
||||
|
||||
bool WalletParameterInteraction()
|
||||
{
|
||||
if (gArgs.IsArgSet("-masternodeblsprivkey") && gArgs.SoftSetBoolArg("-disablewallet", true)) {
|
||||
LogPrintf("%s: parameter interaction: -masternodeblsprivkey set -> setting -disablewallet=1\n", __func__);
|
||||
}
|
||||
|
||||
if (gArgs.GetBoolArg("-disablewallet", DEFAULT_DISABLE_WALLET)) {
|
||||
for (const std::string& wallet : gArgs.GetArgs("-wallet")) {
|
||||
LogPrintf("%s: parameter interaction: -disablewallet -> ignoring -wallet=%s\n", __func__, wallet);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else if (gArgs.IsArgSet("-masternodeblsprivkey")) {
|
||||
return InitError(_("You can not start a masternode with wallet enabled."));
|
||||
}
|
||||
|
||||
gArgs.SoftSetArg("-wallet", DEFAULT_WALLET_DAT);
|
||||
|
Loading…
Reference in New Issue
Block a user