From 7830c17c2c419f158c4296f7bfe9e1e4556b6b37 Mon Sep 17 00:00:00 2001 From: random-zebra Date: Thu, 9 Apr 2020 17:49:27 +0200 Subject: [PATCH] [BUG] Prevent StartAll from starting mns with immature collateral --- src/qt/pivx/masternodeswidget.cpp | 8 +++++++- src/qt/pivx/mnmodel.cpp | 7 +++++++ src/qt/pivx/mnmodel.h | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/qt/pivx/masternodeswidget.cpp b/src/qt/pivx/masternodeswidget.cpp index ab9dc1dd5b6ab..77b3ef878b20a 100644 --- a/src/qt/pivx/masternodeswidget.cpp +++ b/src/qt/pivx/masternodeswidget.cpp @@ -269,7 +269,8 @@ void MasterNodesWidget::onStartAllClicked(int type) inform(tr("Cannot perform Mastenodes start, wallet locked")); return; } - if (!checkMNsNetwork()) return; + if (!Params().IsRegTestNet() && !checkMNsNetwork()) return; // skip on RegNet: so we can test even if tier two not synced + if (isLoading) { inform(tr("Background task is being executed, please wait")); } else { @@ -294,6 +295,11 @@ bool MasterNodesWidget::startAll(QString& failText, bool onlyMissing) continue; } + if(!mnModel->isMNCollateralMature(mnAlias)) { + amountOfMnFailed++; + continue; + } + std::string strError; if (!startMN(mne, strError)) { amountOfMnFailed++; diff --git a/src/qt/pivx/mnmodel.cpp b/src/qt/pivx/mnmodel.cpp index bfd4d6ed1f553..cd442249814bb 100644 --- a/src/qt/pivx/mnmodel.cpp +++ b/src/qt/pivx/mnmodel.cpp @@ -174,6 +174,13 @@ bool MNModel::isMNActive(QString mnAlias) return activeState == CMasternode::MASTERNODE_PRE_ENABLED || activeState == CMasternode::MASTERNODE_ENABLED; } +bool MNModel::isMNCollateralMature(QString mnAlias) +{ + QMap>::const_iterator it = nodes.find(mnAlias); + if (it != nodes.end()) return collateralTxAccepted.value(it.value().second->vin.prevout.hash.GetHex()); + throw std::runtime_error(std::string("Masternode alias not found")); +} + bool MNModel::isMNsNetworkSynced() { return masternodeSync.IsSynced(); diff --git a/src/qt/pivx/mnmodel.h b/src/qt/pivx/mnmodel.h index fed2383b3011a..fe3ad496a18b3 100644 --- a/src/qt/pivx/mnmodel.h +++ b/src/qt/pivx/mnmodel.h @@ -49,6 +49,8 @@ class MNModel : public QAbstractTableModel bool isMNInactive(QString mnAlias); // Masternode is active if it's in PRE_ENABLED OR ENABLED state bool isMNActive(QString mnAlias); + // Masternode collateral has enough confirmations + bool isMNCollateralMature(QString mnAlias); private: